1. 程式人生 > >scikit-learn學習總結

scikit-learn學習總結

sklearn的官網連結:http://scikit-learn.org/stable/index.html# 目錄

1. 分類、迴歸

2. 降維

3. 模型評估與選擇

4. 資料預處理

大類 小類 適用問題 實現 說明
分類、迴歸        
1.1 廣義線性模型 1.1.1 普通最小二乘法 迴歸 sklearn.linear_model.LinearRegression
 
注:本節中所有的迴歸模型皆為線性迴歸模型 1.1.2 Ridge/嶺迴歸 迴歸 sklearn.linear_model.Ridge 解決兩類迴歸問題:
一是樣本少於變數個數
二是變數間存在共線性
  1.1.3 Lasso 迴歸 sklearn.linear_model.Lasso 適合特徵較少的資料
  1.1.4 Multi-task Lasso 迴歸 sklearn.linear_model.MultiTaskLasso
y值不是一元的迴歸問題
  1.1.5 Elastic Net 迴歸 sklearn.linear_model.ElasticNet 結合了Ridge和Lasso
  1.1.6 Multi-task Elastic Net 迴歸 sklearn.linear_model.MultiTaskElasticNet y值不是一元的迴歸問題
  1.1.7 Least Angle Regression(LARS) 迴歸 sklearn.linear_model.Lars 適合高維資料
  1.1.8 LARS Lasso 迴歸 sklearn.linear_model.LassoLars (1)適合高維資料使用
(2)LARS演算法實現的lasso模型
  1.1.9 Orthogonal Matching Pursuit (OMP) 迴歸 sklearn.linear_model.OrthogonalMatchingPursuit 基於貪心演算法實現
  1.1.10 貝葉斯迴歸 迴歸 sklearn.linear_model.BayesianRidge
sklearn.linear_model.ARDRegression
優點: (1)適用於手邊資料(2)可用於在估計過程中包含正規化引數
缺點:耗時
  1.1.11 Logistic regression 分類 sklearn.linear_model.LogisticRegression  
  1.1.12 SGD(隨機梯度下降法) 分類
/迴歸
sklearn.linear_model.SGDClassifier
sklearn.linear_model.SGDRegressor
適用於大規模資料
  1.1.13 Perceptron 分類 sklearn.linear_model.Perceptron 適用於大規模資料
  1.1.14 Passive Aggressive Algorithms 分類
/迴歸
sklearn.linear_model.
PassiveAggressiveClassifier


sklearn.linear_model.
PassiveAggressiveRegressor
適用於大規模資料
  1.1.15 Huber Regression 迴歸 sklearn.linear_model.HuberRegressor 能夠處理資料中有異常值的情況
  1.1.16 多項式迴歸 迴歸 sklearn.preprocessing.PolynomialFeatures 通過PolynomialFeatures將非線性特徵轉化成多項式形式,再用線性模型進行處理
1.2 線性和二次判別分析 1.2.1 LDA 分類/降維 sklearn.discriminant_analysis.
LinearDiscriminantAnalysis
 
  1.2.2 QDA 分類 sklearn.discriminant_analysis.
QuadraticDiscriminantAnalysis
 
1.3 核嶺迴歸 簡稱KRR 迴歸 sklearn.kernel_ridge.KernelRidge 將核技巧應用到嶺迴歸(1.1.2)中,以實現非線性迴歸
1.4 支援向量機 1.4.1 SVC,NuSVC,LinearSVC 分類 sklearn.svm.SVC
sklearn.svm.NuSVC
sklearn.svm.LinearSVC
SVC可用於非線性分類,可指定核函式;
NuSVC與SVC唯一的不同是可控制支援向量的個數;
LinearSVC用於線性分類
  1.4.2 SVR,NuSVR,LinearSVR 迴歸 sklearn.svm.SVR
sklearn.svm.NuSVR
sklearn.svm.LinearSVR
同上,將”分類”變成”迴歸”即可
  1.4.3 OneClassSVM 異常檢測 sklearn.svm.OneClassSVM 無監督實現異常值檢測
