刚入门求解答!
采样后accuracy降低很多,但交叉验证CVaccuracy上升了。
RandomUnderSampler、 RandomOverSampler、SMOTE、SMOTEENN方法尝试了都这样,试了几个模型没有过拟合。这是怎么回事呀?
只关注CVaccuracy就可以了吗?
不平衡数据采样后accuracy变低
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
5条回答 默认 最新
阿里嘎多学长 2025-03-13 20:50关注阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程
不平衡数据采样后accuracy变低
你遇到了一个非常常见的问题!不平衡数据采样后,模型的accuracy可能会降低,这是因为采样方法可能会引入新的bias。你的尝试使用RandomUnderSampler、RandomOverSampler、SMOTE、SMOTEENN方法都没有解决问题,这可能是因为这些方法都有其局限性。
首先,让我们来分析一下你的情况:采样后accuracy降低,但交叉验证CVaccuracy上升了。这可能是因为采样方法引入了新的bias,使得模型在训练集上性能下降,但是在测试集上性能上升。
为了解决这个问题,你可以尝试以下几点:
- 使用多样化采样方法:你可以尝试使用多样化采样方法,例如:Adasyn、Borderline SMOTE、Edited SMOTE等。
- 使用 oversampling 和 undersampling 结合:你可以尝试使用 oversampling 和 undersampling 结合的方法,例如:SMOTE + RandomUnderSampler。
- 使用 cost-sensitive 学习:你可以尝试使用 cost-sensitive 学习,例如:使用 weighted loss function 或者使用 cost-sensitive classifier。
- 使用 ensemble 学习:你可以尝试使用 ensemble 学习,例如:使用 bagging 或者使用 boosting。
以下是一个使用 Adasyn 采样方法的示例代码:
from imblearn.over_sampling import ADASYN from sklearn.datasets import make_classification from sklearn.model_selection import train_test_split # 生成不平衡数据 X, y = make_classification(n_samples=1000, n_features=20, n_informative=10, n_redundant=5, n_repeated=5, n_classes=2, weights=[0.1, 0.9], random_state=42) # 切分数据 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 采样 adasyn = ADASYN(random_state=42) X_train_res, y_train_res = adasyn.fit_resample(X_train, y_train) # 训练模型 from sklearn.linear_model import LogisticRegression logreg = LogisticRegression() logreg.fit(X_train_res, y_train_res) # 评估模型 y_pred = logreg.predict(X_test) print("Accuracy:", accuracy_score(y_test, y_pred))希望这些建议和示例代码能够帮助你解决问题!
解决 无用评论 打赏 举报