Scikit-learn是一個基於Python的開源機器學習庫,它提供了大量的機器學習演算法和工具,方便用戶進行數據挖掘、分析和預測。 Scikit-learn是基於另外兩個知名的庫 Scipy 和 Numpy的,關於 Scipy 和 Numpy 等庫,之前的系列文章中有介紹: Scipy 基礎系列 ...
Scikit-learn
是一個基於Python
的開源機器學習庫,它提供了大量的機器學習演算法和工具,方便用戶進行數據挖掘、分析和預測。
Scikit-learn
是基於另外兩個知名的庫 Scipy
和 Numpy
的,
關於 Scipy
和 Numpy
等庫,之前的系列文章中有介紹:
- Scipy 基礎系列
- Numpy 基礎系列
1. 概要
自從AlphaGo
再度帶起機器學習和AI的熱潮以來,我們聽到最多的機器學習框架是 TensorFlow
,PyTorch
以及Keras
等等。
Scikit-learn
與它們相比,知名度要低不少,這是因為Scikit-learn
庫關註的是傳統的機器學習領域中經典的,被廣泛應用和驗證的演算法。
它完全不涉及TensorFlow
,PyTorch
以及Keras
等框架所在的深度學習領域。
雖然看起來Scikit-learn
似乎遠遠不如那些流行的深度學習框架,
但從我個人的經驗來看的話,學習和掌握Scikit-learn
的意義遠遠大於那些深度學習框架。
首先,Scikit-learn
歷史悠久,發展至今,不僅提供了豐富的文檔和參考樣例,甚至連訓練數據都準備好了,隨時都可以拿來實驗機器學習演算法。
其次,深度學習雖好,但是使用要求也高。
除了掌握其演算法,還必須有大量的數據和高性能的硬體,這絕不是個人和普通企業所能提供的。
未來,大概率是由幾個頭部大企業訓練出模型,然後開放API
給我們使用,個人和中小企業訓練自己的深度學習模型的概率並不高。
而Scikit-learn
則與之不一樣,它所包含的傳統機器學習中的很多優秀演算法並不需要海量的數據,在數據量不大的情況下依舊可以訓練出優秀的模型。
最後,就我自己平時的數據分析相關項目的實踐來看,Scikit-learn
是一個真正稱手的工具。
我平時的項目中會接觸到各類數據,比如氣象數據,銷售數據,還有一些交易類的數據等等,
由於服務的客戶規模不大,所以數據量一般最多也就千萬級別。
使用Scikit-learn
,能夠方便快速的從這些數據中分析出有意義結果。
舉個不太恰當的例子,目前流行的深度學習框架相對於Scikit-learn
,就像飛機相對於自行車或小汽車。
學會開飛機後,可能實操的機會並不多(除非你在大廠的AI部門);
但是學會騎車和開車,總會有用到它的地方,而且由於其便利簡單,還會越用越多。
2. 主要模塊
Scikit-learn
的主要功能包括數據預處理,模型選擇,數據降維,分類,回歸和聚類等。
- 數據預處理包括數據的特征提取、歸一化、標準化等。
- 模型選擇是對給定參數和模型進行比較、驗證和選擇,以提升預測精度。
- 數據降維是通過降維技術來減少要考慮的隨機變數的個數,常見的應用場景有可視化處理、效率提升等。
- 分類是給對象指定所屬類別範疇的有監督學習,常見的應用場景有垃圾郵件檢測、圖像識別等。
- 回歸是預測與給定對象相關的連續屬性的值,常見的應用場景有預測股票價格、預測二手房交易價格等。
- 聚類是自動識別具有相似屬性的給定對象,並將其分組,屬於無監督學習,常見的應用場景有顧客細分、實驗結果分組等。
從功能上看,涵蓋了機器學習從數據處理開始,到各類模塊訓練演算法,最後到模型的驗證和調優等完整的生命周期。
3. 系列文章規劃
Scikit-learn
的子模塊劃分非常細,從命名空間來看的話,大概有接近40個模塊。
分別介紹各個子模塊意義不大,不如直接看官方文檔,本系列的文章打算從使用者的角度來介紹它。
先從數據和數據處理的角度入手,
然後結合自己工作中的實際經驗介紹Scikit-learn
中的一些機器學習的演算法,
最後介紹訓練模型時和訓練之後對模型的一些修正和調優的方法。
希望能夠對喜愛數據分析的朋友們有所幫助!