晚安,
我正在进行有监督的分类任务。我有一个大的arff文件,其格式为“text”,类。只有两个班级,E和I.
我可以将这些数据加载到Weka Explorer中,在其上应用带有TF-IDF的StringToWordVector,然后使用LibSVM对其进行分类并获得结果。但我需要使用5x2交叉验证并获得ROC曲线下的区域。所以我保存了处理过的数据,打开Weka Experimenter,加载它,将其设置为2倍,5次迭代,然后将算法设置为libSVM。
当我进入RUN选项卡并按开始时,我收到以下错误:
18:31:18:开始
18:31:18:Class属性不是名义上的!
18:31:18:中断
18:31:18:有1个错误
我不知道为什么会这样,错误到底是什么,或者如何修复它。我谷歌这个错误,并没有引导我任何解决方案。我不知道应该从哪里开始解决这个问题。
我可以回到Explorer,重新加载该处理过的文件,并对其进行分类,没有任何问题,但我需要在Experimenter中进行。
答案 0 :(得分:6)
就我而言,文件中有名义属性。但是,Weka希望这些是最后的,因为它们表明了分配记录的类。以下是我重新排列数据的方式,以便标称值为最后一次:
像魅力一样。
答案 1 :(得分:2)
如果您的class属性为数字(如0,1),请将其更改为true
,false
这样的标称格式。
答案 2 :(得分:0)
StringToWordVector过滤器将class属性作为其输出的数据中的第一个属性。 Experimenter期望数据中的最后一个属性是类。您可以对过滤后的数据的属性进行重新排序,但最好(在将过滤器与分类器组合时通常的正确方法)是使用FilteredClassifier将基本分类器(LibSVM)与StringToWordVector过滤器封装在一起。这应该很好,因为class属性是原始" text",类数据中的最后一个属性。