由于我的数据集不平衡(1 类:5%,0 类:95%),我使用了 class_weight="balanced" 参数来训练随机森林分类模型。通过这种方式,我惩罚了对罕见阳性病例的错误分类。
rf = RandomForestClassifier(max_depth=m, n_estimators=n_estimator,class_weight = "balanced")
rf.fit(X_train, y_train)
“平衡”模式使用 y 的值自动调整权重,与输入数据中的类频率成反比,如 n_samples / (n_classes * np.bincount(y))
就我而言,课程频率是:
fc = len(y_train)/(len(np.unique(y_train))*np.bincount(y_train))
10000/(2*np.array([9500,500]))
array([ 0.52631579, 10. ])
我使用预测概率函数将我的模型应用于测试数据集:
y_predicted_proba = rf.predict_proba(X_test)
第二列表示输入样本为 1 的概率。但是我知道这个概率必须被纠正为真实的。
如果我将它们除以 class_weight 值,这些新概率不会相加...
如何实现这种校正?