複数ラベルのアウトオブコアテキスト分類子を作成しようとしています。 hereに記載されているように、バッチ内の(大規模な)テキストデータセットを読み込み、それらを部分的に分類器に適合させることが考えられる。さらに、hereで説明したマルチラベルのインスタンスを使用する場合は、データセットのクラス数として多数のバイナリクラシファイアをOne-Vs-All方式で作成することをお勧めします。テキストデータの複数ラベルアウトコア学習:部分一致のValueError
部分のフィッティングでMultiLabelBinarizerとsklearnのOneVsRestClassifierクラスを組み合わせる場合、私は次のエラーを取得する:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
コードは以下の通りです:
from sklearn.naive_bayes import MultinomialNB
from sklearn.feature_extraction.text import HashingVectorizer
from sklearn.preprocessing import MultiLabelBinarizer
from sklearn.multiclass import OneVsRestClassifier
categories = ['a', 'b', 'c']
X = ["This is a test", "This is another attempt", "And this is a test too!"]
Y = [['a', 'b'],['b'],['a','b']]
mlb = MultiLabelBinarizer(classes=categories)
vectorizer = HashingVectorizer(decode_error='ignore', n_features=2 ** 18, non_negative=True)
clf = OneVsRestClassifier(MultinomialNB(alpha=0.01))
X_train = vectorizer.fit_transform(X)
Y_train = mlb.fit_transform(Y)
clf.partial_fit(X_train, Y_train, classes=categories)
あなたはその最後の3行を想像することができます各ミニバッチに適用されます。そのコードは、わかりやすくするために削除したものです。
OneVsRestClassifierを削除してMultinomialNBのみを使用すると、コードは正しく動作します。
どうやら問題はパルティのでOneVsRestClassifieにありNaive Bayesのal fitは、そのタイプのカテゴリでもうまく機能します。私は今のところ、私は自分自身を対立させるべきだと思う。 – vkolias