1. 程式人生 > >【MachineLearning】之 樸素貝葉斯(實戰)

【MachineLearning】之 樸素貝葉斯(實戰)


一、資料集介紹及預處理

本次應用到的資料集為企業運營評估資料集 course-10-company.csv,總共有 250 條資料,每條資料包括 6 個特徵值,分別為:

  • industrial_risk: 產業風險
  • management_risk: 管理風險
  • finacial_flexibility: 資金靈活性
  • credibility: 信用度
  • competitiveness: 競爭力
  • operating_risk: 操作風險

其中,每條特徵值包括 3 個等級,分別為:

  • Positive: 好
  • Average: 中
  • Negative: 壞

3 個等級分別用 P, A, N 代替。

通過這些特徵對該企業是否會破產進行分類預測,其中:

  • NB: 表示不會破產
  • B: 表示會破產


二、資料集劃分

載入好資料集之後,為了實現樸素貝葉斯演算法,同樣我們需要將資料集分為 訓練集測試集,依照經驗:訓練集佔比為 70%,測試集佔 30%。

同樣在此我們使用 scikit-learn 模組的 train_test_split 函式完成資料集切分。

from sklearn.model_selection import train_test_split

x_train,x_test, y_train, y_test =train_test_split(train_data,train_target,test_size=0.4, random_state=0)

其中:

  • x_train,x_test, y_train, y_test 分別表示,切分後的特徵的訓練集,特徵的測試集,標籤的訓練集,標籤的測試集;其中特徵和標籤的值是一一對應的。
  • train_data,train_target分別表示為待劃分的特徵集和待劃分的標籤集。
  • test_size:測試樣本所佔比例。
  • random_state:隨機數種子,在需要重複實驗時,保證在隨機數種子一樣時能得到一組一樣的隨機數。
# 匯入資料集
# !wget -nc http://labfile.oss.aliyuncs.com/courses/1081/course-10-company.csv

import pandas as
pd enterprise_data = pd.read_csv('course-10-company.csv') enterprise_data.head()
enterprise_data = enterprise_data.replace(
    {"P": 1, "A": 2, "N": 3, "NB": 0, "B": 1})  # 對元素值進行替換
enterprise_data
"""資料集劃分
"""
from sklearn.model_selection import train_test_split

# 得到企業運營評估資料集中 feature 的全部序列: industrial_risk, management_risk 等特徵
feature_data = enterprise_data.iloc[:, :-1]
label_data = enterprise_data["label"]  # 得到企業運營評估資料集中 label 的序列
x_train, x_test, y_train, y_test = train_test_split(
    feature_data, label_data, test_size=0.3, random_state=4)

x_test  # 輸出企業運營評估資料測試集檢視


三、建立分類預測模型

資料集表現出離散型的特徵。所以,根據上文中提到的模型選擇經驗,這裡選用多項式模型。在前面的實驗中我們採用 python 對樸素貝葉斯演算法進行實現,下面我們通過 scikit-learn 來對其進行實現。

scikit-learn 樸素貝葉斯類及引數如下:

MultinomialNB(alpha=1.0, fit_prior=True, class_prior=None)

其中:

  • alpha 表示平滑引數,如拉普拉斯平滑則 alpha=1
  • fit_prior 表示是否使用先驗概率,預設為 True
  • class_prior 表示類的先驗概率。

常用方法:

  • fit(x,y)選擇合適的貝葉斯分類器。
  • predict(X) 對資料集進行預測返回預測結果。
"""利用 scikit-learn 構建多項式樸素貝葉斯分類器
"""
from sklearn.naive_bayes import MultinomialNB


def sk_classfy(x_train, y_train, x_test):
    sk_clf = MultinomialNB(alpha=1.0, fit_prior=True)  # 定義多項式模型分類器
    sk_clf.fit(x_train, y_train)  # 進行模型訓練
    return sk_clf.predict(x_test)


y_predict = sk_classfy(x_train, y_train, x_test)
y_predict


