将预测器添加到随机森林分类器(Pandas、Python3、Sklearn)

Adding Predictors to random forest classifier (Pandas, Python3,Sklearn)

我正在尝试学习如何在 Python 中使用随机森林生成器,方法是将此处找到的代码改编为:http://blog.yhathq.com/posts/random-forests-in-python.html 到假数据集

我正在尝试根据体重和身高预测一个人是男性 (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

我到底错过了什么?

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

preds = clf.predict(test[features])