SKlearn中的函数学习总结(持续更新)
关于SKlearn中的函数学习及关键代码部分,会持续更新
(参考sklearn官方文档)
一:分类、回归
二:降维
三:模型评估与选择
四:数据预处理
五:模型保存
大类 | 小类 | 适用问题 | 实现文档 | 说明 | 重要代码 |
一、分类、回归 |
|||||
1.1 广义线性模型 | 1.1.1 普通最小二乘法 | 回归 | sklearn.linear_model.LinearRegression |
from sklearn.linear_model import LinearRegression#引入线性回归模型 ###训练数据### model=LinearRegression() model.fit(data_X,data_y) # 训练数据 model.predict(data_X[:4,:])#预测前4个数据 ###属性和功能### print(model.coef_) #_coef得到模型的系数 print(model.intercept_) #_intercept得到模型的截距 print(model.get_params())#得到模型的参数 # 对 Model 用 R^2 的方式进行打分,输出精确度 print(model.score(data_X,data_y))#对训练情况进行打分 (可以使用外部计算) |
|
注:本节中所有的回归模型皆为线性回归模型 | 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 | 优点: (1)适用于手边数据(2)可用于在估计过程中包含正规化参数 | ||
sklearn.linear_model.ARDRegression | 缺点:耗时 | ||||
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 | SVC可用于非线性分类,可指定核函数; | |
sklearn.svm.NuSVC | NuSVC与SVC唯一的不同是可控制支持向量的个数; | ||||
sklearn.svm.LinearSVC | 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 | (1)不太适用于高维数据 | ||
sklearn.neighbors.RadiusNeighborsClassifier | (2)两种实现只是距离度量不一样,后者更适合非均匀的采样 | ||||
1.6.3 Nearest Neighbors Regression | 回归 | sklearn.neighbors.KNeighborsRegressor | 同上 |
from sklearn.neighbors import KNeighborsClassifier knn = KNeighborsClassifier() knn.fit(X_train, y_train) print(knn.predict(X_test)) print(y_test) |
|
sklearn.neighbors.RadiusNeighborsRegressor | |||||
1.6.5 Nearest Centroid Classifier | 分类 | sklearn.neighbors.NearestCentroid | 每个类对应一个质心,测试样本被分类到距离最近的质心所在的类别 | ||
1.7 高斯过程(GP/GPML) | 1.7.1 GPR | 回归 | sklearn.gaussian_process. | 与KRR一样使用了核技巧 | |
GaussianProcessRegressor | |||||
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 | 1.11.4 Gradient Tree Boosting | 分类/回归 | GBDT: | 基学习器为决策树 | |
(XGBoost提供了sklearn接口) | 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.chi2,结合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: | (1)IPCA比PCA有更好的内存效率,适合超大规模降维。 | |
sklearn.decomposition.PCA | (2)KPCA可以进行非线性降维 | ||||
IPCA: | (3)SPCA是PCA的变体,降维后返回最佳的稀疏矩阵 | ||||
sklearn.decomposition.IncrementalPCA | |||||
KPCA: | |||||
sklearn.decomposition.KernelPCA | |||||
SPCA: | |||||
sklearn.decomposition.SparsePCA | |||||
2.5.2 截断奇异值分解 | 降维 | sklearn.decomposition.TruncatedSVD | 可以直接对scipy.sparse矩阵处理 | ||
2.5.3 字典学习 | -- | sklearn.decomposition.SparseCoder | SparseCoder实现稀疏编码,DictionaryLearning实现字典学习 | ||
sklearn.decomposition.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,neg_mean_squared_error,便得到对于不同参数时的损失函数 |
from sklearn.cross_validation import cross_val_score # K折交叉验证模块
#使用K折交叉验证模块 #将5次的预测准确率打印出 #将5次的预测准确平均率打印出 |
|
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 | 横轴为训练数据大小,纵轴为模型得分,Sklearn.learning_curve中的learning curve可以很直观的看出Model学习的进度,对比发现有没有过拟合 | ||
四、数据预处理 |
|||||
4.3 数据预处理 | 4.3.1 标准化 | 数据预处理 | 标准化: | scale与StandardScaler都是将将特征转化成标准正态分布(即均值为0,方差为1),且都可以处理scipy.sparse矩阵,但一般选择后者 |
from sklearn import preprocessing #标准化数据模块 import numpy as np #建立Array #将normalized后的a打印出 |
sklearn.preprocessing.scale | |||||
sklearn.preprocessing.StandardScaler | |||||
数据预处理 | MinMaxScaler默认为0-1缩放,MaxAbsScaler可以处理scipy.sparse矩阵 |
###利用minmax方式对数据进行规范化### X=preprocessing.minmax_scale(X) |
|||
区间缩放: | |||||
sklearn.preprocessing.MinMaxScaler | |||||
sklearn.preprocessing.MaxAbsScale | |||||
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 | |||
五、模型保存 |
|||||
5.模型保存 | 5.1 使用pickle保存 | 模型保存 | https://morvanzhou.github.io/tutorials/machine-learning/sklearn/3-5-save/ | 我们花费很长时间用来训练数据,调整参数,得到最优模型。但如果改变平台,我们还需要重新训练数据和修正参数来得到模型,将会非常的浪费时间。此时我们可以先将model保存起来,然后便可以很方便的将模型迁移。最后可以知道joblib在使用上比较容易,读取速度也相对pickle快。 |
import pickle #pickle模块
#保存Model(注:save文件夹要预先建立,否则会报错) #读取Model |
5.2 使用joblib 保存 |
from sklearn.externals import joblib #jbolib模块
#保存Model(注:save文件夹要预先建立,否则会报错) #读取Model #测试读取后的Model |
SKlearn中的函数学习总结(持续更新)相关推荐
- 重拾CCNA,学习笔记持续更新ing......(4)
重拾CCNA,学习笔记持续更新ing......(4) 路由器作用功能的经典解说(笑)(非原创) 假设你的名字叫小不点,你住在一个大院子里,你的邻居有很多小伙伴,在门口传达室还有个看大门的李大爷,李大 ...
- Sklearn中predict_proba函数用法及原理详解
Sklearn中predict_proba函数用法及原理详解(以logistic回归为例) 网上对predict_proba的数学原理解释的太少了,也不明确,特意总结一下,并给出有些不能用该方法的原因 ...
- 机器学习实战中的函数学习记录
title: 机器学习实战中的函数学习记录 date: 2020-05-01 09:20:50 tags: [python函数] categories: 机器学习实战 更多内容请关注我的博客 记录机器 ...
- typescript-----javascript的超集,typescript学习笔记持续更新中......
Typescript,冲! Typescript 不是一门全新的语言,Typescript是 JavaScript 的超集,它对 JavaScript进行了一些规范和补充.使代码更加严谨. 一个特别好 ...
- Python进阶和高阶学习(持续更新)
Python是一门非常方便的静态语言,使用语法简洁,语言格式更易于让大众理解,在当今的大数据的浪潮下,Python的数据分析,机器学习等等起到了巨大的作用,因此学习Python必不可少. 当然在我看来 ...
- Java面试知识学习(持续更新)
一.Java基础 1.java语言有什么特点 面向对象(封装,继承,多态): 平台无关性,平台无关性的具体表现在于,Java 是"一次编写,到处运行(Write Once,Run any W ...
- C语言字符串常用函数总结(持续更新)
最近在重温C语言的一些基础知识,感觉C语言字符串操作还是比较难的,在学习的过程中总结了一些常用的字符串相关函数,包括C语言字符串输入.字符串输入.计算字符串长度.字符串赋值.字符串分割.字符串拼接.字 ...
- Admin.NET管理系统(vue3等前后端分离)学习笔记--持续更新
我的学习笔记 - 9iAdmin.NET 欢迎学习交流 (一)前端笔记 1.1 关于.env的设置 1.2 关于路由模式问题 1.3 关于 vue.config.ts 1.4 关于 打包(pnpm r ...
- iOS开发- ios学习资源(持续更新)
mark一些自己在学习过程中收集的资源.免得需要的时候没地方找. 持续更新.(最新更新时间: 2014.4.4) 1.苹果官方文档 构建iOS程序:下面的这篇文章介绍了 iOS 程序开发的过程: St ...
最新文章
- Python实现链表
- [转]建一个XMLHttpRequest对象池
- 专业网络推广浅析蜘蛛对网站有抓取但没收录的现象
- VBScript教程-第一章. 脚本的定义和术语
- 道路运输车辆卫星定位系统JT/T808服务实现和压测
- 陝西省2021年高考成绩查询,2021年高考陕西省各批次录取分数线预测,你会感到意外吗?...
- CTreeCtrl展开树形所有节点
- 2021年95后医美人群洞察报告
- mysql开通访问权限_mysql 用户远程访问权限开通
- 视频:网站建设-如何利用网络赚大钱2
- codejock toolkit pro 19.2 for MFC
- div内容上下左右居中
- java可以做游戏吗_Java 能做游戏么?
- 注册电子邮箱你知道哪家好吗?好用的电子邮箱盘点
- linux bind日志级别,Bind日志配置。
- 论站长赚钱之七剑下天山
- 如何抓取BT天堂电影数据
- QT OpenCV人脸考勤识别
- 华为eNSP基础命令
- 苹果体验店:鲜为人知的乔布斯的秘密
热门文章
- Redis基本数据类型、持久化机制、集群模式、淘汰策略、缓存穿透、击穿、雪崩、常见面试题大集合!
- 如何在网站上设置在线QQ客服
- 关于 Windows 10 如何扩展分区与合并分区
- cropped-p_large_a5mR_25c0000419eb2d0c.jpg
- 公司企业邮箱登陆客户端,邮件服务器如何设置?
- 学习纯软件开发(如Java/Python...)还是C语言、嵌入式、物联网呢?
- swift锁屏播放,音乐进度更新,专辑,歌手名显示
- rtx3090ti什么水平 rtx3090ti显卡什么级别 rtx3090ti显卡怎么样
- 人生重开模拟器(未完工)
- 7. CUDA内存访问(一)提高篇------按部就班 ------GPU的革命