Спасибо, наконец-то это сработало, и большое спасибо за то, что объяснили мне разницу между .fit_transform и .transform. Я пробовал это раньше, но это бросило меня сообщение об ошибке тогда.

е чем подать этот вопрос, я должен сказать, что я полностью прочитал более 15 похожих тем на этой доске, каждая из которых со своими рекомендациями, но все они просто не могли меня понять.

Итак, я разбил свои текстовые данные о «спаме» (первоначально в формате csv) на обучающие и тестовые наборы, используя CountVectorizer и его функцию «fit_transform» для подбора словаря корпуса и извлечения функций подсчета слов из текста. А затем я применил MultinomialNB (), чтобы учиться на тренировочном наборе и прогнозировать на тестовом наборе. Вот мой код (упрощенно):

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.cross_validation import train_test_split
from sklearn.naive_bayes import MultinomialNB

# loading data 
# data contains two columns ('text', 'target')

spam = pd.read_csv('spam.csv')
spam['target'] = np.where(spam_data['target']=='spam',1,0)

# split data
X_train, X_test, y_train, y_test = train_test_split(spam_data['text'], spam_data['target'], random_state=0) 

# fit vocabulary and extract word count features
cv = CountVectorizer()
X_traincv = cv.fit_transform(X_train)  
X_testcv = cv.fit_transform(X_test)

# learn and predict using MultinomialNB
clfNB = MultinomialNB(alpha=0.1)
clfNB.fit(X_traincv, y_train)

# so far so good, but when I predict on X_testcv
y_pred = algo.predict(X_testcv)

# Python throws me an error: dimension mismatch

Предложения, которые я почерпнул из предыдущих веток вопросов, заключаются в том, чтобы (1) использовать только .transform () в X_test или (2) установить, имеет ли каждая строка в исходных данных спама строковый формат (да, они есть), или (3) ничего не делать на X_test. Но все они не звонили, и Питон продолжал давать мне ошибку «несоответствия размеров». После 4 часов борьбы мне пришлось уступить Stackoverflow. Будет очень признателен, если кто-нибудь сможет просветить меня об этом. Просто хочу узнать, что не так с моим кодом и как правильно определить размер.

Спасибо.

Кстати, оригинальные записи данных выглядят так

_

                                         test   target
0 Go until jurong point, crazy.. Available only    0
1 Ok lar... Joking wif u oni...                    0
2 Free entry in 2 a wkly comp to win FA Cup fina   1
3 U dun say so early hor... U c already then say   0
4 Nah I don't think he goes to usf, he lives aro   0
5 FreeMsg Hey there darling it's been 3 week's n   1
6 WINNER!! As a valued network customer you have   1

Ответы на вопрос(1)

Ваш ответ на вопрос