如何使用伯努林?

2024-05-29 09:47:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用伯努林。使用相同的数据进行训练和测试,我得到的预测值不是训练数据,概率不是1。为什么这么说?在

import pandas as pd
from sklearn.naive_bayes import BernoulliNB
BNB = BernoulliNB()

# Data
df_1 = pd.DataFrame({'O' : [1,2,3,1,1,3,1,2,2,1],
                     'I1': [1,0,0,1,0,0,1,1,0,1],
                     'I2': [0,0,1,0,0,1,0,0,1,0],
                     'I3': [1,0,0,0,0,0,1,0,0,0]})

df_I = df_1.iloc[:,1:4]
S_O  = df_1['O']

# Bernoulli Naive Bayes Classifier
A_F = BNB.fit(df_I, S_O)
A_P = BNB.predict(df_I)
A_R = BNB.predict_proba(df_I)

df_P = pd.DataFrame(A_P)
df_R = pd.DataFrame(A_R)

df_P.columns = ['Predicted A']
df_R.columns = ['Prob 1', 'Prob 2', 'Prob 3']

df_1 = df_1.join(df_P)
df_1 = df_1.join(df_R)

结果

^{pr2}$

我试着在这里描述我要做的事情:

https://stats.stackexchange.com/questions/367829/how-probable-is-a-set


Tags: columns数据importdataframepandasdfas概率
1条回答
网友
1楼 · 发布于 2024-05-29 09:47:53

它工作正常,您使用正确(代码方面)。Predicted A是预测的类标签。{{cd2>中的值总是由

对于概率,不能保证它们是=1,事实上它们几乎永远不会。在

我想你的困惑是因为你给it提供了已知的培训数据,但结果却不一样?我猜你的训练数据在这里太小了,所以有点不对劲。给它更多的数据将提高它在这个已知的训练集的准确性。在

我会注意到,您真正想要的是向它提供一个大型的已知训练集,然后预测未知的测试数据集。我也许可以详细了解原因,但我建议您阅读关于分类器的教程(scikit文档不错,但任何教程都应该涵盖这一点)。在

代码方面,我觉得一切都很好。在

相关问题 更多 >

    热门问题