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

use*_*316 4 python scipy random-forest scikit-learn

我正在尝试使用随机森林对我的数据进行分类,但是当我生成分类器概率时,它总是具有5个数字内的0,0.1,0.2,... 1之类的值.这是统计问题还是软件问题?我在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
Run Code Online (Sandbox Code Playgroud)

响应变量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多个网页,了解其他人如何安装软件包或者他们有什么错误.当他们说安装很容易时,我看不到他们测试包装.谢谢.

coh*_*hoz 8

由sklearn决策森林构建的默认树数为10.看起来你可能没有正确改变它,就像森林中正好有10棵树一样,这就是输出的样子(概率是给出树的一小部分) class 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
Run Code Online (Sandbox Code Playgroud)