假设我有一列包含分类数据“红色”“绿色”“蓝色”和空单元格
red
green
red
blue
NaN
我确信 NaN 属于红绿蓝,我应该用颜色的平均值替换 NaN 还是假设太强了?将会是
col1 | col2 | col3
1 0 0
0 1 0
1 0 0
0 0 1
0.5 0.25 0.25
或者甚至缩放最后一行但保持比例以使这些值的影响较小?通常最佳实践是什么?
0.25 0.125 0.125
最佳答案
处理缺失数据的最简单策略是删除包含缺失值的记录。
scikit-learn库提供了 Imputer()
预处理类,可用于替换缺失值。由于是分类数据,不建议使用均值作为替换值。您可以使用
from sklearn.preprocessing import Imputer
imp = Imputer(missing_values='NaN', strategy='most_frequent', axis=0)
Imputer 类直接在 numpy 上运行数组而不是 DataFrame。
最后但并非最不重要的一点是,并非所有机器学习算法都无法处理缺失值。不同的ML实现也不同。
关于machine-learning - 替换分类数据中的缺失值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46120727/