sklearn学习总结(超全面)
https://blog.csdn.net/fuqiuai/article/details/79495865
?
前言
sklearn想必不用我多介紹了,一句話,她是機器學(xué)習(xí)領(lǐng)域中最知名的python模塊之一,若想要在機器學(xué)習(xí)領(lǐng)域有一番建樹,必繞不開sklearn
sklearn的官網(wǎng)鏈接http://scikit-learn.org/stable/index.html#
首先,放上一張官網(wǎng)上的sklearn的結(jié)構(gòu)圖:
目錄
1. 分類、回歸
2. 降維
3. 模型評估與選擇
4. 數(shù)據(jù)預(yù)處理
大類 小類 適用問題 實現(xiàn) 說明
分類、回歸
1.1 廣義線性模型 1.1.1 普通最小二乘法 回歸 sklearn.linear_model.LinearRegression
注:本節(jié)中所有的回歸模型皆為線性回歸模型 1.1.2 Ridge/嶺回歸 回歸 sklearn.linear_model.Ridge 解決兩類回歸問題:
一是樣本少于變量個數(shù)
二是變量間存在共線性
1.1.3 Lasso 回歸 sklearn.linear_model.Lasso 適合特征較少的數(shù)據(jù)
1.1.4 Multi-task Lasso 回歸 sklearn.linear_model.MultiTaskLasso y值不是一元的回歸問題
1.1.5 Elastic Net 回歸 sklearn.linear_model.ElasticNet 結(jié)合了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 適合高維數(shù)據(jù)
1.1.8 LARS Lasso 回歸 sklearn.linear_model.LassoLars (1)適合高維數(shù)據(jù)使用
(2)LARS算法實現(xiàn)的lasso模型
1.1.9 Orthogonal Matching Pursuit (OMP) 回歸 sklearn.linear_model.OrthogonalMatchingPursuit 基于貪心算法實現(xiàn)
1.1.10 貝葉斯回歸 回歸 sklearn.linear_model.BayesianRidge
sklearn.linear_model.ARDRegression 優(yōu)點: (1)適用于手邊數(shù)據(jù)(2)可用于在估計過程中包含正規(guī)化參數(shù)
缺點:耗時
1.1.11 Logistic regression 分類 sklearn.linear_model.LogisticRegression
1.1.12 SGD(隨機梯度下降法) 分類
/回歸 sklearn.linear_model.SGDClassifier
sklearn.linear_model.SGDRegressor 適用于大規(guī)模數(shù)據(jù)
1.1.13 Perceptron 分類 sklearn.linear_model.Perceptron 適用于大規(guī)模數(shù)據(jù)
1.1.14 Passive Aggressive Algorithms 分類
/回歸 sklearn.linear_model.
PassiveAggressiveClassifier
sklearn.linear_model.
PassiveAggressiveRegressor 適用于大規(guī)模數(shù)據(jù)
1.1.15 Huber Regression 回歸 sklearn.linear_model.HuberRegressor 能夠處理數(shù)據(jù)中有異常值的情況
1.1.16 多項式回歸 回歸 sklearn.preprocessing.PolynomialFeatures 通過PolynomialFeatures將非線性特征轉(zhuǎn)化成多項式形式,再用線性模型進行處理
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 將核技巧應(yīng)用到嶺回歸(1.1.2)中,以實現(xiàn)非線性回歸
1.4 支持向量機 1.4.1 SVC,NuSVC,LinearSVC 分類 sklearn.svm.SVC
sklearn.svm.NuSVC
sklearn.svm.LinearSVC SVC可用于非線性分類,可指定核函數(shù);
NuSVC與SVC唯一的不同是可控制支持向量的個數(shù);
LinearSVC用于線性分類
1.4.2 SVR,NuSVR,LinearSVR 回歸 sklearn.svm.SVR
sklearn.svm.NuSVR
sklearn.svm.LinearSVR 同上,將"分類"變成"回歸"即可
1.4.3 OneClassSVM 異常檢測 sklearn.svm.OneClassSVM 無監(jiān)督實現(xiàn)異常值檢測
1.5 隨機梯度下降 同1.1.12
1.6 最近鄰 1.6.1 Unsupervised Nearest Neighbors – sklearn.neighbors.NearestNeighbors 無監(jiān)督實現(xiàn)K近鄰的尋找
1.6.2 Nearest Neighbors Classification 分類 sklearn.neighbors.KNeighborsClassifier
sklearn.neighbors.RadiusNeighborsClassifier (1)不太適用于高維數(shù)據(jù)
(2)兩種實現(xiàn)只是距離度量不一樣,后者更適合非均勻的采樣
1.6.3 Nearest Neighbors Regression 回歸 sklearn.neighbors.KNeighborsRegressor
sklearn.neighbors.RadiusNeighborsRegressor 同上
1.6.5 Nearest Centroid Classifier 分類 sklearn.neighbors.NearestCentroid 每個類對應(yīng)一個質(zhì)心,測試樣本被分類到距離最近的質(zhì)心所在的類別
1.7 高斯過程(GP/GPML) 1.7.1 GPR 回歸 sklearn.gaussian_process.
GaussianProcessRegressor 與KRR一樣使用了核技巧
1.7.3 GPC 分類 sklearn.gaussian_process.
GaussianProcessClassifier
1.8 交叉分解 實現(xiàn)算法:CCA和PLS – – 用來計算兩個多元數(shù)據(jù)集的線性關(guān)系,當預(yù)測數(shù)據(jù)比觀測數(shù)據(jù)有更多的變量時,用PLS更好
1.9 樸素貝葉斯 1.9.1 高斯樸素貝葉斯 分類 sklearn.naive_bayes.GaussianNB 處理特征是連續(xù)型變量的情況
1.9.2 多項式樸素貝葉斯 分類 sklearn.naive_bayes.MultinomialNB 最常見,要求特征是離散數(shù)據(jù)
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 可以指定基學(xué)習(xí)器,默認為決策樹
注: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 基學(xué)習(xí)器為決策樹
1.11.3 AdaBoost 分類/回歸 sklearn.ensemble.AdaBoostClassifier
sklearn.ensemble.AdaBoostRegressor 可以指定基學(xué)習(xí)器,默認為決策樹
號外:最近特別火的兩個梯度提升算法,LightGBM和XGBoost
(XGBoost提供了sklearn接口) 1.11.4 Gradient Tree Boosting 分類/回歸 GBDT:
sklearn.ensemble.GradientBoostingClassifier
GBRT:
sklearn.ensemble.GradientBoostingRegressor 基學(xué)習(xí)器為決策樹
1.11.5 Voting Classifier 分類 sklearn.ensemble.VotingClassifier 須指定基學(xué)習(xí)器
1.12 多類與多標簽算法 – – – sklearn中的分類算法都默認支持多類分類,其中LinearSVC、 LogisticRegression和GaussianProcessClassifier在進行多類分類時需指定參數(shù)multi_class
1.13 特征選擇 1.13.1 過濾法之方差選擇法 特征選擇 sklearn.feature_selection.VarianceThreshold 特征選擇方法分為3種:過濾法、包裹法和嵌入法。過濾法不用考慮后續(xù)學(xué)習(xí)器
1.13.2 過濾法之卡方檢驗 特征選擇 sklearn.feature_selection.SelectKBest
1.13.3 包裹法之遞歸特征消除法 特征選擇 sklearn.feature_selection.RFE 包裹法需考慮后續(xù)學(xué)習(xí)器,參數(shù)中需輸入基學(xué)習(xí)器
1.13.4 嵌入法 特征選擇 sklearn.feature_selection.SelectFromModel 嵌入法是過濾法和嵌入法的結(jié)合,參數(shù)中也需輸入基學(xué)習(xí)器
1.14 半監(jiān)督 1.14.1 Label Propagation 分類/回歸 sklearn.semi_supervised.LabelPropagation
sklearn.semi_supervised.LabelSpreading
1.15 保序回歸 – 回歸 sklearn.isotonic.IsotonicRegression
1.16 概率校準 – – – 在執(zhí)行分類時,獲得預(yù)測的標簽的概率
1.17 神經(jīng)網(wǎng)絡(luò)模型 (待寫)
降維
2.5 降維 2.5.1 主成分分析 降維 PCA:
sklearn.decomposition.PCA
IPCA:
sklearn.decomposition.IncrementalPCA
KPCA:
sklearn.decomposition.KernelPCA
SPCA:
sklearn.decomposition.SparsePCA (1)IPCA比PCA有更好的內(nèi)存效率,適合超大規(guī)模降維。
(2)KPCA可以進行非線性降維
(3)SPCA是PCA的變體,降維后返回最佳的稀疏矩陣
2.5.2 截斷奇異值分解 降維 sklearn.decomposition.TruncatedSVD 可以直接對scipy.sparse矩陣處理
2.5.3 字典學(xué)習(xí) – sklearn.decomposition.SparseCoder
sklearn.decomposition.DictionaryLearning SparseCoder實現(xiàn)稀疏編碼,DictionaryLearning實現(xiàn)字典學(xué)習(xí)
模型評估與選擇
3.1 交叉驗證/CV 3.1.1 分割訓(xùn)練集和測試集 – sklearn.model_selection.train_test_split
3.1.2 通過交叉驗證評估score – sklearn.model_selection.cross_val_score score對應(yīng)性能度量,分類問題默認為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 調(diào)參 3.2.1 網(wǎng)格搜索 – sklearn.model_selection.GridSearchCV 最常用的調(diào)參方法??蓚魅雽W(xué)習(xí)器、學(xué)習(xí)器參數(shù)范圍、性能度量score(默認為accuracy_score或r2_score )等
3.2.2 隨機搜索 – sklearn.model_selection.RandomizedSearchCV 參數(shù)傳入同上
3.3 性能度量 3.3.1 分類度量 – – 對應(yīng)交叉驗證和調(diào)參中的score
3.3.2 回歸度量 – –
3.3.3 聚類度量 – –
3.4 模型持久性 – – – 使用pickle存放模型,可以使模型不用重復(fù)訓(xùn)練
3.5 驗證曲線 3.5.1 驗證曲線 – sklearn.model_selection.validation_curve 橫軸為某個參數(shù)的值,縱軸為模型得分
3.5.2 學(xué)習(xí)曲線 – sklearn.model_selection.learning_curve 橫軸為訓(xùn)練數(shù)據(jù)大小,縱軸為模型得分
數(shù)據(jù)預(yù)處理
4.3 數(shù)據(jù)預(yù)處理 4.3.1 標準化 數(shù)據(jù)預(yù)處理 標準化:
sklearn.preprocessing.scale
sklearn.preprocessing.StandardScaler scale與StandardScaler都是將將特征轉(zhuǎn)化成標準正態(tài)分布(即均值為0,方差為1),且都可以處理scipy.sparse矩陣,但一般選擇后者
數(shù)據(jù)預(yù)處理
區(qū)間縮放:
sklearn.preprocessing.MinMaxScaler
sklearn.preprocessing.MaxAbsScale MinMaxScaler默認為0-1縮放,MaxAbsScaler可以處理scipy.sparse矩陣
4.3.2 非線性轉(zhuǎn)換 數(shù)據(jù)預(yù)處理 sklearn.preprocessing.QuantileTransformer 可以更少的受異常值的影響
4.3.3 歸一化 數(shù)據(jù)預(yù)處理 sklearn.preprocessing.Normalizer 將行向量轉(zhuǎn)換為單位向量,目的在于樣本向量在點乘運算或其他核函數(shù)計算相似性時,擁有統(tǒng)一的標準
4.3.4 二值化 數(shù)據(jù)預(yù)處理 sklearn.preprocessing.Binarizer 通過設(shè)置閾值對定量特征處理,獲取布爾值
4.3.5 啞編碼 數(shù)據(jù)預(yù)處理 sklearn.preprocessing.OneHotEncoder 對定性特征編碼。也可用pandas.get_dummies實現(xiàn)
4.3.6 缺失值計算 數(shù)據(jù)預(yù)處理 sklearn.preprocessing.Imputer 可用三種方式填充缺失值,均值(默認)、中位數(shù)和眾數(shù)。也可用pandas.fillna實現(xiàn)
4.3.7 多項式轉(zhuǎn)換 數(shù)據(jù)預(yù)處理 sklearn.preprocessing.PolynomialFeatures
4.3.8 自定義轉(zhuǎn)換 數(shù)據(jù)預(yù)處理 sklearn.preprocessing.FunctionTransformer
我的github上也有,歡迎大家去看
---------------------
作者:fuqiuai
來源:CSDN
原文:https://blog.csdn.net/fuqiuai/article/details/79495865
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接!
轉(zhuǎn)載于:https://www.cnblogs.com/fengff/p/9984606.html
總結(jié)
以上是生活随笔為你收集整理的sklearn学习总结(超全面)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Centos中提示You have ne
- 下一篇: 《使命召唤14》老兵难度坦克关80血打法