我现在正在从教科书(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]]
有帮助吗?
训练模型的全部意义在于,对于给定的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%
代码工作流程是
所有的情节和印刷品都只是用于可视化。它简单地表示y落入每个事件的A类和B类(步骤2的结果)的概率。