4

我正在尝试使用随机森林对我的数据进行分类,但是当我生成分类器概率时,它的值总是在 5 位以内,例如 0、0.1、0.2、... 1。这是统计问题还是软件问题?我在 Mac 10.7.5 上的 Python 2.7.3 的 scikit-learn 合奏中使用 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 多个网页,了解其他人如何安装它或他们有什么错误。当他们说安装很容易时,我没有看到他们测试软件包。谢谢。

4

1 回答 1

8

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
于 2013-01-27T14:18:32.013 回答