python - 随机森林分类器概率只有值 0、0.1、0.2 ... 1

标签 python random-forest scikit-learn scipy

我正在尝试使用随机森林对我的数据进行分类,但是当我生成分类器概率时,它的值始终在 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 多个关于其他人如何安装它或他们有什么错误的网页。当他们说安装很容易时,我没有看到他们测试软件包。谢谢。

最佳答案

sklearn 的决策森林构建的默认树数为 10。您似乎没有正确更改它,因为森林中恰好有 10 棵树,这就是输出的样子(概率是分数给出类别 1 的树的数量,因此值将为 0、.1、.2、...、1)。

你能检查分配的参数,看看它是否真的在 build 500 棵树吗?

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

关于python - 随机森林分类器概率只有值 0、0.1、0.2 ... 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14546366/

相关文章:

python - 没有拦截的 Sklearn RANSAC

python - 如何从同一个flask-restplus资源类获取和发布端点?

python - Discord.py - 我应该如何使用 on_reaction_add?

OpenCV,筛选 : All of the features of 2 different insects are matching

python - 在 SKLearn Logistic 回归中,class = Balanced 有助于运行具有不平衡数据的模型?此选项使用什么方法

python - 主成分分析不起作用

python - `pip list` 和 anaconda 包列表中的 Keras 但无法导入

python - pytz UTC 转换

python - 每次运行 RandomForestRegressor 时都会得到不同的结果

使用sklearn的Python MNIST数据集,选择特定数字