【问题标题】:How to put an threshold of .8 to Random forest classifier In Python如何在 Python 中将 .8 的阈值设置为随机森林分类器
【发布时间】:2018-06-30 17:02:27
【问题描述】:

我正在做一个二元分类问题。我想将阈值 .8 归类为特定类别。如果概率低于 0.8,则归入另一类。这是怎么做到的。

clf = RandomForestClassifier(n_estimators=10, max_depth=8 ,random_state=0)
classifier = clf.fit(X_train,y_train)
predictions = classifier.predict_proba(X_train) 
predict=pd.DataFrame(predictions)

与概率结合后的数据框

Id  Gender  Age Salary  country Mix_ratio   Allowance   0   1
3452    M   25  245689  AU     0.46             7880    0.8 0.2
890     F   43  568909  FR     0.23             89076   0.7 0.3
4670    M   29  897643  AU     0.76             7865    0.1 0.9
7423    F   32  235892  IND    0.45             78534   0.2 0.8
94567   F   56  145823  SG     0.67             54123   0.5 0.5
23876   M   56  345122  FR     0.23              8900   0.8 0.2

感谢任何帮助。

【问题讨论】:

  • predict_proba 将返回分类器最可能的类别。所以设置一个阈值是没有意义的。而是尝试使用类权重。更多here
  • @skrubber,在这种情况下,类权重有什么帮助。你能简单解释一下吗

标签: python pandas scikit-learn random-forest


【解决方案1】:

使用您的 DataFrame,您可以执行以下操作:

df['outcome'] = np.where(df['1']>=0.8, 'Class A', 'Class B')

df
Out[88]: 
      Id Gender  Age  Salary country  Mix_ratio  Allowance    0    1  outcome
0   3452      M   25  245689      AU       0.46       7880  0.8  0.2  Class B
1    890      F   43  568909      FR       0.23      89076  0.7  0.3  Class B
2   4670      M   29  897643      AU       0.76       7865  0.1  0.9  Class A
3   7423      F   32  235892     IND       0.45      78534  0.2  0.8  Class A
4  94567      F   56  145823      SG       0.67      54123  0.5  0.5  Class B
5  23876      M   56  345122      FR       0.23       8900  0.8  0.2  Class B

【讨论】:

  • 这是一个基于规则的系统。我们可以从算法方面做点什么吗
猜你喜欢
  • 2019-12-09
  • 2013-06-12
  • 2018-09-21
  • 2017-12-04
  • 1970-01-01
  • 2018-02-18
  • 1970-01-01
  • 2018-05-20
  • 2020-07-02
相关资源
最近更新 更多