https://blog.csdn.net/fuqiuai/article/details/79495865
前言
sklearn想必不用我多介紹了,一句話,她是機器學習領域中最知名的python模塊之一,若想要在機器學習領域有一番建樹,必繞不開sklearn
sklearn的官網鏈接http://scikit-learn.org/stable/index.html#
首先,放上一張官網上的sklearn的結構圖:
目錄
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
我的github上也有,歡迎大家去看
---------------------
作者:fuqiuai
來源:CSDN
原文:https://blog.csdn.net/fuqiuai/article/details/79495865
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
