2

我在 Weka 中使用一个数据集进行包含缺失值的分类。据我了解,unsupervised/attribute/ReplaceMissingValues当使用像 NaiveBayes 这样的分类器时,Weka 会自动将它们替换为训练数据的众数或均值(使用 filter )。

我想尝试删除它们,看看这如何影响分类器的质量。有过滤器可以做到这一点吗?

4

2 回答 2

2

请参阅下面的答案以获得更好的现代方法。

我的方法不是完美的,因为如果您有超过 5 或 6 个属性,那么应用会变得非常麻烦,但如果只有少数属性缺少值,我可以建议为此目的使用 MultiFilter。

如果您在 2 个属性中缺少值,那么您将在 MultiFilter 中使用 RemoveWithValues 2 次。

  1. 在 Weka Explorer 中加载您的数据
  2. 从过滤器区域中选择多重过滤器
  3. 单击 MultiFilter 并添加 RemoveWithValues
  4. 然后用属性索引配置每个 RemoveWithValues 过滤器,并在 matchMissingValues 中选择 True
  5. 保存过滤器设置并在资源管理器中单击应用。
于 2013-10-08T17:38:23.347 回答
1

使用该removeIf()方法weka.core.Instances使用该方法的方法引用,如果给定的实例有任何缺失值,则weka.core.Instance该方法返回一个布尔值。hasMissingValue

Instances dataset = source.getDataSet(); // for some source
dataset.removeIf(Instance::hasMissingValue);
于 2018-12-11T10:11:19.937 回答