我想在具有类不平衡的数据中填充目标列/因变量Complaint-Status中存在的缺失值(18543)。目标列中有五类(多类分类问题)。
在不增加班级不平衡的情况下填充这些值的最佳方法是什么?
数据集
用列的模式替换这些丢失的值,即“以解释结束”,只会增加类的不平衡。
uniq, kounts = np.unique(df_ohe['Complaint-Status'], return_counts=True)
print(np.asarray((uniq, kounts)).T)
[['' 18543]
['Closed' 809]
['Closed with explanation' 34300]
['Closed with monetary relief' 2818]
['Closed with non-monetary relief' 5018]
['Untimely response' 321]]
目标课程百分比
100*c_count.values/c_count.values.sum()
# array([55.49353654, 30.00048537, 8.11855879, 4.55920659, 1.30887088,
0.51934184])
预期输出:
[['class_label', 18543]
['Closed' 809]
['Closed with explanation' 34300]
['Closed with monetary relief' 2818]
['Closed with non-monetary relief' 5018]
['Untimely response' 321]]
答案 0 :(得分:1)
只需基于其他功能构建模型即可对其进行预测。这应该保持您的分布。并且由于您丢失的数据是分类的,因此使用均值或中位数没有任何意义。即使是数字形式,我仍然建议不要这样做,因为使用均值或中位数会使分布具有较小的方差,从而改变分布。
此外,如果您构建基于树的模型,它将能够处理丢失的数据。决策树,随机森林,gbdt。查看lightgbm,xgboost软件包。