四、分類準確率計算

當我們訓練好模型並進行分類預測之後,可以通過比對預測結果和真實結果得到預測的準確率。

(11)accur=i=1NI(yiˉ=yi)Naccur=\frac{\sum_{i=1}^{N}I(\bar{y_{i}}=y_{i})}{N}\tag{11}

公式(11)中 NN 表示資料總條數,yiˉ\bar{y_{i}} 表示第 ii 條資料的種類預測值,yiy_{i} 表示第 ii 條資料的種類真實值,II 同樣是指示函式,表示 yiˉ\bar{y_{i}}yiy_{i} 相同的個數。

"""準確率計算
"""

def get_accuracy(test_labels, pred_labels):
    correct = np.sum(test_labels == pred_labels)  # 計算預測正確的資料個數
    n = len(test_labels)  # 總測試集資料個數
    accur = correct/n
    return accur


get_accuracy(y_test, y_predict)

相關推薦

MachineLearning 樸素實戰

一、資料集介紹及預處理 本次應用到的資料集為企業運營評估資料集 course-10-company.csv,總共有 250 條資料,每條資料包括 6 個特徵值,分別為: industrial_risk: 產業風險 management_risk: 管理風

機器學習樸素附垃圾郵件分類

樸素貝葉斯分類器介紹概述  樸素貝葉斯分類器技術基於貝葉斯定理,特別適用於輸入維數較高的情況。儘管樸素貝葉斯方法簡單,但它通常比更復雜的分類方法更勝一籌。                  

機器學習演算法樸素Naive Bayes--第二篇

引言 這篇文章主要介紹將樸素貝葉斯模型應用到文字分類任務的技巧和方法。 詞袋模型(The Bag of Words Model) 對於機器學習演算法來說,特徵的選擇是一個很重要的過程。那麼如何從文字訓練集中選出好的特徵呢?在自然語言處理中,一個常見

機器學習演算法樸素Naive Bayes--第一篇

引言 先前曾經看了一篇文章,一個老外程式設計師寫了一些很牛的Shell指令碼,包括晚下班自動給老婆發簡訊啊,自動衝Coffee啊,自動掃描一個DBA發來的郵件啊, 等等。於是我也想用自己所學來做一點有趣的事情。我的想法如下: 首先我寫個scrapy指令碼來

《機器學習實戰》學習筆記樸素Naive Bayes

原理 假如郵箱中有n個單詞, 如果returnVec[i]=0代表這個單詞在這封郵件中不出現, returnVec[i]=1代表這個單詞在郵件中出現了。 設訓練集中每個郵件都有標記為是垃圾郵件和不是垃圾郵件,是垃圾郵件的分類為1,不是垃圾郵件的分類為0。 演算法原理:

樸素

# -*- coding: utf-8 -*- """ 我們會選擇高概率對應的類別。這就是貝葉斯決策理論的核心思想,即選擇具有最高概率的決策. 貝葉斯:p(A|B) = p(A) * p(B|A) / p(B) 我們把P(A)稱為"先驗概率"(Prior probability),即在B事件發生之前

機器學習實戰——基於概率論的分類方法:樸素

                                      使用貝葉斯過濾垃圾郵件 1.準備資料:切分文字 將字串切分為詞列表時,倘若沒有split引數,則標點符號也會被當成詞的一部分,可以使用正則表示式來切分句子,其中分隔符是除了單詞,數字之外的任意字串

機器學習 - 樸素- 樸素分類器

機器學習 - 樸素貝葉斯(下)- 樸素貝葉斯分類器 樸素貝葉斯 重要假設 特徵型別 樸素貝葉斯分類模型 舉例 貝葉斯估計 模型特點

機器學習 - 樸素- 概率論基礎

機器學習 - 樸素貝葉斯(上)- 概率論基礎 概率 聯合概率,邊緣概率 and 條件概率 先驗概率 and 後驗概率 全概率公式 貝葉斯公式

