Множество функций в качестве входных данных для прогноза анализа текста ML NLP - PullRequest
1 голос
/ 21 апреля 2020

У меня 8 входных и 1 выходной столбец для прогнозирования. При попытке установить countvectorizer и tfidf я получаю

ValueError: Found input variables with inconsistent numbers of samples: [7, 23752]

Но X_train.shape и X.shape правильно, тогда когда я применяю fit_transform, почему я получаю эту ошибку?

Код

X_train, X_test, y_train, y_test = train_test_split(df[['A','B','C',
                                                   'D','E','F',
                                                   'G']], df.final, test_size=0.2, 
random_state = 42)
from sklearn.naive_bayes import MultinomialNB
from sklearn.pipeline import Pipeline
from sklearn.feature_extraction.text import TfidfTransformer

nb = Pipeline([('vect', CountVectorizer()),
           ('tfidf', TfidfTransformer()),
           ('clf', MultinomialNB()),
          ])
nb.fit(X_train, y_train)

Notebook_Code_Image

1 Ответ

0 голосов
/ 21 апреля 2020

CountVectorizer применяется к строке, а не к NumPy массивам.

https://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.CountVectorizer.html

TfidfTransformer будет работать с матрицей счета CountVectorizer, поэтому ваш конвейер не ' Не имеет смысла, вы также пропускаете параметры.

Поскольку у вас уже есть представление массива numpy, просто установите классификатор NB напрямую.

X_train, X_test, y_train, y_test = train_test_split(df[['A','B','C',
                                                   'D','E','F',
                                                   'G']], df.final, test_size=0.2, 
random_state = 42)

from sklearn.naive_bayes import MultinomialNB
clf = MultinomialNB()
clf.fit(X_train, y_train)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...