ScikitMekawrapper公司:meka.分类器.多标签.元.CM

2024-05-15 09:59:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在使用scikit multilearn进行多标签分类。我必须使用 meka.分类器.多标签.CM作为meka\u分类器。
但是当我运行代码时,我会遇到不同的错误,我不明白为什么。。你知道吗

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(via wichcraft))都在工作。如果我用BR交换meka\u分类器,则所有工作正常。
运行代码后,我收到以下错误消息:

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,分类器对(相同)数据没有问题。
在Errormessage上面还有一个关于如何使用分类器的文本(选项)。所以我尝试了另一种方法:

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èu分类器的命令行就在那里,因为我以不同的方式尝试过它(从mekaèu分类器中排除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\*****\AppData\Local\Programs\Python\Python36\lib\site-packages\skmultilearn\ext\meka.py", line 314, in predict
self._parse_output()
File "D:\Users\*****\AppData\Local\Programs\Python\Python36\lib\site-packages\skmultilearn\ext\meka.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。我不知道现在该怎么办。。。我希望有人能帮忙。提前谢谢!你知道吗

致以最诚挚的问候

编辑:
在fit()之后,我让我打印meka.u垃圾场,使用我发布的第二个代码,它是空的!我已经和其他人测试过了,比如BR,它不是空的。所以我假设在创建分类器的过程中我做错了什么?你知道吗


Tags: coretest分类器错误cmjavatreesat
1条回答
网友
1楼 · 发布于 2024-05-15 09:59:31

错误weka.core.UnsupportedAttributeTypeException: weka.classifiers.trees.J48: Cannot handle numeric class!指出J48算法不能用于数值类。在这里,类是指您想要学习的输出,而不是学习时使用的属性。J48可以使用数值属性,但不能预测数值类。你知道吗

您无法预测J48中的数值(例如,将温度预测为整数),只能使用J48预测标称类型(例如冷/中性/热)。你知道吗

为了使用J48,您需要将类更改为nominal。你知道吗

相关问题 更多 >