我在 Weka 中使用一个数据集进行包含缺失值的分类。据我了解,unsupervised/attribute/ReplaceMissingValues
当使用像 NaiveBayes 这样的分类器时,Weka 会自动将它们替换为训练数据的众数或均值(使用 filter )。
我想尝试删除它们,看看这如何影响分类器的质量。有过滤器可以做到这一点吗?
我在 Weka 中使用一个数据集进行包含缺失值的分类。据我了解,unsupervised/attribute/ReplaceMissingValues
当使用像 NaiveBayes 这样的分类器时,Weka 会自动将它们替换为训练数据的众数或均值(使用 filter )。
我想尝试删除它们,看看这如何影响分类器的质量。有过滤器可以做到这一点吗?
请参阅下面的答案以获得更好的现代方法。
我的方法不是完美的,因为如果您有超过 5 或 6 个属性,那么应用会变得非常麻烦,但如果只有少数属性缺少值,我可以建议为此目的使用 MultiFilter。
如果您在 2 个属性中缺少值,那么您将在 MultiFilter 中使用 RemoveWithValues 2 次。
使用该removeIf()
方法weka.core.Instances
使用该方法的方法引用,如果给定的实例有任何缺失值,则weka.core.Instance
该方法返回一个布尔值。hasMissingValue
Instances dataset = source.getDataSet(); // for some source
dataset.removeIf(Instance::hasMissingValue);