随机森林分类器的概率只有0、0.1、0.2... 1这些值。

4

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

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 learn包,测试失败但没有这个问题。此外,我知道我应该修复包,但我花了20个小时从源代码、二进制包安装,然后阅读了30多个网页,看看其他人如何安装或遇到了什么错误。当他们说安装很容易时,我并没有看到他们测试这些包。谢谢。
1个回答

8
sklearn决策森林默认建立10棵树。如果森林中只有10棵树,输出结果看起来就像这样(概率是给定类别的树的比例,因此值将为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

那很尴尬。谢谢。 - user1910316

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接