樸素實現NBCorpus分類附程式碼和資料

公式:(P(x)為常數,可忽略不考慮)平滑:Nyk是類別為yk的樣本個數,n是特徵的維數,Nyk,xi是類別為yk的樣本中,第i維特徵的值是xi的樣本個數,α是平滑值。在對NBCorpus詞分類時,帶入上面的公式可得:某詞屬於某類別的概率 = (該類別該詞的個數  + 1/

機器學習實戰4——樸素

一、大概框架1、貝葉斯決策:對某個資料點進行分類,有多個類別供你選擇,我們自然要選擇可能性最大那個,這就是貝葉斯決策的核心思想舉個例子:如果你面前有一個黑人,讓你判斷他是哪個洲的人,給你三個選擇:亞洲人、非洲人、美洲人,你會選擇哪個?哈哈哈,這麼簡單的問題,你居然還問的出口,

機器學習--機器學習樸素從初始到應用

rac AC 一個 pam 數據 ast 出現 相對 解決方法 一、前述 機器學習算法中,有種依據概率原則進行分類的樸素貝葉斯算法,正如氣象學家預測天氣一樣,樸素貝葉斯算法就是應用先前事件的有關數據來估計未來事件發生的概率。 二、具體 1、背景--貝葉斯定理引入對於兩個關聯

斯坦福---機器學習複習筆記樸素演算法

本講大綱: 1.樸素貝葉斯(Naive Bayes) 2.神經網路(Neural Networks) 3.支援向量機(Support vector machines) 1.樸素貝葉斯 前面講的主要是是二元值的特徵,更一般化的是xi可以取{1,2,3

python機器學習實戰樸素分類

一,引言   前兩章的KNN分類演算法和決策樹分類演算法最終都是預測出例項的確定的分類結果,但是,有時候分類器會產生錯誤結果;本章要學的樸素貝葉斯分類演算法則是給出一個最優的猜測結果,同時給出猜測的概率估計值。 1 準備知識:條件概率公式 相信學過概率論的同學對於概

機器學習 使用樸素進行文件分類

樸素貝葉斯的一般過程: 1、收集資料:任何方法 2、準備資料:需要數值型或者布林型資料 3、分析資料:有大量特徵時,繪製特徵作用不大,此時使用直方圖效果更好 4、訓練演算法:計算不同的獨立特徵的條件概率 5、測試演算法:計算錯誤率 6、使用演算法:常見的樸素貝葉斯應用是

大資料分析常用演算法4.樸素

開發十年,就只剩下這套架構體系了! >>>   

自然語言處理使用樸素進行語種檢測

首先看一下資料集:  基本上每行就是一句話,所屬類別,這裡包含English, French, German, Spanish, Italian 和 Dutch 6種語言) 先匯入相應的包: import os from sklearn.model_selection import train_

sklearn庫學習樸素分類器

樸素貝葉斯模型 樸素貝葉斯模型的泛化能力比線性模型稍差,但它的訓練速度更快。它通過單獨檢視每個特徵來學習引數,並從每個特徵中收集簡單的類別統計資料。想要作出預測,需要將資料點與每個類別的統計資料進行比較,並將最匹配的類別作為預測結果。 GaussianNB應用於任意連續資料,

機器學習樸素分類方法

本文轉載自http://holynull.leanote.com/post/Logistic-2 樸素貝葉斯分類方法 前言 樸素貝葉斯分類演算法是機器學習領域最基本的幾種演算法之一。但是對於作者這樣沒有什麼資料基礎的老碼農來說,理解起來確實有一些困難。所以撰寫此文幫

機器學習實踐—sklearn樸素演算法

一、樸素貝葉斯演算法 什麼是樸素貝葉斯分類方法 屬於哪個類別概率大,就判斷屬於哪個類別 概率基礎 概率定義為一件事情發生的可能性 P(X) : 取值在[0, 1] 聯合概率、條件概率與相互獨立