【问题标题】:Random forest classifier probability only has values 0, 0.1, 0.2... 1随机森林分类器概率只有值 0, 0.1, 0.2... 1
【发布时间】:2013-01-10 20:47:54
【问题描述】:

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

【问题讨论】:

    标签: python random-forest scikit-learn scipy


    【解决方案1】:

    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
    

    【讨论】:

    • 这很尴尬。谢谢。
    猜你喜欢
    • 2018-09-13
    • 2016-01-28
    • 2014-05-28
    • 2017-04-24
    • 2018-02-18
    • 2017-07-02
    • 2012-10-24
    • 2015-05-03
    • 1970-01-01
    相关资源
    最近更新 更多