1.5 隨機梯度下降 同1.1.12      
1.6 最近鄰 1.6.1 Unsupervised Nearest Neighbors sklearn.neighbors.NearestNeighbors 無監督實現K近鄰的尋找
  1.6.2 Nearest Neighbors Classification 分類 sklearn.neighbors.KNeighborsClassifier
sklearn.neighbors.RadiusNeighborsClassifier
(1)不太適用於高維資料
(2)兩種實現只是距離度量不一樣,後者更適合非均勻的取樣
  1.6.3 Nearest Neighbors Regression 迴歸 sklearn.neighbors.KNeighborsRegressor
sklearn.neighbors.RadiusNeighborsRegressor
同上
  1.6.5 Nearest Centroid Classifier 分類 sklearn.neighbors.NearestCentroid 每個類對應一個質心,測試樣本被分類到距離最近的質心所在的類別
1.7 高斯過程(GP/GPML) 1.7.1 GPR 迴歸 sklearn.gaussian_process.
GaussianProcessRegressor
與KRR一樣使用了核技巧
  1.7.3 GPC 分類 sklearn.gaussian_process.
GaussianProcessClassifier
 
1.8 交叉分解 實現演算法:CCA和PLS 用來計算兩個多元資料集的線性關係,當預測資料比觀測資料有更多的變數時,用PLS更好
1.9 樸素貝葉斯 1.9.1 高斯樸素貝葉斯 分類 sklearn.naive_bayes.GaussianNB 處理特徵是連續型變數的情況
  1.9.2 多項式樸素貝葉斯 分類 sklearn.naive_bayes.MultinomialNB 最常見,要求特徵是離散資料
  1.9.3 伯努利樸素貝葉斯 分類 sklearn.naive_bayes.BernoulliNB 要求特徵是離散的,且為布林型別,即true和false,或者1和0
1.10 決策樹 1.10.1 Classification 分類 sklearn.tree.DecisionTreeClassifier  
  1.10.2 Regression 迴歸 sklearn.tree.DecisionTreeRegressor  
1.11 整合方法 1.11.1 Bagging 分類/迴歸 sklearn.ensemble.BaggingClassifier
sklearn.ensemble.BaggingRegressor
可以指定基學習器,預設為決策樹
注:1和2屬於整合方法中的並行化方法,3和4屬於序列化方法 1.11.2 Forests of randomized trees 分類/迴歸 RandomForest(RF,隨機森林):
sklearn.ensemble.RandomForestClassifier
sklearn.ensemble.RandomForestRegressor
ExtraTrees(RF改進):
sklearn.ensemble.ExtraTreesClassifier
sklearn.ensemble.ExtraTreesRegressor
基學習器為決策樹
  1.11.3 AdaBoost 分類/迴歸 sklearn.ensemble.AdaBoostClassifier
sklearn.ensemble.AdaBoostRegressor
可以指定基學習器,預設為決策樹
號外:最近特別火的兩個梯度提升演算法,LightGBM和XGBoost
(XGBoost提供了sklearn介面)
1.11.4 Gradient Tree Boosting 分類/迴歸 GBDT:
sklearn.ensemble.GradientBoostingClassifier
GBRT:
sklearn.ensemble.GradientBoostingRegressor
基學習器為決策樹
  1.11.5 Voting Classifier 分類 sklearn.ensemble.VotingClassifier 須指定基學習器
1.12 多類與多標籤演算法 sklearn中的分類演算法都預設支援多類分類,其中LinearSVC、 LogisticRegression和GaussianProcessClassifier在進行多類分類時需指定引數multi_class
1.13 特徵選擇 1.13.1 過濾法之方差選擇法 特徵選擇 sklearn.feature_selection.VarianceThreshold 特徵選擇方法分為3種:過濾法、包裹法和嵌入法。過濾法不用考慮後續學習器
  1.13.2 過濾法之卡方檢驗 特徵選擇 sklearn.feature_selection.SelectKBest  
  1.13.3 包裹法之遞迴特徵消除法 特徵選擇 sklearn.feature_selection.RFE 包裹法需考慮後續學習器,引數中需輸入基學習器
  1.13.4 嵌入法 特徵選擇 sklearn.feature_selection.SelectFromModel 嵌入法是過濾法和嵌入法的結合,引數中也需輸入基學習器
