【问题标题】:How do I get more decimal in clf.predict_proba(X_test)?如何在 clf.predict_proba(X_test) 中获得更多小数?
【发布时间】:2018-06-05 01:28:56
【问题描述】:

我有一个 pandas 数据框,用于二进制分类案例(A 类和 B 类)。要获得X_train, X_test, y_train, y_test,我会像这样进行 70:30 拆分:

from sklearn.model_selection import train_test_split
target = pd.DataFrame(data['good'])
features = data.drop('good', axis=1)
X_train, X_test, y_train, y_test = train_test_split(features, 
                                                    target, 
                                                    test_size = 0.3, 
                                                    random_state = 0)

然后我用这段代码做了 RandomForest 分类器

from sklearn.ensemble import RandomForestClassifier
clf = RandomForestClassifier(n_jobs=2, random_state=0)
model = clf.fit(X_train, y_train)

像往常一样,您可以通过clf.predict(X_test) 获得预测。它给numpy.ndarray这样的对象

array(['0', '0', '1', '0', '0', '1', '0', '1', '1', '1'], dtype=object)

然后,我想通过clf.predict_proba(X_test)计算预测概率,结果是

array([[ 0.7  ,  0.3  ],
       [ 0.8  ,  0.2  ],
       [ 0.4  ,  0.6  ],
       [ 0.8  ,  0.2  ],
       [ 0.5  ,  0.5  ],
       [ 0.1  ,  0.9  ],
       [ 0.5  ,  0.5  ],
       [ 0.3  ,  0.7  ],
       [ 0.3  ,  0.7  ],
       [ 0.5  ,  0.5  ]])

我想在clf.predict_proba(X_test) 输出中获得更多小数。 (我预计小数点后 3 位)例如,

array([[ 0.712  ,  0.288  ],
       [ 0.845  ,  0.155  ... etc

如果答案也将clf.predict(X_test)clf.predict_proba(X_test)转换并合并为pandas数据框会更好,因为我会继续计算GINI指数。提前致谢

【问题讨论】:

  • np.set_printoptions(precision=3)?
  • @Divakar 工作,你能做到 Pandas 数据框吗
  • 只需使用列名将结果附加到数据框中。类似于data['prob_0']=output[:,0]data['prob_1']=output[:,1],其中output = clf.predict_proba(X_test)

标签: python numpy machine-learning scikit-learn


【解决方案1】:

增加模型参数中的“n_estimators”(好像您已将其设置为默认值 10)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-15
    • 1970-01-01
    • 2013-05-27
    • 2013-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-14
    相关资源
    最近更新 更多