0

我对数据挖掘领域比较陌生,并且一直在尝试使用 Weka。

我有一个数据集,其中包含近 8000 条与客户和他们购买的物品相关的记录。该数据集中 58% 的“性别”属性缺失值。

我想根据我拥有的其他数据找到缺失的性别值。

我首先认为我可以使用 Weka 中的分类器算法使用训练集来构建模型来做到这一点。根据我在网上看到的示例,我使用 Weka 中几乎所有可用的算法进行了尝试,使用的训练集包含 60-80% 的没有缺失值的数据。这给了我比我想要的更低的准确率(80-86%,取决于所使用的算法)

我做对了吗?有没有办法提高这种准确性?我尝试使用不同的属性,对数据进行不同的预处理等。

我还尝试在完整数据集上使用 ReplaceMissingValues 过滤器,以查看如何处理缺失值。但是,它只是将所有缺失的值更改为“女性”,显然情况并非如此。所以我想知道我是否需要在我的情况下使用这个过滤器。

4

1 回答 1

2

听起来你以正确的方式去做了。过滤器用我认为最ReplaceMissingValues常见的非缺失值替换缺失值,所以在这种情况下它不是你想要的。

了解性别预测器的真实准确性的更好方法是使用交叉验证而不是训练/测试拆分(Weka 有一个单独的选项)。80-86% 可能看起来很低,但请记住,随机猜测只会让你得到大约 50%,所以它仍然比这要好得多。要尝试获得更好的性能,请选择一个性能良好的分类器,然后使用它的参数,直到获得更好的性能。这可能非常耗费人力(尽管您当然可以使用自动化方法进行调优,例如Auto-WEKA),但这是提高性能的唯一方法。

您还可以将您选择的算法与单独的特征选择步骤结合起来(Weka 对此有一个特殊的元分类器)。这可能会提高性能,但您必须再次尝试找到适合您的特定配置。

于 2013-04-12T18:25:09.210 回答