这本Naive Bayes代码来自教科书代表什么?

问题描述 投票:0回答:2

我现在正在从教科书(link)学习数据科学,但我不太明白代码试图说明的内容。

该代码显示了Naive Bayes的工作原理,但该书并没有说明发生了什么,也没有解释清楚。我不理解的部分是最后一部分。打印结果代表什么?这似乎是概率,但我不太明白如何看待这个。

为什么选择最后8个概率?这有什么理由吗?

我稍微更改了代码以在Spyder上使用它,因此它与链接不同。

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()

from sklearn.datasets import make_blobs
x, y = make_blobs(100, 2, centers=2, random_state=2, cluster_std=1.5)
plt.scatter(x[:, 0], x[:, 1], c=y, s=50, cmap='RdBu')

from sklearn.naive_bayes import GaussianNB
model = GaussianNB()
model.fit(x, y)

rng = np.random.RandomState(0)
xnew = [-6, -14] + [14, 18] * rng.rand(2000, 2)
ynew = model.predict(xnew)

plt.scatter(x[:, 0], x[:, 1], c=y, s=50, cmap='RdBu')
lim = plt.axis()

plt.scatter(xnew[:, 0], xnew[:, 1], c=ynew, s=20, cmap='RdBu', alpha=0.1)
plt.axis(lim)

yprob = model.predict_proba(xnew)
print(yprob[-8:].round(2))

打印结果是:

[[0.89 0.11]
 [1.   0.  ]
 [1.   0.  ]
 [1.   0.  ]
 [1.   0.  ]
 [1.   0.  ]
 [0.   1.  ]
 [0.15 0.85]]

有帮助吗?

python naivebayes
2个回答
1
投票

训练模型的全部意义在于,对于给定的x值,将y (yprob)的可能分类预测为两个类别中的一个。

首先,你用model.fit(x, y)训练你生成的模型。

然后使用此模型,您可以使用model.predict_proba(xnew)预测y的类。

在这里,您可以预测y落入2000个随机生成的x值的两个类(binary classification)之一的概率。在现实世界中,x来自真实数据源。

该行只打印y的最后8个值的y类概率。

print(yprob[-8:].round(2))

请注意,每个输出都是一个2项列表 - 例如 - 第一个输出是[0.89 0.11]。这意味着对于x的给定值,它属于第一类的概率是89%,而属于第二类的概率只有11% - 两个概率加起来都是100%


1
投票

代码工作流程是

  1. 使用数据集训练模型(高斯朴素贝叶斯)
  2. 预测y落入2000个随机x值的概率(使用训练模型估计最大似然)

所有的情节和印刷品都只是用于可视化。它简单地表示y落入每个事件的A类和B类(步骤2的结果)的概率。

© www.soinside.com 2019 - 2024. All rights reserved.