日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[scikit-learn 机器学习] 7. 朴素贝叶斯

發布時間:2024/7/5 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [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=xY=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. 朴素贝叶斯的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。