如何设置scikit学习随机森林模型的阈值

新手上路,请多包涵

在看到 precision_recall_curve 之后,如果我想设置 threshold = 0.4,如何将 0.4 实现到我的随机森林模型(二元分类)中,对于任何概率 <0.4,将其标记为 0,对于任何 >=0.4,将其标记为 1。

 from sklearn.ensemble import RandomForestClassifier
  random_forest = RandomForestClassifier(n_estimators=100, oob_score=True, random_state=12)
  random_forest.fit(X_train, y_train)
from sklearn.metrics import accuracy_score
  predicted = random_forest.predict(X_test)
accuracy = accuracy_score(y_test, predicted)

文档 精确召回

原文由 BigData 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

假设您正在进行二进制分类,这很容易:

 threshold = 0.4

predicted_proba = random_forest.predict_proba(X_test)
predicted = (predicted_proba [:,1] >= threshold).astype('int')

accuracy = accuracy_score(y_test, predicted)

原文由 Stev 发布,翻译遵循 CC BY-SA 3.0 许可协议

random_forest = RandomForestClassifier(n_estimators=100)
random_forest.fit(X_train, y_train)

threshold = 0.4

predicted = random_forest.predict_proba(X_test)
predicted[:,0] = (predicted[:,0] < threshold).astype('int')
predicted[:,1] = (predicted[:,1] >= threshold).astype('int')

accuracy = accuracy_score(y_test, predicted)
print(round(accuracy,4,)*100, "%")

这带有一个错误,指的是最后一个准确性部分“ValueError:无法处理二进制和多标签指示器的混合”

原文由 BigData 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题