目标标签中缺少值

时间:2019-01-25 21:13:54

标签: python data-science missing-data

我想在具有类不平衡的数据中填充目标列/因变量Complaint-Status中存在的缺失值(18543)。目标列中有五类(多类分类问题)。

在不增加班级不平衡的情况下填充这些值的最佳方法是什么?

数据集

enter image description here

用列的模式替换这些丢失的值,即“以解释结束”,只会增加类的不平衡。

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]]

1 个答案:

答案 0 :(得分:1)

只需基于其他功能构建模型即可对其进行预测。这应该保持您的分布。并且由于您丢失的数据是分类的,因此使用均值或中位数没有任何意义。即使是数字形式,我仍然建议不要这样做,因为使用均值或中位数会使分布具有较小的方差,从而改变分布。

此外,如果您构建基于树的模型,它将能够处理丢失的数据。决策树,随机森林,gbdt。查看lightgbm,xgboost软件包。