gpt4 book ai didi

Weka:测试文件的 ReplaceMissingValues

转载 作者:行者123 更新时间:2023-12-05 00:42:16 25 4
gpt4 key购买 nike

用Weka的时候有点担心ReplaceMissingValues仅为测试输入缺失值 arff 数据集 但不适用于 训练数据集 .下面是命令行:

java -classpath weka.jar weka.filters.unsupervised.attribute.ReplaceMissingValues -c last  -i "test_file_with_missing_values.arff" -o "test_file_with_filled_missing_values.arff"

从之前的帖子 ( Replace missing values with mean (Weka) ) 中,我了解到 Weka 的 ReplaceMissingValues只需用相应属性的平均值替换每个缺失值。这意味着需要为每个属性计算平均值。虽然这个平均值的计算对于训练文件来说非常好,但对于测试文件就不行了。

这是因为在典型的测试场景中,我们不应该假设我们知道输入缺失值的测试属性的均值。我们只有一个具有多个分类属性的测试记录,而不是将整个测试记录集放在一个测试文件中。因此,我们将根据使用训练数据计算的平均值输入缺失值。然后上面的命令将变得不正确,因为我们需要另一个输入(火车属性的平均值)。

以前有人想过这个吗?你如何通过使用weka来解决这个问题?

最佳答案

简单,见 Batch Filtering

Instances train = ...   // from somewhere
Instances test = ... // from somewhere
Standardize filter = new Standardize();
filter.setInputFormat(train); // initializing the filter once with training set
Instances newTrain = Filter.useFilter(train, filter); // configures the Filter based on train instances and returns filtered instances
Instances newTest = Filter.useFilter(test, filter); // create new test set

过滤器使用训练数据初始化,然后应用于训练和测试数据。

问题是当您在任何处理管道之外应用 ReplaceMissingValue 过滤器时,因为在写入过滤数据后,您无法再区分“真实”值和“估算”值。这就是为什么您应该在单个管道中完成所有需要完成的工作,例如,使用 FilteredClassifier:
java -classpath weka.jar weka.classifiers.meta.FilteredClassifier
-t "training_file_with_missing_values.arff"
-T "test_file_with_missing_values.arff"
-F weka.filters.unsupervised.attribute.ReplaceMissingValues
-W weka.classifiers.functions.MultilayerPerceptron -- -L 0.3 -M 0.2 -H a

本示例将使用“ training _file_with_missing_values.arff”数据集初始化 ReplaceMissingValues 过滤器,然后将过滤器应用于“ test _files_with_means the learning the learning set ),然后在过滤后的训练数据上训练多层感知器,并预测过滤后的测试数据的类别。

关于Weka:测试文件的 ReplaceMissingValues,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14798421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com