[scikit-learn 机器学习] 7. 朴素贝叶斯
生活随笔
收集整理的這篇文章主要介紹了
[scikit-learn 机器学习] 7. 朴素贝叶斯
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1. 樸素貝葉斯
- 2. NB 與 邏輯回歸對比
本文為 scikit-learn機器學習(第2版)學習筆記
相關知識參考:《統計學習方法》樸素貝葉斯法(Naive Bayes,NB)
1. 樸素貝葉斯
通過最大概率來預測類:
y=arg?max?ckP(Y=ck)∏jP(X(j)=x(j)∣Y=ck)\color{red} y=\argmax\limits_{c_k} P(Y=c_k) \prod\limits_{j} P(X^{(j)}=x^{(j)}|Y=c_k)y=ck?argmax?P(Y=ck?)j∏?P(X(j)=x(j)∣Y=ck?)
模型假設:
-
樣本獨立同分布;
-
條件獨立性 :X(j)X^{(j)}X(j) 之間條件獨立
P(X=x∣Y=ck)=P(X(1)=x(1),...,X(n)=x(n)∣Y=ck)=∏j=1nP(X(j)=x(j)∣Y=ck)P(X=x|Y=c_k)=P(X^{(1)}=x^{(1)},...,X^{(n)}=x^{(n)}|Y=c_k)=\prod_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k)P(X=x∣Y=ck?)=P(X(1)=x(1),...,X(n)=x(n)∣Y=ck?)=∏j=1n?P(X(j)=x(j)∣Y=ck?)
模型變體:
- 多項式NB:適合于類別特征
- 高斯NB:適合連續特征,假設每個特征對每個類都符合正態分布
- 伯努利NB:適合所有特征為二元值的情況
樸素貝葉斯的假設很少為真,但是NB模型可以有效地判別線性可分類
- 當訓練數據缺乏時,性能通常優于判別模型
- 模型簡單,運行速度快,易于實現
2. NB 與 邏輯回歸對比
%matplotlib inline import pandas as pd from sklearn.datasets import load_breast_cancer from sklearn.linear_model import LogisticRegression from sklearn.naive_bayes import GaussianNB from sklearn.model_selection import train_test_split import matplotlib.pyplot as pltX, y = load_breast_cancer(return_X_y=True) X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, random_state=11) # stratify=y, 對標簽進行分層抽樣,確保數據集之間的樣本占比一致lr = LogisticRegression() nb = GaussianNB()lr_scores = [] nb_scores = []train_sizes = range(10, len(X_train), 10)for train_size in train_sizes:X_slice, _, y_slice, _ = train_test_split(X_train, y_train, train_size=train_size, stratify=y_train, random_state=11)nb.fit(X_slice, y_slice)nb_scores.append(nb.score(X_test, y_test))lr.fit(X_slice, y_slice)lr_scores.append(lr.score(X_test, y_test))plt.plot(train_sizes, nb_scores, label='Naive Bayes') plt.plot(train_sizes, lr_scores, linestyle='--', label='Logistic Regression') plt.rcParams['font.sans-serif'] = 'SimHei' # 消除亂碼 plt.title("NB vs LogRg 對比") plt.xlabel("訓練樣本數") plt.ylabel("測試集預測準確率") plt.legend()- 在小型數據集上,NB模型性能優于邏輯回歸
- 當訓練樣本數增多以后,邏輯回歸模型性能逐漸提升
總結
以上是生活随笔為你收集整理的[scikit-learn 机器学习] 7. 朴素贝叶斯的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 1503. 所有蚂蚁掉
- 下一篇: LeetCode 1287. 有序数组中