0
在下面的代碼中,數據是一個句子列表,而「y」列(data.metagroup)是一個類列表 - 一個直接的分類問題。MultisomialNB分類器中partial_fit的錯誤
問題:
我想用partial_fit
與MultinomialNB分類。
基礎上的文檔,我傳遞一個稀疏向量X
(稱爲xtrain
),爲y
簡單的串聯(稱爲ytrain
),以及用於np.array
其classes
是所有可能的類的列表。
目標是最終使用xtrain
和ytrain
的子集,但我必須先讓它工作。
我得到的錯誤是:
ValueError: operands could not be broadcast together with shapes
(42633,3809) (800,3809) (42633,3809)
希望得到任何見解。
def make_xy(data):
vectorizer = CountVectorizer(ngram_range = (1,3), min_df = 3, stop_words='english')
X = vectorizer.fit_transform(data.sentences)
y = data.metagroup
return X, y, vectorizer
x, y, vv = make_xy(data)
xtrain, xtest, ytrain, ytest = train_test_split(x, y, test_size=0.30)
clf = MultinomialNB(alpha=1)
clf.partial_fit(xtrain, ytrain, classes=np.array(y), sample_weight=None)
predictions = clf.predict(xtest)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-25-cc08c1d170fd> in <module>()
48 clf = MultinomialNB(alpha=1)
---> 50 clf.partial_fit(xtrain, ytrain, classes=np.array(y), sample_weight=None)
/usr/local/lib/python2.7/site-packages/sklearn/naive_bayes.pyc in partial_fit(self, X, y, classes, sample_weight)
530 # Count raw events from data before updating the class log prior
531 # and feature log probas
--> 532 self._count(X, Y)
533
534 # XXX: OPTIM: we could introduce a public finalization method to
/usr/local/lib/python2.7/site-packages/sklearn/naive_bayes.pyc in _count(self, X, Y)
689 if np.any((X.data if issparse(X) else X) < 0):
690 raise ValueError("Input X must be non-negative")
--> 691 self.feature_count_ += safe_sparse_dot(Y.T, X)
692 self.class_count_ += Y.sum(axis=0)
693
ValueError: operands could not be broadcast together with shapes
添加完整的代碼和數據 – sera
老實說,它只是在「元組」列中的數值類句子列表 - 一個兩列熊貓數據框。代碼中沒有其他內容,但是從csv中提取數據等。這是一切相關的。謝謝。 – paszoon
重現錯誤的唯一方法是獲取數據。如果你不能修改數據,請添加一些導致相同錯誤的人爲數據。 – sera