随机森林二分类预测不均匀

img

img


用随机森林进行二分类,0和1的比例是0.95比0.05,混淆矩阵得到1值非常少。
帮忙分析一下为什么预测的1值这么少,是过拟合了,还是样本分布不均匀造成的

望采纳

原始样本中的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)