# -*- coding: utf-8 -*-
"""created on sun nov 25 10:55:17 2018
@author: muli
"""from sklearn import *****_bayes,datasets,cross_validation
def load_data():
'''載入用於分類問題的資料集。這裡使用 scikit-learn 自帶的 digits 資料集
:return: 乙個元組,用於分類問題。元組元素依次為:訓練樣本集、測試樣本集、訓練樣本集對應的標記、測試樣本集對應的標記
'''# 載入 scikit-learn 自帶的 digits 資料集
digits=datasets.load_digits()
#分層取樣拆分成訓練集和測試集,測試集大小為原始資料集大小的 1/4
return cross_validation.train_test_split(digits.data,digits.target,
test_size=0.25,random_state=0,stratify=digits.target)
def test_gaussiannb(*data):
'''測試 gaussiannb 的用法
:param data: 可變引數。
它是乙個元組,這裡要求其元素依次為:訓練樣本集、測試樣本集、訓練樣本的標記、測試樣本的標記
:return: none
'''x_train,x_test,y_train,y_test=data
cls=*****_bayes.gaussiannb()
cls.fit(x_train,y_train)
print('training score: %.2f' % cls.score(x_train,y_train))
print('testing score: %.2f' % cls.score(x_test, y_test))
print("--------------")
# print(x_test) # 列印訓練集
# print(np.shape(x_test)) # 訓練集維度(450, 64)
# 測試集對應的**概率
# predict_proba返回的是乙個 n 行 k 列的陣列,
# 第 i 行 第 j 列上的數值是模型** 第 i 個**樣本為某個標籤的概率,
# 並且每一行的概率和為1
print(cls.predict_proba(x_test))
if __name__=='__main__':
# 產生用於分類問題的資料集
x_train,x_test,y_train,y_test=load_data()
# 呼叫 test_gaussiannb
test_gaussiannb(x_train,x_test,y_train,y_test)
機器學習 樸素貝葉斯分類器
假設現在要構建乙個網路圖書館,我們可以給新進來的書貼上若干個標籤,沒有機器學習演算法的情況下,我們需要給這些書手動分類,是計算機類的呀,還是非計算機類的呀,是 類的呀,還是非 類的云云。那麼,我們可以通過讓程式自己學習如何通過一本書上的若干標籤來進行圖書類別的區分,這樣就可以節省很多人力,這也是機器...
機器學習筆記(6)貝葉斯分類器
一 貝葉斯分類器的訓練過程以及判斷過程都是一系列概率的乘積,這種方法主要關注的是做出決策的平均錯誤率,這對大多數的應用來說是合理的。但在一些特殊的應用中,不同型別的決策錯誤所要付出的代價和風險是不同的。癌症患者漏診為正常代價很大,可能延誤有效的 正常人誤診為癌症患者代價較小,通過後續檢查可以排除。解...
機器學習演算法 手撕樸素貝葉斯分類器
2019年攜程筆試的時候讓手寫樸素貝葉斯分類器,雖然清楚原理,但是沒上手實踐過,在考場上就發揮得很凌亂。樸素貝葉斯原理較為簡單,給定訓練資料後,直接計算先驗概率和條件概率 類別確定的情況下,某特徵取特定值的概率 然後把新的資料分給後驗概率最大的類。其中求條件概率時候,python中defaultdi...