sklearn於2006年問世於Google,是使用python語言編寫的、基於numpy、scipy和matplotlib的一個機器學習算法庫,設計的非常優雅,它讓我們能夠使用同樣的接口來實現所有不同的算法調用。
1、三大模塊和六大功能
1.1監督學習模塊
| 算法 |
說明 |
| neighbors |
近鄰算法 |
| svm |
支持向量機 |
| kernel-ridge |
核——嶺回歸 |
| discriminant_analysis |
判別分析 |
| linear_model |
廣義線性模型 |
|
|
|
| ensemle |
集成方法 |
| tree |
決策樹 |
| naive_bayes |
朴素貝葉斯 |
| cross_decomposition |
交叉分解 |
| gaussian_process |
高斯過程 |
|
|
|
| neural_network |
神經網絡 |
| calibration |
概率校准 |
| isotonic |
保序回歸 |
| feature_selection |
特征選擇 |
| multiclass |
多類多標簽算法 |
1.2非監督學習
| 算法 |
說明 |
| decomposition |
矩陣因子分解 |
| cluster |
聚類 |
| manifold |
流形學習 |
| mixture |
高斯混合模型 |
|
|
|
| neural_network |
無監督神經網絡 |
| density |
密度估計 |
| covariance |
協方差估計 |
1.3數據變換
| 算法 |
說明 |
| feature_extraction |
特征抽取 |
| feature_selection |
特征選擇 |
| preprocess |
預處理 |
| random_projection |
隨機投影 |
| kernel_approximation |
核逼近 |
| pipline |
管道流(這個嚴格說不算是數據變換模塊) |
1.4六大功能
| 功能 |
說明(算法) |
| 分類(Classification) |
支持向量機分類(SVC)、最近鄰法(nearest neighbors)、決策樹(decision tree)、隨機森林(random forest)等等 |
| 回歸(regression) |
回歸、多項式回歸(polynomial regression),支持向量回歸(SVR)、嶺回歸(ridge regression)、lasso回歸等等 |
| 聚類(clustering) |
k均值(k-means)、譜聚類(spectral clustering)、mean-shift等方法 |
| 降維(Dimensionality reduction) |
作用是減少樣本向量的維數,比如從200維降到15維,主要算法:主成分分析(PCA)、獨立成分分析(ICA)等方法 |
| 模型選擇(model selection) |
作用:評估模型,選擇模型,交叉驗證,調參等等,網格搜索grid search等 |
| 預處理(preprocessing) |
用於數據的歸一化(normalization)、數據的標准化(standardization)、去均值化(mean removal)、白化(Whitening)、二值化(Binarization)等等 |
2、算法類的頂層設計
| baseEstimator |
所有評估器的父類 |
| ClassifierMixin |
所有分類器的父類,其子類必須實現一個score函數 |
| RegressorMixin |
所有回歸器的父類,其子類必須實現一個score函數 |
| ClusterMixin |
所有聚類的父類,其子類必須實現一個fit_predict函數 |
| BiClusterMixin |
|
| TransformerMixin |
所有數據變換的父類,其子類必須實現一個fit_transform函數 |
| DensityMixin |
所有密度估計相關的父類,其子類必須實現一個score函數 |
| MetaEsimatorMixin |
可能是出於兼容性考慮,看名字就能知道,目前里面沒有內容 |
3、統一的API接口
在sklearn里面使用完全一樣的接口來實現不同的機器學習算法,通俗的流程可以理解如下:
①. 數據加載和預處理
②. 定義分類器(回歸器等等),譬如svc = svm.svc()
③. 用訓練集對模型進行訓練,只需調用fit方法,svc.fit(X_train, y_train)
④. 用訓練好的模型進行預測:y_pred=svc.predict(X_test)
⑤. 對模型進行性能評估:svc.score(X_test, y_test)
模型評估中,可以通過傳入一個score參數來自定義評估標准,該函數的返回值越大代表模型越好。
