朴素贝叶斯
"""
朴素贝叶斯
"""
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()
生成随机数据
from sklearn.datasets import make_blobs
#make_blobs为聚类产生数据集
# n_samples:样本点数,
# n_features:数据的维度
# centers:产生数据的中心点,默认值3
# cluster_std:数据集的标准差,浮点数或者浮点数序列,默认值1.0
# random_state:随机种子
X, y = make_blobs(n_samples=100,n_features=2,centers=2,random_state=2,cluster_std=1.5)
plt.scatter(X[:, 0], X[:, 1], c=y, s=50, cmap='RdBu')
plt.show()
sklearn Bayes训练
from sklearn.naive_bayes import GaussianNB
model = GaussianNB()
model.fit(X, y)
rng = np.random.RandomState(0)
X_test = [-6, -14] + [14, 18] * rng.rand(2000, 2)
y_pred = model.predict(X_test)
plt.scatter(X[:, 0], X[:, 1], c=y, s=50, cmap='RdBu')
lim = plt.axis()
plt.scatter(X_test[:, 0], X_test[:, 1], c=y_pred, s=20, cmap='RdBu', alpha=0.1)
plt.axis(lim)
plt.show()
yprob = model.predict_proba(X_test)
#model.predict_proba(x)不同于model.predict(),它返回的预测值为获得所有结果的概率。
# yprob[-8:].round(2)
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]]
https://github.com/datawhalechina/machine-learning-toy-code/blob/main/ml-with-sklearn/Bayes/NBayes.ipynb