1. 程式人生 > 實用技巧 >高斯模型

高斯模型

一、高斯分佈

1.概念

高斯分佈,也叫正態分佈,是一種連續型變數的概率分佈。
(1)正態分佈:就是正常形態的分佈,符合自然規律。例如體重、身高、收入等都符合正態分佈,大部分處於中等水平,特別少和特別多的比例都比較低;
(2)連續型變數的概率分佈:例如拋10次硬幣,正面加一分,反面扣一分;最終結果-10分和10分的概率比較低,0分的概率比較高。可以說該事件發生的概率出現了正態分佈。

2.公式

假設P(Xj=xj|Y=Ck)服從高斯分佈:每個特徵Xj分到每個類別Ck的條件概率

其中:
(1)Ck為Y的第k類類別
(2)μk和(σk)^2為需要從訓練集估計的值
(3)exp表示e的某次方

3.例子

from sklearn import datasets # 匯入sklearn模組中的資料集
iris = datasets.load_iris()#匯入鳶尾花資料
from sklearn.naive_bayes import GaussianNB#匯入樸素貝葉斯模組下的高斯貝葉斯函式
gnb = GaussianNB()
y_pred = gnb.fit(iris.data, iris.target).predict(iris.data)
print("Number of mislabeled points out of a total %d points : %d"  % (iris.data.shape[0],(iris.target != y_pred).sum()))
print(iris.data.shape)#資料集的行數、列數
print(y_pred)#fit資料擬合後,predict預測結果
print(iris.target )#儲存了資料集中每條記錄屬於哪一鳶尾植物,target為分類標籤,與data中的資料相對應

(1)在Sklearn機器學習包中,集成了各種各樣的資料集,包括糖尿病資料集、手寫數字資料集、乳腺癌資料集、體能訓練資料集等。
這裡引入的是鳶尾花卉(Iris)資料集,它是很常用的一個數據集。鳶尾花有三個亞屬,分別是山鳶尾(Iris-setosa)、變色鳶尾(Iris-versicolor)和維吉尼亞鳶尾(Iris-virginica)。
該資料集一共包含4個特徵變數,1個類別變數。共有150個樣本,iris是鳶尾植物,這裡儲存了其萼片和花瓣的長寬,共4個屬性,鳶尾植物分三類。如下表所示:

(2)iris裡有兩個屬性iris.data,iris.target。

data是一個矩陣,每一列代表了萼片或花瓣的長寬,一共4列,每一列代表某個被測量的鳶尾植物,一共取樣了150條記錄。

target是一個數組,儲存了data中每條記錄屬於哪一類鳶尾植物,所以陣列的長度是150,陣列元素的值因為共有3類鳶尾植物,所以不同值只有3個。種類為山鳶尾、雜色鳶尾、維吉尼亞鳶尾。target為分類標籤,與data中的資料相對應。

print(iris.data)
print(iris.target )

(3)在使用GaussianNB的fit方法擬合數據後,我們可以進行預測。此時預測有三種方法,包括predict,predict_log_proba和predict_proba。

predict是訓練後返回預測結果,是標籤值:預測每條記錄屬於哪一類別的結果,例如上表中鳶尾花標籤class值。

print(gnb.fit(iris.data, iris.target).predict(iris.data))

predict_proba則不同,它會給出測試集樣本在各個類別上預測的概率。返回的是一個 n 行 k 列的陣列, 第 i 行 第 j 列上的數值是模型預測 第 i 個預測樣本為某個標籤的概率,並且每一行的概率和為1。

print(gnb.fit(iris.data, iris.target).predict_proba(iris.data))

predict_log_proba和predict_proba類似,它會給出測試集樣本在各個類別上預測的概率的一個對數轉化。

print(gnb.fit(iris.data, iris.target).predict_log_proba(iris.data))

參考:
12