
- Scikit Learn 教程
- Scikit Learn - 首頁
- Scikit Learn - 簡介
- Scikit Learn - 建模過程
- Scikit Learn - 資料表示
- Scikit Learn - 估計器 API
- Scikit Learn - 約定
- Scikit Learn - 線性建模
- Scikit Learn - 擴充套件線性建模
- 隨機梯度下降
- Scikit Learn - 支援向量機
- Scikit Learn - 異常檢測
- Scikit Learn - K 近鄰演算法
- Scikit Learn - KNN 學習
- 樸素貝葉斯分類
- Scikit Learn - 決策樹
- 隨機決策樹
- Scikit Learn - 整合方法
- Scikit Learn - 聚類方法
- 聚類效能評估
- 使用 PCA 進行降維
- Scikit Learn 有用資源
- Scikit Learn - 快速指南
- Scikit Learn - 有用資源
- Scikit Learn - 討論
Scikit Learn - 樸素貝葉斯分類
樸素貝葉斯方法是一組基於貝葉斯定理的監督學習演算法,並假設所有預測變數彼此獨立,即一個特徵在一個類別中的出現與同一類別中任何其他特徵的出現無關。這是一個天真的假設,這就是為什麼這些方法被稱為樸素貝葉斯方法。
貝葉斯定理陳述了以下關係,以便找到類別的後驗機率,即標籤和一些觀察到的特徵的機率,$P\left(\begin{array}{c} Y\arrowvert features\end{array}\right)$。
$$P\left(\begin{array}{c} Y\arrowvert features\end{array}\right)=\left(\frac{P\lgroup Y\rgroup P\left(\begin{array}{c} features\arrowvert Y\end{array}\right)}{P\left(\begin{array}{c} features\end{array}\right)}\right)$$這裡,$P\left(\begin{array}{c} Y\arrowvert features\end{array}\right)$ 是類的後驗機率。
$P\left(\begin{array}{c} Y\end{array}\right)$ 是類的先驗機率。
$P\left(\begin{array}{c} features\arrowvert Y\end{array}\right)$ 是似然度,即給定類別的預測變數的機率。
$P\left(\begin{array}{c} features\end{array}\right)$ 是預測變數的先驗機率。
Scikit-learn 提供了不同的樸素貝葉斯分類器模型,即高斯、多項式、互補和伯努利。它們的主要區別在於它們對 𝑷$P\left(\begin{array}{c} features\arrowvert Y\end{array}\right)$(即給定類別的預測變數的機率)的分佈所做的假設。
序號 | 模型及描述 |
---|---|
1 |
高斯樸素貝葉斯
高斯樸素貝葉斯分類器假設每個標籤的資料都來自一個簡單的正態分佈。 |
2 |
多項式樸素貝葉斯
它假設特徵是從一個簡單的多項式分佈中提取的。 |
3 |
伯努利樸素貝葉斯
該模型的假設是特徵本質上是二元的(0 和 1)。伯努利樸素貝葉斯分類的一個應用是使用“詞袋”模型進行文字分類。 |
4 |
互補樸素貝葉斯
它旨在糾正多項式貝葉斯分類器做出的嚴格假設。這種 NB 分類器適用於不平衡的資料集。 |
構建樸素貝葉斯分類器
我們也可以在 Scikit-learn 資料集上應用樸素貝葉斯分類器。在下面的示例中,我們正在應用 GaussianNB 並擬合 Scikit-leran 的 breast_cancer 資料集。
示例
Import Sklearn from sklearn.datasets import load_breast_cancer from sklearn.model_selection import train_test_split data = load_breast_cancer() label_names = data['target_names'] labels = data['target'] feature_names = data['feature_names'] features = data['data'] print(label_names) print(labels[0]) print(feature_names[0]) print(features[0]) train, test, train_labels, test_labels = train_test_split( features,labels,test_size = 0.40, random_state = 42 ) from sklearn.naive_bayes import GaussianNB GNBclf = GaussianNB() model = GNBclf.fit(train, train_labels) preds = GNBclf.predict(test) print(preds)
輸出
[ 1 0 0 1 1 0 0 0 1 1 1 0 1 0 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 1 1 1 1 1 1 0 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 1 0 0 1 0 0 1 1 1 0 1 1 0 1 1 0 0 0 1 1 1 0 0 1 1 0 1 0 0 1 1 0 0 0 1 1 1 0 1 1 0 0 1 0 1 1 0 1 0 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 0 0 0 1 1 0 1 0 1 1 1 1 0 1 1 0 1 1 1 0 1 0 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 0 0 1 1 0 1 ]
以上輸出包含一系列 0 和 1,它們基本上是來自腫瘤類別(即惡性和良性)的預測值。