Weka教程:如何移除含缺失值的实例
Weka移除含缺失值实例的正确操作方法
我之前也踩过类似的坑——用RemoveValues处理缺失值很容易因为参数设置失误把所有实例都删光,其实Weka有专门针对缺失值的过滤器,操作起来简单又靠谱,给你两种方法:
方法一:直接用RemoveMissingValues(最省心)
- 打开Weka Explorer导入CSV后,切到Preprocess标签页
- 在右侧Filter面板点Choose,直接搜「RemoveMissingValues」就能找到
weka.filters.unsupervised.instance.RemoveMissingValues - 选中后点Apply,Weka会自动删掉所有带缺失值的实例
- 如果需要自定义规则(比如只检查某几列的缺失值、允许少量缺失),点过滤器旁边的Edit:
attributeIndices:指定要检查的列,默认*是所有列,改成1,3就只看第1、3列ignoreAttributeWithAllMissing:如果某列全是缺失值,是否跳过该列而不删实例,默认是开启的minimumComplete:设置实例保留的最小非缺失值比例,比如填0.8就是至少80%的列有值才留
方法二:用Multi Filter配合其他预处理
如果你需要同时做其他预处理(比如删无关列),可以把RemoveMissingValues加入Multi Filter:
- 选
weka.filters.MultiFilter后点Edit - 在弹出窗口点Add,先加
RemoveMissingValues,再添加你需要的其他过滤器(比如RemoveAttribute) - 调整执行顺序(一般先处理缺失值,再做其他操作),点OK后再Apply就行
为啥你之前会把所有实例都删了?
RemoveValues是用来移除包含特定数值的实例,不是专门处理缺失值的。如果参数没设对——比如没把matchMissingValues设为True,或者错误指定所有列都要匹配缺失值,就会误删所有实例。而RemoveMissingValues是专门为缺失值场景设计的,不会出现这种问题。
内容的提问来源于stack exchange,提问作者bockdavidson
相关产品推荐
相关产品推荐

