Weka不会将正确分类的实例显示为输出

smo*_*mut 2 weka

我是weka的新人.我在csv中有一个包含5000个样本的数据集.这里有20个样本; 当我将这个数据集上传到weka时,它看起来没问题,但是当我运行knn算法时,它会给出一个不应该给出的结果.这是样本数据.

A B C D

74,85,123,1

73,84,122,1

72,83,121,1

70,81,119,1

70,81,119,1

69,80,118,1

70,81,119,1

70,81,119,1

76,87,125,1

76,87,125,1

82,92,146,2

74,86,140,​​2

68,80,134,2

64,76,130,2

64,75,132,2

83,96,152,2

72,85,141,2

71,83,141,2

69,81,139,2

65,79,137,2

这是结果:

===交叉验证=== ===摘要===

相关系数0.6148平均绝对误差0.2442均方根误差0.4004相对绝对误差50.2313%根相对平方误差81.2078%实例总数5000

它应该给出这样的结果:正确分类的实例:69 92%错误分类的实例:6 8%

应该是什么问题?我错过了什么?我在所有其他算法中都这样做,但它们都提供相同的输出.我使用了样本weka数据集,它们都按预期工作.

nek*_*tic 6

所述IBK算法可用于回归(预测为每个实例数字响应的值),以及用于分类(预测每个实例属于哪个类).

看起来数据集中的class属性的所有值(dCSV中的列)都是数字.当您将此数据加载到Weka时,Weka因此猜测此属性应被视为数字属性,而不是名义属性.你可以知道这已经发生了,因为Preprocess选项卡中的直方图看起来像这样:

无色的直方图

而不是像这样(按类着色):

直方图按类着色

运行IBk时所看到的结果是回归拟合(预测每个实例的列d的数值)而不是分类(为每个实例选择列d的最可能名义值)的结果.

要获得所需的结果,您需要告诉Weka将此属性视为名义属性.在"预处理"选项卡中加载csv文件时,请检Invoke options dialog入文件对话框窗口.然后当您单击" 打开"时,您将看到以下窗口:

Weka csv选项对话框

在该字段nominalAttributes中,您可以向Weka提供哪些属性是名义属性的列表,即使它们看起来是数字的.4在此处输入将指定输入中的第四个属性(列)是名义属性.现在IBk应该按照您的预期行事.

您也可以通过将NumericToNominal无监督属性过滤器应用于已加载的数据来执行此操作,再次指定属性4,否则过滤器将应用于所有属性.

用于Weka样本数据集的ARFF格式包括哪些属性是哪种类型的规范.在您导入(或过滤)上述数据集之后,您可以将其保存为ARFF,然后您就可以重新加载它而无需经历相同的过程.