首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Scikit-multilearn -包装器: meka.classifiers.multilable.meta.CM

Scikit-multilearn -包装器: meka.classifiers.multilable.meta.CM
EN

Stack Overflow用户
提问于 2019-03-19 12:18:15
回答 1查看 238关注 0票数 0

我目前正在使用scikit-multilearn进行多标签分类。我必须使用meka.classifiers.multilabel.CM作为meka_classifier。

但是当我运行我的代码时,我会发现不同的错误,我不明白为什么..。

代码语言:javascript
运行
复制
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)

我不得不说,传输数据和路径(Weka &Java(通过wichcraft))都在工作。如果我将meka_classifier与BR交换,那么所有操作都可以。

运行代码后,我得到以下错误消息:

代码语言:javascript
运行
复制
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,分类器对(相同的)数据没有问题。

在错误消息的上方还有一个关于如何使用分类器(选项)的文本。所以我尝试了另一种方法:

代码语言:javascript
运行
复制
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的命令行,因为我尝试了不同的方法(将J48排除在meka_classifier之外,并将其包含在其中)。总之,我总是会犯同样的错误:

代码语言:javascript
运行
复制
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.classifier_dump,使用我发布的第二个代码,它是空的!我已经和其他人测试过了,比如BR,但它并不是空的。所以我想我在创造分类器的时候做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2019-03-21 11:09:31

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

不能预测J48中的数值(例如,将温度预测为整数),只能用J48 (例如冷/中性/热)预测标称类型。

为了使用J48,需要将类更改为标称。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55240922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档