獲取Scikit-Learn專案的源代碼
無論是在windows還是Linux上,直接使用Git克隆專案即可,克隆之前需要把官方的專案Fork到自己的GitHub倉庫,專案地址:https://github.com/scikit-learn/scikit-learn.git
研讀原始碼的工具
- Pycharm IDE
- 官方檔案中的User Guide
研讀原始碼需要的一些前置知識
- 需要對機器學習演算法有一個大概的了解,包括監督和非監督的主要演算法的用途、推導
- 需要對Python比較熟悉,對OOP編程思想的一些重點方法熟悉,例如 @abstractmethod、@classmethod、@property、@staticmethod 等,如果不熟悉,可以閱讀這篇博客 The definitive guide on how to use static, class or abstract methods in Python
專案結構
整個SKlearn專案,核心的部分在sklearn這個包里面,演算法的使用案例在example包里面

sklearn包的簡介
- _check_build
簡單的檢查是否正確編譯的腳本 - _build_utils
sklearn官方團隊構建這個專案時使用的一些支持性工具 - _loss
GLM演算法中會用到的分布函式 - cluster
聚類演算法的實作包,含有Birch/DBSCAN/Hierarchical/KMeans/Spectral等演算法,其中kmeans演算法提供elkan/fast/lloyd幾種實作方式(使用cpyton實作的), - compose
合成模型時使用的元學習器, - covariance
計算特征間協方差 - cross_decomposition
包含CCA(典型相關分析)和PLS(偏最小二乘)兩種演算法,這些演算法主要用于探索兩個多元資料集之間的線型關系, - datasets
sklearn自帶的資料采集器,主要功能時回應用戶的呼叫,從網路下載玩具資料集,方便用戶簡單地跑跑演算法, - decompostion
矩陣分解演算法包,包括PLA(主成分分析)、NMF(非負矩陣分解)、ICA(獨立成分分析),其中PLA有稀疏版本的實作, - ensemble
集成演算法包,主要的腳本有:_bagging.py(bagging演算法),_forest.py(隨機森林),_gb(GBDT),_iforest.py(孤獨森林),_stacking.py(stacking方法),_voting.py(投票方法),_weight_boosting.py(主要就是AdaBoost演算法),注意,GBDT演算法的實作程序有呼叫一個cpython版本的腳本_gradient_boosting.pyx,主要目的就是加快計算速度, - experimental
實驗模塊 - externals
一些外部依賴腳本, - feature_extraction
特征提取,目前支持同Text檔案和圖片中提取特征, - feature_selection
特征選擇演算法,主要是單變數的過濾演算法(例如去除方差很小的特征)和遞回特征洗掉演算法,這里的介面也可以用來做降維, - guassian_process
高斯程序,分為分類和回歸兩個實作, - impute
缺失值處理,例如使用KNN演算法去填充缺失值, - inspection
檢查模型的工具 - linear_model
線性模型包,包含線性回歸、邏輯回歸、LASSO、Ridge、感知機等等,內容非常多,是sklearn中的重點包 - manifold
實作資料嵌入技術的工具包,包括LLE、Iosmap、TSNE等等 - metrics
集合了所有的度量工具,包括常見的accuracy_socre、auc、f1_score、hinge_loss、roc_auc_score、roc_curve等等 - mixture
高斯混合模型、貝葉斯混合模型 - model_selection
sklearn的重點訓練工具包,包括常見的GridSearchCV、TimeSeriesSplit、KFold、cross_validate等 - neighbors
K近鄰演算法包,包括球樹、KD樹、KNN分類、KNN回歸等演算法的實作 - neutral_network
包含比較基礎的神經網路模型,例如伯努利受限玻爾茲曼機、多層感知機分類、多層感知機回歸 - preprocessing
sklearn的重點資料預處理工具包,包括常見的LabelEncoder、MinMaxScaler、Normalizer、OneHotEncoder等 - semi_supervises
半監督學習演算法包,LabelPropagation、LabelSpreading - svm
支持向量機演算法包,包括線性支持向量分類/回歸、SVC/SVR、OneClassSVM等,但是sklearn自己并沒有獨立去實作這一類演算法,而是復用了很多libSVM的代碼 - tests
一些單元測驗代碼 - tree
樹模型,包括決策樹、極端樹,注意,梯度提升樹演算法放在ensemble包里, - utils
加速計算、cython版本的BLAS演算法、優化等工具包
sklearn實作演算法的風格
sklearn中有若干個最基本的類,作為地基,例如 BaseEstimator 類、BaseSGD 類、ClassifierMixin、RegressorMixin等基礎類,然后所有的演算法都是在繼承這些基類,并且自己實作fit等重要方法,所以,下一篇原始碼研讀筆記,我會盡力去研究一下sklearn中這些最基礎的類,看看他們都是負責什么功能的,
如果有任何紕漏差錯,歡迎評論互動,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/47697.html
標籤:其他
上一篇:【學習篇】機器學習之模型評價
下一篇:使用卷積神經網路識別交通標志
