【问题标题】:Adding Predictors to random forest classifier (Pandas, Python3,Sklearn)将预测器添加到随机森林分类器(Pandas、Python3、Sklearn)
【发布时间】:2015-07-26 18:18:15
【问题描述】:

我正在尝试通过调整此处找到的代码来学习如何在 Python 中使用随机森林生成器:http://blog.yhathq.com/posts/random-forests-in-python.html to a fake data set

我试图根据一个人的体重和身高来预测一个人是男性 (0) 还是女性 (1)

数据如下:

  Weight     Height     Gender
  150         60          1
  250         85          0
  175         75          0
  100         62          1
  90          58          1
  200         80          0
  ...         ...         ...
  165         66          0

现在我正在尝试将测试集分为男性和女性

代码如下:

from sklearn.ensemble import RandomForestClassifier
import pandas as pd
import numpy as np

xl = pd.ExcelFile(fakedata.xlsx')
df = xl.parse()
df.head()
df['is_train'] = np.random.uniform(0, 1, len(df)) <= .75
train, test = df[df['is_train']==True], df[df['is_train']==False]
features = df.columns[:2]
clf = RandomForestClassifier(n_jobs=2)
y, _ = pd.factorize(train['Gender'])
clf.fit(train[features], y)

我了解这段代码在这里完成了什么,但之后我遇到了问题:

preds = train['Gender'][clf.predict(test[features])]
print(pd.crosstab(test['Gender'], preds, rownames=['actual'], colnames=['preds']))

给我错误

ValueError: cannot reindex from a duplicate axis

我到底错过了什么?

【问题讨论】:

  • 请记住,有 2 个自变量(体重和身高),您的数据集不适合 RandomForest。我希望这只是一个可重复的小例子,而不是你的真正任务

标签: python-3.x pandas scikit-learn


【解决方案1】:

您不应该根据preds = train['Gender'][clf.predict(test[features])] 行中的预测进行索引。你的预测应该是

preds = clf.predict(test[features])

【讨论】:

    猜你喜欢
    • 2018-10-04
    • 2019-11-16
    • 2019-07-22
    • 2018-02-18
    • 2013-12-31
    • 2018-06-11
    • 2021-08-13
    • 2018-10-23
    • 2014-10-11
    相关资源
    最近更新 更多