我正在尝试与 GuassianNB 进行部分拟合,这是我的代码的一小段
classfier = GaussianNB()
classfier.fit(X_init, y_init)
for i in range(X_train.shape[0]):
if('some condition'):
classfier = GaussianNB()
classfier.partial_fit(X_train[i, :].reshape(1, -1), y_train[i].reshape(1, -1).ravel(), classes = np.unique(y_train))
else:
classfier.partial_fit(X_train[i, :].reshape(1, -1), y_train[i].reshape(1, -1).ravel())
一切正常,直到条件为真,似乎分类器出于某种原因停止学习并开始进行任意预测(预测全为零)
tn, fp, fn, tp = confusion_matrix(y_test, pred).ravel()
print(tn, fp, fn, tp)
>>> 1324 0 1031 0
我认为也许我的分类器在重新初始化它之后做出了预测(在循环结束之前满足条件)但是在我检查它之后,它在循环结束之前至少进行了 900 个部分拟合,同时带有 0 和 1 标签。
我很困惑,这是怎么回事?谢谢
编辑:我想出了什么问题
事实证明,问题在于我的数据集有很多特征(大约 40000,因为它最初是一串评论并用 tfidf 对其进行矢量化)并且由于某种原因导致 GaussianNB 分类器崩溃。我想知道为什么 GaussianNB 没有大量功能。如果有人知道,我将不胜感激。谢谢