0
以下の例のように、ドキュメントごとに単一のラベルを持つデータセットがあります。単一ラベルデータセットからの複数ラベルテキスト分類
label text
pay "i will pay now"
finance "are you the finance guy?"
law "lawyers and law"
court "was at the court today"
finance report "bank reported annual share.."
テキスト文書に複数のラベルを付けることができるため、このデータセットで複数ラベルの分類を行うにはどうすればよいですか? sklearn
から多くのドキュメントを読んだことがありますが、単一ラベルのデータセットで複数ラベルの分類を行う正しい方法を見つけることができません。助けを前にありがとう。
import numpy as np
import pandas as pd
from sklearn.pipeline import Pipeline
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.svm import LinearSVC
from sklearn.linear_model import SGDClassifier
from sklearn.naive_bayes import MultinomialNB
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.multiclass import OneVsRestClassifier
from sklearn.metrics import accuracy_score
from sklearn.cross_validation import train_test_split
from sklearn.preprocessing import MultiLabelBinarizer
from sklearn import preprocessing
loc = r'C:\Users\..\Downloads\excel.xlsx'
df = pd.read_excel(loc)
X = np.array(df.docs)
z = np.array(df.title)
y = np.array(df.raw)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33,
random_state=42)
mlb = preprocessing.MultiLabelBinarizer()
Y = mlb.fit_transform(y_train)
Y_test = mlb.fit_transform(y_test)
classifier = Pipeline([
('vectorizer', CountVectorizer()),
('tfidf', TfidfTransformer()),
('clf', OneVsRestClassifier(LinearSVC()))])
classifier.fit(X_train, Y)
predicted = classifier.predict(X_test)
doc_new = np.array(['X has announced that it will sell $587 million'])
print("Accuracy Score: ", accuracy_score(Y_test, predicted))
print(mlb.inverse_transform(classifier.predict(doc_new)))
をしかし、私は次元のエラーを取得しておく:
.format(len(self.classes_), yt.shape[1]))ValueError: Expected indicator for 44 classes, but got 46