我有一个不平衡的数据集,它有43323行,其中9行属于“failure”类,其他行属于“normal”类。我用100%的召回率和94.89%的AUC训练了一个用于测试数据的分类器(0.75/0.25,分层分裂为y)。而分类器的精度为0.18%,F1评分为0.37%。,我假设我可以通过更改阈值来获得更好的F1分数,但是我失败了(我检查了0到1之间的阈值,步骤=0)。而且,在我看来,通常在处理不平衡的数据集时,很难获得高召回率。的目标是得到一个更好的F1分数。下一步我能做些什么?谢谢!
(要明确的是,我使用SMOTE来对训练数据集中的故障样本进行抽样)
发布于 2022-10-20 12:44:55
事实上,获得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)]https://stackoverflow.com/questions/74123962
复制相似问题