望采纳
原始样本中的1就很少,所以confusion matrix里1的绝对值计数很小是正常的。
你的样本这么imbalance,建议你用AUC做评估指标也看一下,acc其实看不出啥。
另外,你在代码里模型参数部分,已经指定class_weight强行拉到一样的权重了,但这样做有点粗暴,相当于重复正样本的oversampling方法。你可以考虑使用imblearn,借助SMOTE合成样本做上采样效果会好一点。
# 导入需要的库
from sklearn.datasets import make_classification
from imblearn.over_sampling import SMOTE
# 生成样本数据
X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9],
n_informative=3, n_redundant=1, flip_y=0,
n_features=20, n_clusters_per_class=1,
n_samples=1000, random_state=10)
# 生成过采样数据
sm = SMOTE(random_state=42)
X_res, y_res = sm.fit_resample(X, y)