Scikit-learn估計器分類
前言
Python是一種通用性編程語言,它簡單易學,上手快,有著豐富的第三方庫。從數據採集、分析一直到應用開發層面,Python都有成熟的庫。Scikit-learn實現了一系列數據挖掘演算法,提供通用編程介面、標準化的測試和調參公局,便於用戶嘗試不同演算法對其進行充分測試和查找最優參數值。
本次講解數據挖掘通用框架的搭建方法。有了這樣一個框架,後續章節就可以把講解重點放到數據挖掘應用和技術上面。
為幫助用戶實現大量分類演算法,scikit-learn把相關功能封裝成估計器。估計器用於分類任務,它主要包括兩個函數。
(1)fit()訓練演算法,接收訓練集和類別這兩個參數。
(2)predict()參數為測試集。預測測試集類別,並返回測試集各條數據類別的數組。
Scikit-learn提供了大量估計器,其中有支持向量機、隨機森林、神經網路等。本次先介紹scikit-learn中的近鄰演算法。
K近鄰法實例
近鄰演算法是標準數據挖掘演算法中最為直觀的一種。為了對新個體進行分類,它查找訓練集,找到與新個體的那些個體,看看這些個體大多屬於哪個類別,就把新個體分到哪個類別。
距離的度量方法有:(1)歐氏距離:兩個特徵向量長度平方和的平方根。(2)曼哈頓距離:兩個特徵在標準坐標系中絕對軸距之和。(3)餘弦距離:特徵向量夾角的餘弦值。
先主要介紹歐氏距離,其他距離後面章節再介紹。
Python數據挖掘的庫有處理矩陣的numpy和pandas;數據可視化的matplotlib;科學計算的scipy;和機器學習的sklearn。首先要安裝外部的模塊。也可以直接用python科學計算的IDE:Anaconda。
在E盤創建1.py的腳本文件,讀取數據集是iris。
要做分類測試的是經典的iris數據集。
先用python讀取文件,輸出文件的前6行。
將前4列作為特徵矩陣,最後一列為類別標籤。
創建訓練集和測試集。導入並運行train_test_split函數。設置隨機種子,測試集佔總數據的30%
導入K近鄰分類器,用訓練數據進行訓練,接著用估計器預測類別。
K近鄰默認的近鄰數是5,在默認參數下準確率就是95.6%。
交叉驗證可以多切幾次,例如10倍交叉驗證,把數據集平均分成10份,把其中一份當成測試集,剩下的為訓練集。重複10次,再把每次的準確率取平均值。
依次計算K近鄰數從1到30,每次10倍交叉驗證後準確度的平均值。畫出準確度隨K近鄰數改變的曲線。
橫坐標是K近鄰數,縱坐標是準確度,點的形狀是五角星,顏色是橙色,線寬為2,線條樣式是實心的。
可以看出10倍交叉驗證的時候,K=14, 19, 21時,準確度最高。
在處理矩陣之前,可以對矩陣進行標準化。MinMaxScaler將每個特徵的值域轉變成到1之間。
StandardScaler將各特徵轉變為均值為,方差為1的正態分布數據。
小結:我們用scikit-learn庫提供的幾個方法,創建了運行和評估數據挖掘模型的標準工作流,還介紹了K近鄰演算法,scikit-learn將其封裝成一個估計器。首先調用fit函數在訓練集上進行訓練,然後用predict函數在測試集上評估效果。
本次還通過解決不同特徵值域影響分類效果的問題,講解了預處理方法,將矩陣標準化再進行訓練。
CEPI感謝您的支持!
(IOS系統用戶專用通道)


※程序員之死VS王寶強離婚:不要把老實人逼向絕路!
※不斷的探求和最終的歸還
※從頭開始變時髦這件事情還是得學這些美少女啊!
※活出你想要的樣子
※Tropika星馬印試吃評測食報
TAG:公眾號 |