复现经典:《统计学习方法》第 4 章 朴素贝叶斯
本文是李航老師的《統(tǒng)計(jì)學(xué)習(xí)方法》[1]一書的代碼復(fù)現(xiàn)。
作者:黃海廣[2]
備注:代碼都可以在github[3]中下載。
我將陸續(xù)將代碼發(fā)布在公眾號(hào)“機(jī)器學(xué)習(xí)初學(xué)者”,敬請(qǐng)關(guān)注。
代碼目錄
第 1 章 統(tǒng)計(jì)學(xué)習(xí)方法概論
第 2 章 感知機(jī)
第 3 章 k 近鄰法
第 4 章 樸素貝葉斯
第 5 章 決策樹
第 6 章 邏輯斯諦回歸
第 7 章 支持向量機(jī)
第 8 章 提升方法
第 9 章 EM 算法及其推廣
第 10 章 隱馬爾可夫模型
第 11 章 條件隨機(jī)場(chǎng)
第 12 章 監(jiān)督學(xué)習(xí)方法總結(jié)
代碼參考:wzyonggege[4],WenDesi[5],火燙火燙的[6]
第 4 章 樸素貝葉斯
1.樸素貝葉斯法是典型的生成學(xué)習(xí)方法。生成方法由訓(xùn)練數(shù)據(jù)學(xué)習(xí)聯(lián)合概率分布?,然后求得后驗(yàn)概率分布。具體來(lái)說(shuō),利用訓(xùn)練數(shù)據(jù)學(xué)習(xí)和的估計(jì),得到聯(lián)合概率分布:
=
概率估計(jì)方法可以是極大似然估計(jì)或貝葉斯估計(jì)。
2.樸素貝葉斯法的基本假設(shè)是條件獨(dú)立性,
這是一個(gè)較強(qiáng)的假設(shè)。由于這一假設(shè),模型包含的條件概率的數(shù)量大為減少,樸素貝葉斯法的學(xué)習(xí)與預(yù)測(cè)大為簡(jiǎn)化。因而樸素貝葉斯法高效,且易于實(shí)現(xiàn)。其缺點(diǎn)是分類的性能不一定很高。
3.樸素貝葉斯法利用貝葉斯定理與學(xué)到的聯(lián)合概率模型進(jìn)行分類預(yù)測(cè)。
將輸入分到后驗(yàn)概率最大的類。
后驗(yàn)概率最大等價(jià)于 0-1 損失函數(shù)時(shí)的期望風(fēng)險(xiǎn)最小化。
模型:
高斯模型
多項(xiàng)式模型
伯努利模型
參考:https://machinelearningmastery.com/naive-bayes-classifier-scratch-python/
GaussianNB 高斯樸素貝葉斯
特征的可能性被假設(shè)為高斯
概率密度函數(shù):
數(shù)學(xué)期望(mean):
方差:
class NaiveBayes:def __init__(self):self.model = None# 數(shù)學(xué)期望@staticmethoddef mean(X):return sum(X) / float(len(X))# 標(biāo)準(zhǔn)差(方差)def stdev(self, X):avg = self.mean(X)return math.sqrt(sum([pow(x - avg, 2) for x in X]) / float(len(X)))# 概率密度函數(shù)def gaussian_probability(self, x, mean, stdev):exponent = math.exp(-(math.pow(x - mean, 2) /(2 * math.pow(stdev, 2))))return (1 / (math.sqrt(2 * math.pi) * stdev)) * exponent# 處理X_traindef summarize(self, train_data):summaries = [(self.mean(i), self.stdev(i)) for i in zip(*train_data)]return summaries# 分類別求出數(shù)學(xué)期望和標(biāo)準(zhǔn)差def fit(self, X, y):labels = list(set(y))data = {label: [] for label in labels}for f, label in zip(X, y):data[label].append(f)self.model = {label: self.summarize(value)for label, value in data.items()}return 'gaussianNB train done!'# 計(jì)算概率def calculate_probabilities(self, input_data):# summaries:{0.0: [(5.0, 0.37),(3.42, 0.40)], 1.0: [(5.8, 0.449),(2.7, 0.27)]}# input_data:[1.1, 2.2]probabilities = {}for label, value in self.model.items():probabilities[label] = 1for i in range(len(value)):mean, stdev = value[i]probabilities[label] *= self.gaussian_probability(input_data[i], mean, stdev)return probabilities# 類別def predict(self, X_test):# {0.0: 2.9680340789325763e-27, 1.0: 3.5749783019849535e-26}label = sorted(self.calculate_probabilities(X_test).items(),key=lambda x: x[-1])[-1][0]return labeldef score(self, X_test, y_test):right = 0for X, y in zip(X_test, y_test):label = self.predict(X)if label == y:right += 1return right / float(len(X_test)) model = NaiveBayes() model.fit(X_train, y_train) 'gaussianNB train done!' print(model.predict([4.4, 3.2, 1.3, 0.2])) 0.0 model.score(X_test, y_test) 1.0scikit-learn 實(shí)例
from sklearn.naive_bayes import GaussianNB clf = GaussianNB() clf.fit(X_train, y_train) GaussianNB(priors=None, var_smoothing=1e-09) clf.score(X_test, y_test) 1.0 clf.predict([[4.4, 3.2, 1.3, 0.2]]) array([0.])參考資料
[1] 《統(tǒng)計(jì)學(xué)習(xí)方法》:?https://baike.baidu.com/item/統(tǒng)計(jì)學(xué)習(xí)方法/10430179
[2] 黃海廣:?https://github.com/fengdu78
[3] github:?https://github.com/fengdu78/lihang-code
[4] wzyonggege:?https://github.com/wzyonggege/statistical-learning-method
[5] WenDesi:?https://github.com/WenDesi/lihang_book_algorithm
[6] 火燙火燙的:?https://blog.csdn.net/tudaodiaozhale
關(guān)于本站
“機(jī)器學(xué)習(xí)初學(xué)者”公眾號(hào)由是黃海廣博士創(chuàng)建,黃博個(gè)人知乎粉絲23000+,github排名全球前100名(33000+)。本公眾號(hào)致力于人工智能方向的科普性文章,為初學(xué)者提供學(xué)習(xí)路線和基礎(chǔ)資料。原創(chuàng)作品有:吳恩達(dá)機(jī)器學(xué)習(xí)個(gè)人筆記、吳恩達(dá)深度學(xué)習(xí)筆記等。
往期精彩回顧
那些年做的學(xué)術(shù)公益-你不是一個(gè)人在戰(zhàn)斗
適合初學(xué)者入門人工智能的路線及資料下載
吳恩達(dá)機(jī)器學(xué)習(xí)課程筆記及資源(github標(biāo)星12000+,提供百度云鏡像)
吳恩達(dá)深度學(xué)習(xí)筆記及視頻等資源(github標(biāo)星8500+,提供百度云鏡像)
《統(tǒng)計(jì)學(xué)習(xí)方法》的python代碼實(shí)現(xiàn)(github標(biāo)星7200+)
機(jī)器學(xué)習(xí)的數(shù)學(xué)精華(在線閱讀版)
備注:加入本站微信群或者qq群,請(qǐng)回復(fù)“加群”
總結(jié)
以上是生活随笔為你收集整理的复现经典:《统计学习方法》第 4 章 朴素贝叶斯的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 复现经典:《统计学习方法》第1章 统计学
- 下一篇: 复现经典:《统计学习方法》第 12 章