1. 程式人生 > >sklearn的快速使用之零(Scikit-learn簡介)

sklearn的快速使用之零(Scikit-learn簡介)

Scikit-learn

官網 (scikit-learn.org)

之前在python易筋經系列中我有寫過scipy的筆記[2],scipy是一個開源的基於python的科學計算工具包。基於scipy,目前開發者們針對不同的應用領域已經發展出了為數眾多的分支版本,它們被統一稱為Scikits,即scipy工具包的意思。而在這些分支版本中,最有名,也是專門面向機器學習的一個就是Scikit-learn。

為什麼還要scikit-learn?

tensorflow、pytouch所代表的深度學習框架的興起,使初學者趨之若鶩,如果使用python作為機器學習語言首選語言的話,其實都應該

靜下心來好好研究一下scikit-learn。Scikit-learn針對每個演算法和模組都提供了豐富的參考樣例和詳細的說明文件。

做了一張腦圖來鳥瞰scikit-learn一下:

 

scikits-learn.png

六大功能

Scikit-learn的基本功能主要被分為六大部分:分類,迴歸,聚類,資料降維,模型選擇和資料預處理。

分類

識別給定物件的所屬類別,屬於監督學習的範疇,最常見的應用場景包括垃圾郵件檢測和影象識別等。目前Scikit-learn已經實現的演算法包括:支援向量機(SVM),最近鄰,邏輯迴歸,隨機森林,決策樹以及多層感知器(MLP)神經網路等等。

迴歸

預測與給定物件相關聯的連續值屬性,最常見的應用場景包括預測藥物反應和預測股票價格等。目前Scikit-learn已經實現的演算法包括:支援向量迴歸(SVR),脊迴歸,Lasso迴歸,彈性網路(Elastic Net),最小角迴歸(LARS ),貝葉斯迴歸,以及各種不同的魯棒迴歸演算法等。可以看到,這裡實現的迴歸演算法幾乎涵蓋了所有開發者的需求範圍,而且更重要的是,Scikit-learn還針對每種演算法都提供了簡單明瞭的用例參考。

聚類

自動識別具有相似屬性的給定物件,並將其分組為集合,屬於無監督學習的範疇,最常見的應用場景包括顧客細分和試驗結果分組。目前Scikit-learn已經實現的演算法包括:K-均值聚類,譜聚類,均值偏移,分層聚類,DBSCAN聚類等。

資料降維

使用主成分分析(PCA)、非負矩陣分解(NMF)或特徵選擇等降維技術來減少要考慮的隨機變數的個數,其主要應用場景包括視覺化處理和效率提升。

模型選擇

對於給定引數和模型的比較、驗證和選擇,其主要目的是通過引數調整來提升精度。目前Scikit-learn實現的模組包括:格點搜尋,交叉驗證和各種針對預測誤差評估的度量函式。

資料預處理

資料的特徵提取和歸一化,是機器學習過程中的第一個也是最重要的一個環節。這裡歸一化是指將輸入資料轉換為具有零均值和單位權方差的新變數,但因為大多數時候都做不到精確等於零,因此會設定一個可接受的範圍,一般都要求落在0-1之間。而特徵提取是指將文字或影象資料轉換為可用於機器學習的數字變數。
需要特別注意的是,這裡的特徵提取與上文在資料降維中提到的特徵選擇非常不同。特徵選擇是指通過去除不變、協變或其他統計上不重要的特徵量來改進機器學習的一種方法。

環境安裝

再次推薦Anaconda

  • 方便安裝各種包,numpy、scipy、scikit-learn等,有點類似maven。
  • Jupyter Notebook 整合在anaconda中,可以方便除錯程式和熟悉互動式筆記。