如何为Scikit-learn随机森林二分类模型设置0.4分类阈值
如何为Scikit-learn随机森林模型设置自定义分类阈值?
嘿,这问题我之前调模型时也碰到过!Scikit-learn的predict()方法默认用0.5作为二分类的阈值,要改成你想要的0.4,得换个思路——用predict_proba()获取样本的类别概率,再手动根据阈值生成预测标签。
给你修改好的完整代码,每一步我都标清楚了:
from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import accuracy_score # 初始化并训练随机森林模型 random_forest = RandomForestClassifier(n_estimators=100, oob_score=True, random_state=12) random_forest.fit(X_train, y_train) # 获取测试样本属于类1的概率(predict_proba返回[n_samples, 2],第二列是类1的概率) y_proba = random_forest.predict_proba(X_test)[:, 1] # 根据自定义阈值0.4生成预测标签:>=0.4标记为1,否则为0 predicted = (y_proba >= 0.4).astype(int) # 计算准确率 accuracy = accuracy_score(y_test, predicted) print(f"自定义阈值下的准确率:{accuracy}")
关键细节说明:
predict_proba(X_test)返回的是二维数组,每一行对应一个样本,第一列是样本属于类0的概率,第二列是属于类1的概率。如果你不确定类别顺序,可以用random_forest.classes_查看模型的类别映射,确保自己取对了列。(y_proba >= 0.4)会生成布尔数组,用.astype(int)能把True转成1、False转成0,刚好匹配我们需要的标签格式。
这样就能精准按照你想要的0.4阈值完成分类啦!
内容的提问来源于stack exchange,提问作者BigData
相关产品推荐
相关产品推荐

