0

現在、マルチラベル分類に scikit-multilearn を使用しています。meka_classifierとして meka.classifiers.multilabel.CMを使用する 必要があります。
しかし、コードを実行すると、さまざまなエラーが発生し、その理由がわかりません..

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 に交換すると、すべて動作します。
コードを実行すると、次のエラー メッセージが表示されます。

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\*****\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

私はこのエラーを検索し、liac-arff の代わりに arff をインストールした人を探しましたが、ここではそうではありません。そして、ええ、私が言ったように、私がBRか何かに変更すれば、すべてうまくいきます. CMだけじゃつまらない。私は今何をすべきかわからない...誰かが助けてくれることを願っています。前もって感謝します!

よろしくお願いします

編集:
fit() の後、私は meka.classifier_dumpを印刷させました。投稿した2番目のコードを使用すると、空です! 私はBRのような他のものでこれをテストしましたが、空ではありません。それで、分類器の作成で何か間違ったことをしていると思いますか?

4

1 に答える 1