我有一个不平衡数据集,它有43323行,其中9行属于"失败"类,其他行属于"正常"类。我为测试数据训练了一个100%召回率和94.89%AUC的分类器(0.75/0.25,分层=y(。然而,该分类器具有0.18%的精度&0.37%F1得分我以为我可以通过改变阈值来找到更好的F1分数,但我失败了(我用步长=0.01检查了0到1之间的阈值(。此外,我似乎很惊讶,通常在处理不平衡的数据集时,很难获得高召回率目标是获得更好的F1成绩。下一步我能做些什么?谢谢
(需要明确的是,我使用SMOTE对训练数据集中的故障样本进行了上采样(
获得100%的召回实际上是微不足道的:只需将所有内容分类为1即可。
精确度/召回率曲线是否良好?也许更彻底的扫描可以产生更好的结果:
probabilities = model.predict_proba(X_test)
precision, recall, thresholds = sklearn.metrics.precision_recall_curve(y_test, probabilities)
f1_scores = 2 * recall * precision / (recall + precision)
best_f1 = np.max(f1_scores)
best_thresh = thresholds[np.argmax(f1_scores)]