A. 線性代數大師貝葉斯重出江湖,python中的樸素貝葉斯還那麼難嗎
本教程將使您了解如何使用 Python 的 Scikit-learn 包構建和評估樸素貝葉斯分類器。
假設您是產品經理,您想將客戶評論分為正面和負面類別。 或者作為貸款經理,您想確定哪些貸款申請人是安全的還是有風險的? 作為醫療保健分析師,您希望預測哪些患者可能患有糖尿病。 所有示例都存在對評論、貸款申請人和患者進行分類的相同問題。
樸素貝葉斯是最直接、最快速的分類演算法,適用於大量數據。 樸素貝葉斯分類器成功地用於各種應用,例如垃圾郵件過濾、文本分類、 情感 分析和推薦系統。 它使用貝葉斯概率定理來預測未知類。
在本教程中,您將了解以下所有內容:
無論何時執行分類,第一步都是了解問題並識別潛在的特徵和標簽。 特徵是影響標簽結果的那些特徵或屬性。 例如,在貸款分配的情況下,銀行經理確定客戶的職業、收入、年齡、地點、以前的貸款 歷史 、交易 歷史 和信用評分。 這些特徵被稱為幫助模型對客戶進行分類的特徵。
分類有兩個階段,學習階段和評估階段。 在學習階段,分類器在給定的數據集上訓練其模型,在評估階段,它測試分類器的性能。 性能是根據各種參數進行評估的,例如准確度、誤差、精度和召回率。
2 什麼是樸素貝葉斯分類器?
樸素貝葉斯是一種基於貝葉斯定理的統計分類技術。 它是最簡單的監督學習演算法之一。 樸素貝葉斯分類器是一種快速、准確和可靠的演算法。 樸素貝葉斯分類器在大型數據集上具有很高的准確性和速度。
樸素貝葉斯分類器假設類中特定特徵的效果獨立於其他特徵 。 例如,貸款申請人是否可取取決於他/她的收入、以前的貸款和交易 歷史 、年齡和位置。 即使這些特徵相互依賴,這些特徵仍然被獨立考慮 。 這個假設簡化了計算,這就是為什麼它被認為是「樸素」的。 這種假設稱為類條件獨立 。
此節涉及大量線性代數與概率的知識,對理論研究有高要求的讀者可參考更專業的書籍,只關心如何應用的讀者可以跳過此節。我也只關心應用,因此,咱們一起跳過此節吧。留個標題只為結構完整性。哈哈哈 希望數學老師原諒我
4 Scikit-learn 中的分類器構建
1)定義數據集
在此示例中,您可以使用具有三列的虛擬數據集:天氣、溫度和是否出去玩。 前兩個是特徵(天氣、溫度),另一個是標簽。
2)編碼特徵
首先,您需要將這些字元串標簽轉換為數字。 例如:'Overcast', 'Rainy', 'Sunny' as 0, 1, 2。這稱為標簽編碼。 Scikit-learn 提供了 LabelEncoder 庫,用於對標簽進行編碼,其值在 0 到 1 之間,小於離散類的數量。
同樣,您也可以對 temp 和 play 列進行編碼。
現在將這兩個特徵(天氣和溫度)組合在一個變數(元組列表)中。
3)生成模型
在以下步驟中使用樸素貝葉斯分類器生成模型:
這里,1 表示玩家可以「出去玩」。
到目前為止,您已經學習了使用二進制標簽的樸素貝葉斯分類。 現在您將了解樸素貝葉斯中的多類分類。 這被稱為多項樸素貝葉斯分類。 例如,如果您想對有關技術、 娛樂 、政治或 體育 的新聞文章進行分類。
在模型構建部分,您可以使用葡萄酒數據集,這是一個非常著名的多類分類問題。 「這個數據集是對在義大利同一地區種植但來自三種不同品種的葡萄酒進行化學分析的結果。」
數據集包含 13 個特徵(酒精、蘋果酸、灰分、alcalinity_of_ash、鎂、總酚、黃酮類化合物、非黃酮類酚、原花青素、顏色強度、色調、od280/od315_of_diluted_wines、脯氨酸)和葡萄酒品種類型。 該數據有3種酒類Class_0、Class_1和Class_3。 在這里,您可以建立一個模型來對葡萄酒的類型進行分類。
該數據集在 scikit-learn 庫中可用。
1)載入數據
讓我們首先從 scikit-learn 數據集中載入所需的 wine 數據集。
2) 探索 數據
您可以列印目標和特徵名稱,以確保您擁有正確的數據集,如下所示:
稍微 探索 一下您的數據總是不會錯的,這樣您就知道自己在處理什麼。 在這里,您可以看到列印了數據集的前五行,以及整個數據集的目標變數。
3)拆分數據
首先,您將列分為因變數和自變數(或特徵和標簽)。 然後將這些變數拆分為訓練集和測試集。
4)生成模型
拆分後,您將在訓練集上生成一個隨機森林模型,並對測試集特徵進行預測。
5)評估模型
模型生成後,使用實際值和預測值檢查准確性。
5 零概率問題
假設數據集中沒有風險貸款的元組,在這種情況下,後驗概率為零,模型無法做出預測。 這個問題被稱為零概率,因為特定類的出現為零。
此類問題的解決方案是拉普拉斯校正(Laplacian correction)或拉普拉斯變換(Laplace Transformation)。 拉普拉斯校正是平滑技術之一。 在這里,您可以假設數據集足夠大,每個類添加一行不會對估計的概率產生影響。 這將克服概率值為零的問題。
例如:假設對於有風險的類貸款,資料庫中有 1000 個訓練元組。 在這個資料庫中,收入列有 0 個元組代表低收入,990 個元組代表中等收入,10 個元組代表高收入。 在沒有拉普拉斯校正的情況下,這些事件的概率為 0、0.990(來自 990/1000)和 0.010(來自 10/1000)
現在,對給定的數據集應用拉普拉斯校正。 讓我們為每個收入-價值對再添加 1 個元組。 這些事件的概率:
6 優點
在本教程中,您了解了樸素貝葉斯演算法、它的工作原理、樸素貝葉斯假設、問題、實現、優點和缺點。 在此過程中,您還學習了 scikit-learn 中二元和多項類的模型構建和評估。
樸素貝葉斯是最直接和最有效的演算法。 盡管機器學習在過去幾年取得了重大進展,但它已經證明了它的價值。 它已成功部署在從文本分析到推薦引擎的許多應用程序中。