sklearn学习总结(超全面)
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 
版权声明:本文为博主原创文章,转载请附上博文链接!
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号