【发布时间】: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