Ваш вопрос не ясен на 100%, но позвольте мне объяснить.
Метод fit
для MultinomialNB
предполагает ввод x
и y
.Теперь x
должны быть векторами обучения (данные тренировки), а y
должны быть целевыми значениями.
clf = MultinomialNB().fit(X_train_tfidf, twenty_train.target)
Более подробно:
X : {array-like, sparse matrix}, shape = [n_samples, n_features]
Training vectors, where n_samples is the number of samples and n_features is
the number of features.
y : array-like, shape = [n_samples]
Target values.
Примечание. Убедитесь, что shape = [n_samples, n_features]
и shape = [n_samples]
из x
и y
определены правильно.В противном случае fit
выдаст ошибку.
Пример игрушки:
from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn import metrics
newsgroups_train = fetch_20newsgroups(subset='train')
categories = ['alt.atheism', 'talk.religion.misc',
'comp.graphics', 'sci.space']
newsgroups_train = fetch_20newsgroups(subset='train',
categories=categories)
vectorizer = TfidfVectorizer()
# the following will be the training data
vectors = vectorizer.fit_transform(newsgroups_train.data)
vectors.shape
newsgroups_test = fetch_20newsgroups(subset='test',
categories=categories)
# this is the test data
vectors_test = vectorizer.transform(newsgroups_test.data)
clf = MultinomialNB(alpha=.01)
# the fitting is done using the TRAINING data
# Check the shapes before fitting
vectors.shape
#(2034, 34118)
newsgroups_train.target.shape
#(2034,)
# fit the model using the TRAINING data
clf.fit(vectors, newsgroups_train.target)
# the PREDICTION is done using the TEST data
pred = clf.predict(vectors_test)
РЕДАКТИРОВАТЬ:
newsgroups_train.target
- это просто массив numpy
, который содержит labels (or targets or classes)
.
import numpy as np
newsgroups_train.target
array([1, 3, 2, ..., 1, 0, 1])
np.unique(newsgroups_train.target)
array([0, 1, 2, 3])
Так что в этом примере у нас есть 4 различных класса / цели.
Эта переменнаянеобходим для того, чтобы соответствовать классификатору.