【发布时间】:2012-12-21 20:36:39
【问题描述】:
假设我有一个这样的数据集:
5.9;0.645;0.12;2;0.075;32;44;0.99547;3.57;0.71;10.2;5
6;0.31;0.47;3.6;0.067;18;42;0.99549;3.39;0.66;11;6
第 11 列表示特征(酸度、氯化物等),最后一列表示给予项目的等级(例如 5 或 6)
数据集是这样训练的:
target = [x[11] for x in dataset]
train = [x[0:11] for x in dataset]
rf = RandomForestClassifier(n_estimators=120, n_jobs=-1)
rf.fit(train, target)
predictions = rf.predict_proba(testdataset)
print predictions[0]
打印类似的东西
[ 0. 0.01666667 0.98333333 0. 0. 0. ]
现在,为什么它不输出单个分类,例如 5 或 6 评级?
文档说“输入样本的预测类别概率计算为森林中树木的平均预测类别概率”,我无法理解。
如果你使用
print rf.predict(testdataset[-1])
[ 6. 6. 6. 6. 6. 6. 6. 6. 6. 6. 6.]
它打印的内容更像您所期望的 - 至少看起来像评级 - 但我仍然不明白为什么每个功能都有一个预测,而不是一个考虑所有功能的单一预测?
【问题讨论】:
-
顺便说一句,数据来自这里的葡萄酒数据集:www3.dsi.uminho.pt/pcortez/wine
-
测试数据集的形状是什么?
标签: python machine-learning scikit-learn random-forest