如何用sklearn創建機器學習分類器?這裡有一份上手指南
原作:Kasper Fredenslund
林鱗 編譯自 Data Science Central
量子位 出品 | 公眾號 QbitAI
分類器是數據挖掘中對樣本進行分類的方法的統稱,也是入坑機器學習的一項必備技能。這篇文章中,作者簡要介紹了用Python中的機器學習工具scikit-learn(sklearn)創建機器學習分類器的步驟與注意事項。
讀完這篇文章,你將學到:
導入和轉換.csv文件,開啟sklearn之旅
檢查數據集並選擇相關特徵
用sklearn訓練不同的數據分類器
分析結果,進一步改造模型
第一步:導入數據
找到合適的數據下載完成後,我們不難猜到,要做的第一件事肯定是載入並且檢查數據的結構。這裡我推薦大家使用Pandas。
Pandas是一個Python庫,裡面包含一個叫DataFrame的數據處理界面。DataFrame本質上是一個具有行和列的excel表格,UI也相對做得樸素簡潔。不同的是,我們需要也編程的方式進行所有數據操作。
除了excel表格外,Pandas還支持其他不同的格式,比如csv文件和HTML文件等。
第二步:選擇特徵
假設你想從一系列特徵中預測一套房子的價格,我們應該選擇哪些特徵?
房子中燈和插座的數量重要嗎?不重要。幾乎沒有買房者會將房子和插座的數量作為首要考慮因素。所以在這種情況下,這個特徵就是不那麼相關的特徵。
在機器學習中,添加過多特徵但不包含重要信息會導致模型不必要地變慢,並且會增加模型過度擬合的風險。
一般來說,你需要用儘可能少的特徵,提供儘可能多的信息。
或者,我們還可以將相關特性(如房間數量、居住面積和窗戶數量)與上面的示例合併成更高級別的主成分,再使用主成分分析(PCA)等技術分析。
通過繪圖可視化這些特徵之間的關係也是決定特徵相關性的實用方法。下面,我們將使用plot.scatter()子方法繪製這個關係坐標軸。
第三步:準備訓練數據
選擇了想要用到的特徵(PetalLengthCm和PetalWidthCm)後,還需要對它們進行一些處理。
一般來說,很多數據都是在Pandas中的DataFrame中編碼的,但DataFrames並不適用於sklearn,所以我們需要提取特徵和標籤並將它們轉換成numpy數組。
分割這些標籤很簡單,可以在一行中使用np.asarray()。
第四步:選擇分類器
我建議在一開始大家都選擇隨機森林分類器。隨機森林簡單靈活,它能處理很多類型的數據,也不容易過擬合,所以我認為選擇隨機森林是個好起點。
不過,隨機森林的一個明顯缺點是它具有不確定性。因此每次訓練時,都能得到不同的結果。
雖然隨機森林是個好起點,但在實際操作中,我們經常會用多種分類器的組合看看能得到哪些好結果。
孰能生巧,漸漸地你會了解哪種演算法適合哪些問題,對數學表達式做個原理剖析也能幫助你解決這個問題。
第五步:訓練分類器
選擇了分類器後,我們要去準備實現它了。
用sklearn實現分類器通常分三步走:導入、初始化和訓練。
第六步:結果評估
即使分類的準確率可能高達98%,那麼仍有2%情況會導致分類器犯錯。那麼,分類器到底是如何犯錯的?
分類器的錯誤有兩種,即假陽性和假陰性。假陽性指的是當某些東西為假時被認為是真的,假陰性相反。在機器學習中,我們經常用準確率(precision)和召回率(recall)評定精度。
這兩個值均為小數或分數,在0和1之間,越高越好。
第七步:調整分類器
目前,我們的隨機森林分類器只能使用默認的參數值。為了更好使用,我們可以改變了一些甚至所有的值。
min_samples_split是個有趣的參數。這個參數表示分割決策樹的最小樣本。
一般來說,模型捕捉的細節越少,過擬合的風險就越大。然而當將這個參數設置的過高時,你要注意在忽略細節的同時如何更好地記錄趨勢。
想用sklearn創建機器學習分類器?看完這篇文章後是不是有了更多的了解?如果想更詳細地了解文章中每一步的具體操作,可以查看作者博客中的原文:
https://kasperfred.com/posts/creating-your-first-machine-learning-classification-model-in-sklearn
—完—
加入社群
量子位AI社群13群開始招募啦,歡迎對AI感興趣的同學,加小助手微信qbitbot5入群;
此外,量子位專業細分群(自動駕駛、CV、NLP、機器學習等)正在招募,面向正在從事相關領域的工程師及研究人員。
進群請加小助手微信號qbitbot5,並務必備註相應群的關鍵詞~通過審核後我們將邀請進群。(專業群審核較嚴,敬請諒解)
誠摯招聘
量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話界面,回復「招聘」兩個字。
![](https://pic.pimg.tw/zzuyanan/1488615166-1259157397.png)
![](https://pic.pimg.tw/zzuyanan/1482887990-2595557020.jpg)
TAG:量子位 |