8

7 つの異なるラベルを持つことができるターゲット変数を持つデータ セットがあります。トレーニング セットの各サンプルには、ターゲット変数のラベルが 1 つしかありません。

各サンプルについて、各ターゲット ラベルの確率を計算したいと考えています。したがって、私の予測は、各行の 7 つの確率で構成されます。

sklearn の Web サイトでマルチラベル分類について読みましたが、これは私が望んでいるものではないようです。

次のコードを試しましたが、サンプルごとに 1 つの分類しか得られません。

from sklearn.multiclass import OneVsRestClassifier
clf = OneVsRestClassifier(DecisionTreeClassifier())
clf.fit(X_train, y_train)
pred = clf.predict(X_test)

これについて誰かアドバイスはありますか?ありがとう!

4

3 に答える 3

17

を削除して のメソッドをOneVsRestClassifer使用するだけで、これを行うことができます。次のことができます。predict_probaDecisionTreeClassifier

clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)
pred = clf.predict_proba(X_test)

これにより、7 つの可能なクラスそれぞれの確率が得られます。

それが役立つことを願っています!

于 2016-07-16T09:05:00.657 に答える
3

マルチラベル分類を処理する sklearn の拡張であるscikit-multilearnを使用してみることができます。ラベルが過度に相関していない場合は、ラベルごとに 1 つの分類器をトレーニングして、すべての予測を取得できます - 試してください ( pip install scikit-multilearn の後):

from skmultilearn.problem_transform import BinaryRelevance    
classifier = BinaryRelevance(classifier = DecisionTreeClassifier())

# train
classifier.fit(X_train, y_train)

# predict
predictions = classifier.predict(X_test)

あなたの場合、予測にはサイズ(n_samples、n_labels)のスパース行列が含まれます-n_labels = 7、各列にはすべてのサンプルのラベルごとの予測が含まれます。

ラベルが相関している場合は、マルチラベル分類のためのより洗練された方法が必要になる場合があります。

免責事項: 私は scikit-multilearn の作成者です。お気軽に質問してください。

于 2016-07-16T17:23:44.900 に答える
2

の使用を主張する場合は、によってサポートされているため、 をOneVsRestClassifer呼び出すこともできます。predict_proba(X_test)OneVsRestClassifer

例:

from sklearn.multiclass import OneVsRestClassifier
clf = OneVsRestClassifier(DecisionTreeClassifier())
clf.fit(X_train, y_train)
pred = clf.predict_proba(X_test)

結果を取得するラベルの順序は次のとおりです。

clf.classes_
于 2020-04-30T17:39:10.237 に答える