Python機器學習 學習筆記與實踐
環境:win10 + Anaconda Python3.8
該篇總結各類監督學習演算法的實踐使用方法
樸素貝葉斯分類器
scikit-learn中實作了三種樸素貝葉斯分類器:
GaussianNB、BernoulliNB 和 MultinomialNB,
GaussianNB 可應用于任意連續資料;
BernoulliNB 假定輸入資料為二分類資料;
MultinomialNB 假定輸入資料為計數資料,
1、BernoulliNB的理解
BernoulliNB 分類器計算每個類別中每個特征不為 0 的元素個數,下面通過一個小例子理解:
import numpy as np
X=np.array([[0,1,0,1],[1,0,1,1],[0,0,0,1],[1,0,1,0]])
y=np.array([0,1,0,1])
# 對每個類別進行遍歷
# 計算(求和)每個特征中1的個數
counts = {}
for label in np.unique(y):
counts[label] = X[y == label].sum(axis=0)
print("Feature counts:\n{}".format(counts))
運行結果:

也就是說,類別為0的元素中,第一個特征不為0的元素有0個,第二個特征不為0的元素有1個…以此類推,
2、練習使用GaussianNB分類器:
from sklearn.naive_bayes import GaussianNB
import mglearn
import numpy as np
import matplotlib.pyplot as plt
#觀察資料
X, y = mglearn.datasets.make_forge()
print('The shape of X is : {}'.format(X.shape))
print('The shape of y is : {}'.format(y.shape))
mglearn.discrete_scatter(X[:, 0], X[:, 1], y)
plt.show()
#訓練模型,并給出預測的分類
cli = GaussianNB()
cli.fit(X,y)
test=np.array([[[8,0],[8,6],[11,1],[11,5]]])
for sample in test:
print(cli.predict(sample))
本例使用的資料集如下所示,每個樣本有兩個特征,一個為橫坐標,另一個為縱坐標:

運行結果:

可見,在代碼中我們使用[8,0],[8,6],[11,1],[11,5]四條樣本數據進行測驗,在圖中分別位于左下、左上、右下、右上,從預測結果看到,模型分類正確,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/237656.html
標籤:python
上一篇:通過Python來呼叫Chrom瀏覽器,進入設定網頁
下一篇:用Python爬取京東手機評論
