【发布时间】:2021-07-08 14:50:12
【问题描述】:
我正在尝试做一个 MultinomialNB()。我有一个 csv,我读入数据框(数据)并对数据进行了一些标记化和词形还原,以便获得最常用的单词。该模型的代码是这样的:
max_features = 5000
count_vectorizer = CountVectorizer(max_features=max_features , stop_words= "english")
sparce_matrix = count_vectorizer.fit_transform(Tweet_list).toarray()
y = data.iloc[:,0].values
x = sparce_matrix
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x,y, test_size = 0.1)
from sklearn.naive_bayes import MultinomialNB
Mn = MultinomialNB()
Mn.fit(x_train, y_train)
y_pred = Mn.predict(x_test)
print("Accuracy: ", Mn.score(y_pred.reshape(-1,1),y_test))
当我打印变量的大小时:
print(y.size)
print(x.size)
print(x_train.size)
print(y_train.size)
print(x_test.size)
print("y test", y_test.size)
print("y pred", y_pred.size)
我明白了:
86460
432300000
389070000
77814
43230000
y test 8646
y pred 8646
但是模型因 ValueError 失败:形状 (8646,1) 和 (5000,2) 未对齐:1 (dim 1) != 5000 (dim 0)。
据我了解,问题出在计算中的某个地方,它在某些 np.dot(a, b) 失败的方法后面。它以某种方式使用最大特征向量 (5000) 大小的向量计算 y_pred 或 y_test (8646)。那是值 5000 出现的唯一地方。
【问题讨论】:
-
你能打印出形状而不是大小吗?另外,错误发生在哪一行?
-
y (86460,) x (86460, 5000) x_train (77814, 5000) y_train (77814,) x_test (8646, 5000) y_test (8646,) y_pred (8646,) 这些是形状.错误也出现在最后一行 print("Accuracy: ", Mn.score(y_pred.reshape(-1,1),y_test))
标签: python machine-learning nlp naivebayes multinomial