【发布时间】:2021-10-07 05:37:57
【问题描述】:
我正在使用以下代码使用朴素贝叶斯预测 SMS 文本的输出
from sklearn.naive_bayes import MultinomialNB
mnb=MultinomialNB()
mnb.fit(X,Y)
X_test = np.array(['This is a sample sms'], dtype=object)
X_test_transformed = vec.transform(X_test)
X_test = X_transformed.toarray()
proba=mnb.predict_proba(X_test)
print(proba)
我在 X、Y 上使用 fit 函数训练模型。现在我想预测
SMS This is a sample sms 是否为垃圾邮件。我不确定我做错了什么
因为最后一行应该给我一个概率。但它给了我以下输出
enter image description here
[[9.99999987e-01 1.30424974e-08]
[9.99996703e-01 3.29712871e-06]
[1.15232279e-22 1.00000000e+00]
...
[9.62666043e-01 3.73339566e-02]
[9.99984562e-01 1.54382674e-05]
[9.66244280e-01 3.37557203e-02]]
【问题讨论】:
-
概率为1.0,因为已经观察到了测试数据。
-
未正确观察。我创建了一个新的
X_test,它是新数据。即使它是 0,我也不确定为什么它会返回二维矩阵而不是单个值 -
我在另一篇帖子stackoverflow.com/questions/36681449/… 中看到了类似的内容,它解释了一些但仍不完全清楚。我是否必须将第二列中的值相加?
-
注意:这是一个贝叶斯笑话。
标签: python scikit-learn naivebayes