将预测器添加到随机森林分类器(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])
我正在尝试学习如何在 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])