随机森林分类器概率仅具有值0,0.1,0.2 ... 1

时间:2013-01-26 16:32:35

标签: python random-forest scikit-learn scipy

我正在尝试使用随机森林对我的数据进行分类,但是当我生成分类器概率时,它总是具有0,0.1,0.2,......之类的值,在5位数内。这是统计问题还是软件问题?我在Mac 10.7.5上的Python 2.7.3的scikit-learn ensemble中使用RandomForestClassifier。我的数据看起来像这样:

y   x1   x2   x3   x4...
0   23   4    0
1   102  2    0
1   12   17   1

响应变量y是二进制的。有15个功能,都是实数或整数值,其中一些是二进制的。我有大约2000个训练点和500个测试。我将树的数量设置为500,将每棵树尝试的功能数量设置为8,并将其他所有内容的默认设置使用。训练模型后,我使用“predict_proba”函数生成概率,得到的结果如0.90000000000000002或0.10000000000000001

我认为这个问题可能是由一个特定的变量引起的,所以我一次只使用一个变量训练模型,重复五个变量。单独每个变量的概率具有正常值,如0.5532。当我一起使用两个变量时,会出现一些0.70000等值。当我使用更多变量时,我得到0.700000类型值的更大部分。

这是统计数据还是软件问题? Numpy通过了测试:numpy.test(),但是scipy.test()和sklearn.test()都失败了。我曾经使用sci-kit学习包,测试失败但没有这个问题。此外,我知道我应该修复软件包,但是我花了20个小时从源代码安装,然后是二进制软件包,然后阅读30多个网页,了解其他人如何安装它或者他们有什么错误。当他们说安装很容易时,我看不到他们测试包装。感谢。

1 个答案:

答案 0 :(得分:6)

sklearn决策森林构建的默认树数为10.看起来你可能没有正确改变它,就像森林中正好有10棵树一样,这就是输出的样子(概率就是分数)树给出1级,所以值将为0,.1,。2,...,1)。

您是否可以检查分配的参数以查看它是否实际构建了500棵树?

>>> import sklearn.ensemble
>>> rf = sklearn.ensemble.RandomForestRegressor()
>>> rf.n_estimators
10
>>> rf = sklearn.ensemble.RandomForestRegressor(n_estimators=500)
>>> rf.n_estimators
500