我目前正在使用Scikit-MultiLearn进行多标签分类。我必须使用 meka.classifiers.multilabel.cm 作为meka_classifier。
但是当我运行代码时,我会遇到不同的错误,我不明白为什么。
meka = Meka(
meka_classifier="meka.classifiers.multilabel.meta.CM",
weka_classifier = "weka.classifiers.trees.J48",
meka_classpath = meka_classpath#, #obtained via download_meka
)
print("Fit")
meka.fit(X_train, y_train)
我不得不说,traningsdata和路径(weka& java(通过Wichcraft))都在起作用。如果我将MEKA_CLASSIFIER与BR All Works交换。
运行代码后,我会收到以下错误消息:
weka.core.UnsupportedAttributeTypeException: weka.classifiers.trees.J48: Cannot handle numeric class!
at weka.core.Capabilities.test(Capabilities.java:1067)
at weka.core.Capabilities.test(Capabilities.java:1256)
at weka.core.Capabilities.test(Capabilities.java:1138)
at weka.core.Capabilities.testWithFail(Capabilities.java:1468)
at weka.classifiers.trees.J48.buildClassifier(J48.java:277)
at meka.classifiers.multilabel.meta.CM.buildClassifier(CM.java:50)
at meka.classifiers.multilabel.Evaluation.runExperiment(Evaluation.java:229)
at meka.classifiers.multilabel.ProblemTransformationMethod.runClassifier(ProblemTransformationMethod.java:172)
at meka.classifiers.multilabel.ProblemTransformationMethod.evaluation(ProblemTransformationMethod.java:152)
at meka.classifiers.multilabel.meta.CM.main(CM.java:83)
很奇怪,它说他无法处理数字值,因为如果我更改为br,分类器对(相同)数据没有问题。
在错误的上方,还有一个有关如何使用分类器(选项)的文本。所以我以另一种方式尝试了它:
meka = Meka(
meka_classifier = "meka.classifiers.multilabel.meta.CM -I 10 -W meka.classifiers.multilabel.CC - -S 0 -W weka.classifiers.trees.J48",
#weka_classifier = "weka.classifiers.trees.J48",
meka_classpath = meka_classpath#, #obtained via download_meka
)
print("Fit Data")
meka.fit(X_train, y_train)
print("Predict")
prediction = meka.predict(x_test)
有WEKA_CLASSIFIER的命令行在那里,因为我以不同的方式尝试了它(从MEKA_CLASSIFIER中排除J48并将其包含在其中)。无论如何,我总是遇到相同的错误:
Traceback (most recent call last):
File "C:/Users/*****/Desktop/MachineLearningClassifier/blabla.py", line 72, in <module>
prediction = meka.predict(x_test)
File "D:Users*****AppDataLocalProgramsPythonPython36libsite-packagesskmultilearnextmeka.py", line 314, in predict
self._parse_output()
File "D:Users*****AppDataLocalProgramsPythonPython36libsite-packagesskmultilearnextmeka.py", line 374, in _parse_output
predictions = self.output_.split(predictions_split_head)[1].split(
IndexError: list index out of range
我已经搜索了此错误,并且在那里安装了Arff而不是LIAC-ARFF的人,但是这里并非如此。是的,就像我说的那样,如果我更改为br或其他东西。它只是不适用于CM。我不知道现在该怎么办...希望有人能提供帮助。预先感谢!
最好的问候
编辑:
拟合后()我让我打印 meka.classifier_dump ,然后使用我发布的第二个代码,它是空的!我已经与其他人这样的其他人进行了测试,那里并不空。因此,我认为我在分类器的创建中做错了什么?
错误weka.core.UnsupportedAttributeTypeException: weka.classifiers.trees.J48: Cannot handle numeric class!
指出J48算法不能在数字类上使用。这里的课程是指您要学习的输出,而不是学习时使用的属性。J48可以使用数字属性,但无法预测数字类。
您无法预测J48中的数值(例如预测温度为整数),您只能用J48预测名义类型(例如冷/中性/热之一)。
要使用J48,您需要将类更改为名义。