【发布时间】:2012-04-23 08:13:03
【问题描述】:
我了解如何使用 WEKA API 我首先将arff 加载到创建Instances 的程序中。然后这些将被提供给已在此数据集上训练的Classifier。现在我想给它一个没有标签的新测试数据集,并让 WEKA API 告诉我该实例的标签是什么或可能是什么。这是怎么做到的?
【问题讨论】:
标签: java machine-learning weka
我了解如何使用 WEKA API 我首先将arff 加载到创建Instances 的程序中。然后这些将被提供给已在此数据集上训练的Classifier。现在我想给它一个没有标签的新测试数据集,并让 WEKA API 告诉我该实例的标签是什么或可能是什么。这是怎么做到的?
【问题讨论】:
标签: java machine-learning weka
你使用 Classifier.classifyInstance(Instance)
http://weka.sourceforge.net/doc/weka/classifiers/Classifier.html
【讨论】:
您的训练和测试实例应该看起来完全一样。
特征值1,特征值2.......,特征值n,类别值 特征值1,特征值2.......,特征值n,类值
当您在测试集上应用模型时,Weka 不会为您的模型提供实例的类值。相反,它会问,“嘿,分类器,让我看看你是如何为每个测试实例分配类的,就像你从训练集中学习的那样”。然后分类器模型根据从训练集中学到的知识为每个测试实例分配一个类。 Weka 然后对其进行比较并提供精度、召回率、f-score、ROC、AUC、错误等方面的结果。因此,总而言之,您的测试实例将具有类值。不要排除这一点。否则会出现“训练集和测试集不兼容”之类的错误。
【讨论】:
Instance 是一个问题。我在一个实例中有 100 个数字特征和一个字符串字符作为标签或类。我无法初始化我的实例。你看到构造函数是Instance(double weight, double[] attrValues),现在在分类实例上抛出weka.core.UnassignedDatasetException,它说实例无权访问数据集。我无法将第 101 个属性(即字符串字符)添加到 attrValues[],因为它的类型为 double 我在这里做错了什么?
Instance 上分配任何数据。这必须由 Instance.setData() 完成,然后您将传递训练分类器的 Instances 对象