1.14 半監督 1.14.1 Label Propagation 分類/迴歸 sklearn.semi_supervised.LabelPropagation
sklearn.semi_supervised.LabelSpreading
 
1.15 保序迴歸 迴歸 sklearn.isotonic.IsotonicRegression  
1.16 概率校準 在執行分類時,獲得預測的標籤的概率
1.17 神經網路模型 (待寫)      
降維        
2.5 降維 2.5.1 主成分分析 降維 PCA:
sklearn.decomposition.PCA
IPCA:
sklearn.decomposition.IncrementalPCA
KPCA:
sklearn.decomposition.KernelPCA
SPCA:
sklearn.decomposition.SparsePCA
(1)IPCA比PCA有更好的記憶體效率,適合超大規模降維。
(2)KPCA可以進行非線性降維
(3)SPCA是PCA的變體,降維後返回最佳的稀疏矩陣
  2.5.2 截斷奇異值分解 降維 sklearn.decomposition.TruncatedSVD 可以直接對scipy.sparse矩陣處理
  2.5.3 字典學習 sklearn.decomposition.SparseCoder
sklearn.decomposition.DictionaryLearning
SparseCoder實現稀疏編碼,DictionaryLearning實現字典學習
模型評估與選擇        
3.1 交叉驗證/CV 3.1.1 分割訓練集和測試集 sklearn.model_selection.train_test_split  
  3.1.2 通過交叉驗證評估score sklearn.model_selection.cross_val_score score對應效能度量,分類問題預設為accuracy_score,迴歸問題預設為r2_score
  3.1.3 留一法LOO sklearn.model_selection.LeaveOneOut CV的特例
  3.1.4 留P法LPO sklearn.model_selection.LeavePOut CV的特例
3.2 調參 3.2.1 網格搜尋 sklearn.model_selection.GridSearchCV 最常用的調參方法。可傳入學習器、學習器引數範圍、效能度量score(預設為accuracy_score或r2_score )等
  3.2.2 隨機搜尋 sklearn.model_selection.RandomizedSearchCV 引數傳入同上
3.3 效能度量 3.3.1 分類度量 對應交叉驗證和調參中的score
  3.3.2 迴歸度量  
  3.3.3 聚類度量  
3.4 模型永續性 使用pickle存放模型,可以使模型不用重複訓練
3.5 驗證曲線 3.5.1 驗證曲線 sklearn.model_selection.validation_curve 橫軸為某個引數的值,縱軸為模型得分
  3.5.2 學習曲線 sklearn.model_selection.learning_curve 橫軸為訓練資料大小,縱軸為模型得分
資料預處理        
4.3 資料預處理 4.3.1 標準化 資料預處理 標準化:
sklearn.preprocessing.scale
sklearn.preprocessing.StandardScaler
scale與StandardScaler都是將將特徵轉化成標準正態分佈(即均值為0,方差為1),且都可以處理scipy.sparse矩陣,但一般選擇後者
    資料預處理
區間縮放:
sklearn.preprocessing.MinMaxScaler
sklearn.preprocessing.MaxAbsScale
MinMaxScaler預設為0-1縮放,MaxAbsScaler可以處理scipy.sparse矩陣
  4.3.2 非線性轉換 資料預處理 sklearn.preprocessing.QuantileTransformer 可以更少的受異常值的影響
  4.3.3 歸一化 資料預處理 sklearn.preprocessing.Normalizer 將行向量轉換為單位向量,目的在於樣本向量在點乘運算或其他核函式計算相似性時,擁有統一的標準
  4.3.4 二值化 資料預處理 sklearn.preprocessing.Binarizer 通過設定閾值對定量特徵處理,獲取布林值
  4.3.5 啞編碼 資料預處理 sklearn.preprocessing.OneHotEncoder 對定性特徵編碼。也可用pandas.get_dummies實現
  4.3.6 缺失值計算 資料預處理 sklearn.preprocessing.Imputer 可用三種方式填充缺失值,均值(預設)、中位數和眾數。也可用pandas.fillna實現
  4.3.7 多項式轉換 資料預處理 sklearn.preprocessing.PolynomialFeatures  
  4.3.8 自定義轉換 資料預處理 sklearn.preprocessing.FunctionTransformer