我正在研究一个分类问题。数据集维度为 187,643 x 203。第一列包含没有 NA 的类标签。数据集的其余部分是频率数据,可以是 0 到 1 之间的任何值。这是数据集的快照
|class|groupA|groupB|groupC|
----------------------------
|0 | NA | 0.45 |0.001 |
----------------------------
|1 |0.001 |0.0008|0.001 |
数据集包含大量的 NA。列中 NA 的最小和最大数量分别为 24% 和 90%。
为了处理 NA,我正在考虑为 NA 计数定义一个截止值(比如说 30%),删除 NA 计数大于 cut-0ff 值的列,并用特定类别的平均值替换每个剩余列中的 NA。但是,这样做会丢失一些基于数据探索性分析的分类工作似乎非常重要的特征。例如,有一个变量有 64% 的缺失值,但它可以对样本进行分类,其AUC [95% CI]: 73.23 [72.86 - 73.61]。我确实想保留这种变量。
另一方面,保留缺失值将需要使用可以处理它们的算法,例如 k-NN 和朴素贝叶斯以及随机森林。但似乎这些算法的 sklearn 实现不支持缺失值的存在。
2021 年 8 月 25 日更新:我知道有一些建议可以避免对大多数 ML 任务的数字特征进行离散化,但在这种情况下,如果我将特征转换为分类变量,然后为 NAs 案例分配一个组名,我将能够保留该功能。你觉得这听起来如何?
我对这个领域有点陌生,并试图找出处理数据集中 NA 的最佳方法。
如果您对此有任何想法,我将不胜感激。