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
版权声明:本文为博主原创文章,转载请附上博文链接!

sklearn学习总结(超全面)的更多相关文章

  1. Java多线程学习(吐血超详细总结)

    Java多线程学习(吐血超详细总结) 林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 写在前面的话:此文只能说是java多线程的一个入门,其实 ...

  2. 使用深度学习的超分辨率介绍 An Introduction to Super Resolution using Deep Learning

    使用深度学习的超分辨率介绍 关于使用深度学习进行超分辨率的各种组件,损失函数和度量的详细讨论. 介绍 超分辨率是从给定的低分辨率(LR)图像恢复高分辨率(HR)图像的过程.由于较小的空间分辨率(即尺寸 ...

  3. sklearn中的超参数调节

    进行参数的选择是一个重要的步骤.在机器学习当中需要我们手动输入的参数叫做超参数,其余的参数需要依靠数据来进行训练,不需要我们手动设定.进行超参数选择的过程叫做调参. 进行调参应该有一下准备条件: 一个 ...

  4. sklearn学习笔记之简单线性回归

    简单线性回归 线性回归是数据挖掘中的基础算法之一,从某种意义上来说,在学习函数的时候已经开始接触线性回归了,只不过那时候并没有涉及到误差项.线性回归的思想其实就是解一组方程,得到回归函数,不过在出现误 ...

  5. sklearn学习笔记

    用Bagging优化模型的过程:1.对于要使用的弱模型(比如线性分类器.岭回归),通过交叉验证的方式找到弱模型本身的最好超参数:2.然后用这个带着最好超参数的弱模型去构建强模型:3.对强模型也是通过交 ...

  6. sklearn学习 第一篇:knn分类

    K临近分类是一种监督式的分类方法,首先根据已标记的数据对模型进行训练,然后根据模型对新的数据点进行预测,预测新数据点的标签(label),也就是该数据所属的分类. 一,kNN算法的逻辑 kNN算法的核 ...

  7. sklearn 学习 第一篇:分类

    分类属于监督学习算法,是指根据已有的数据和标签(分类)进行学习,预测未知数据的标签.分类问题的目标是预测数据的类别标签(class label),可以把分类问题划分为二分类和多分类问题.二分类是指在两 ...

  8. sklearn.GridSearchCV选择超参

    from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn.model ...

  9. SKlearn | 学习总结

    1 简介 scikit-learn,又写作sklearn,是一个开源的基于python语言的机器学习工具包.它通过NumPy, SciPy和Matplotlib等python数值计算的库实现高效的算法 ...

随机推荐

  1. 采用get方式提交数据到服务器实例

    GetDemo项目目录 一.编写StreamTools.java /** * */ package com.hyzhou.getdemo.utiils; import java.io.ByteArra ...

  2. EhCache初体验

    一.简介 EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点.Ehcache是一种广泛使用的开源Java分布式缓存.主要面向通用缓存,Java EE和轻量级容器.它具有内存和磁盘存 ...

  3. vsftpd下错误之:500 OOPS

    vsftpd下错误之:500 OOPS.vsftpd 是在Linux发行版中最推崇的一种FTP服务器程序,vsftpd的特点:小巧轻快.安全易用等. Linux也是为人们所常用的操作系统之一.这里主要 ...

  4. Ansible 安装和管理服务

    ansible 使用 yum 模块来安装软件包,使用 service 模块来启动软件: [root@localhost ~]$ ansible 192.168.119.134 -m yum -a &q ...

  5. C语言中一个字符数组里面的所有元素变成一个字符串

    #include <string.h> int main() // 这里为了方便直接用main函数 {     char array[] = { 'h', 'e', 'l', 'l', ' ...

  6. STL——heap结构及算法

    heap(隐式表述,implicit representation) 1. heap概述 : vector + heap算法 heap并不归属于STL容器组件,它是个幕后英雄,扮演priority q ...

  7. 安装win7到移动硬盘

    jpg改rar http://www.360doc.com/content/16/0816/10/19373891_583556875.shtml

  8. TCP数据传输过程详解

    在学习三次握手的时候,我们知道其中有seq.ack两个序列号. 如果不仔细了解,那么可能只知道发回去的时候要加一. 下文将着重介绍,关于序列号的传输过程. 最关键的一句话:序列号为当前端成功发送的数据 ...

  9. 中国标准时间、‘yyyy-MM-dd’格式时间转为时间戳

    中国标准时间转为时间戳 let _time="Tue Mar 20 2018 00:00:00 GMT+0800 (中国标准时间)"; console.log(Date.parse ...

  10. 2015.8.2js-19(完美运动框架)

    /*完美运动框架*/ //1.先清除定时期,2,获取样式,如果是opacity则单独解决,3,定义速度,4,定义当前值是否到达目的地,5,判断当前值是否到达目的地,6运动基本,如果是opacity f ...