scikit

Scikit-learn是基于NumPy、SciPy和Matplotlib的开源Python机器学习包,它封装了一系列数据预处理、机器学习算法、模型选择等工具,是数据分析师首选的机器学习工具包。自2007年发布以来,scikit-learn已经成为Python重要的机器学习库了,scikit-learn简称sklearn,在Sklearn里面有六大任务模块:分别是分类、回归、聚类、降维、模型选择和预处理,此外还有一个数据引入模块。

Scikit-learn所需的依赖项:

Tips:Scikit-learn绘图功能,需要Matplotlib(>=1.5.1)。一些scikit-learn示例可能需要一个或多个额外依赖项:scikit-image(>=0.12.3)、panda(>=0.18.0)

如果电脑环境中已有合适的numpy和scipy版本,安装scikit-learn最简单的方法是使用pip

pipinstall-Uscikit-learn如果没有任何合适的依赖项,强烈建议使用conda安装。

condainstallscikit-learn当然也可以使用anaconda的交互界面进行安装。

升级scikit-learn:

condaupdatescikit-learn卸载scikit-learn:

condaremovescikit-learn3.数据引入sklearn的datasets中提供一些训练数据,我们可以使用这些数据来进行分类或者回归等等。其中包含以下几种获取数据的方式:

importnumpyasnpfromsklearnimportpreprocessing#标准化:将数据转换为均值为0,方差为1的数据,即标注正态分布的数据x=np.array([[1,-1,2],[2,0,0],[0,1,-1]])x_scale=preprocessing.scale(x)print(x_scale.mean(axis=0),x_scale.std(axis=0))std_scale=preprocessing.StandardScaler().fit(x)x_std=std_scale.transform(x)print(x_std.mean(axis=0),x_std.std(axis=0))#将数据缩放至给定范围(0-1)mm_scale=preprocessing.MinMaxScaler()x_mm=mm_scale.fit_transform(x)print(x_mm.mean(axis=0),x_mm.std(axis=0))#正则化nor_scale=preprocessing.Normalizer()x_nor=nor_scale.fit_transform(x)print(x_nor.mean(axis=0),x_nor.std(axis=0))#将分类特征或数据标签转换位独热编码ohe=preprocessing.OneHotEncoder()x1=([["大象"],["猴子"],["老虎"],["老鼠"]])x_ohe=ohe.fit(x1).transform([["老虎"]]).toarray()print(x_ohe)特征放缩的意义:

对于分类、回归、聚类、降维算法的选择,可以参照下图中的算法选择路径图:

从图中可以看到,按照是否为分类问题划分成了两大块,其中分类和聚类属于分类的问题(虽然聚类没有给定类别),回归和降维属于非分类的问题。同时,四类算法也可以按照数据是否有标签划分为监督学习(分类、回归)和无监督学习(聚类、降维)。

比如说,使用历年考试真题准备将来的考试,在历年考试真题取得好成绩(训练误差)并不能保证未来考试成绩好(泛化误差),我们训练模型的目的是希望训练好的模型泛化误差越低越好。

下图是机器学习实操的7个步骤:

那么为什么要分为那么多种数据集呢,首先我们知道训练模型的目的是使得模型的泛化能力越来越强,在训练集上,我们不断进行前向转播和反向传播更新参数使得在训练误差越来越小,但是这并不能代表这个模型泛化能力很强,因为它只是在拟合一个给定的数据集(就好比做数学题用背答案的办法,正确率很高,但并不代表你学到了东西),那么如何评判这个模型泛化能力强呢?就用到了测试数据集,测试数据集就像是期末考试,在模型最终训练完成后才会使用一次,在最终评估之前不能使用这个数据集(好比在考试前不能泄题一样)。判断模型泛化能力强弱的途径有了,但是我们知道在神经网络中有很多超参数也会对模型泛化能力造成影响,那么如何判断不同参数对模型的影响呢,毕竟测试集只能用一次,而参数调整需要很多次,而且也不能使用训练数据集,这样只会拟合训练数据集,无法证明其泛化能力提升,于是我们又划分出了一个数据集,验证数据集,我们的模型训练好之后用验证集来看看模型的表现如何,同时通过调整超参数,让模型处于最好的状态。用一个比喻来说:

我们可以使用交叉验证或其他划分数据集的方法对数据集多次划分,以得出模型平均的性能而不是偶然结果。sklearn有很多划分数据集的方法,它们都在model_selection里面,常用的有

以上方法除了留一法都有几个同样的参数:

以上的划分方法各有各的优点,留一法、K折交叉验证充分利用了数据,但开销比随机划分要高,随机划分方法可以较好的控制训练集与测试集的比例,(通过设置train_size参数)详细可查看官方文档。

GridSearchCV的名字其实可以拆分为两部分,GridSearch和CV,即网格搜索和交叉验证。这两个名字都非常好理解。网格搜索,搜索的是参数,即在指定的参数范围内,按步长依次调整参数,利用调整的参数训练学习器,从所有的参数中找到在验证集上精度最高的参数,这其实是一个训练和比较的过程。GridSearchCV可以保证在指定的参数范围内找到精度最高的参数,但是这也是网格搜索的缺陷所在,他要求遍历所有可能参数的组合,在面对大数据集和多参数的情况下,非常耗时。

estimator:所使用分类器

param_grid:值为字典或者列表,即需要最优化的参数的取值

scoring:准确度评价标准,默认为None,根据所选模型不同,评价准则不同

cv:交叉验证参数,默认None(三折交叉验证,即fold数量为3),也可以是训练/测试数据的生成器

refit:默认为True,即在搜索参数结束后,用最佳参数结果再次fit一遍全部数据集

iid:默认为True,即默认个个样本fold概率分布一直,误差估计为所有样本的和,而非各个fold的平均

verbose:日志冗长度,int:若冗长度为0,不输出训练过程;若冗长度为1,偶尔输出(一般设置为1);若冗长度>1,对每个子模型都输出

n_jobs:并行数,一般设置为-1

pre_dispatch:总共分发的并行任务数,当n_jobs大于1时,数据将在每个运行点进行复制,可能会导致OOM(内存溢出)。通过设置pre_dispatch参数,可以预先划分总共的job数量,使数据最多被复制pre_dispatch次

grid.fit():运行网格搜索

grid.score():运行网格搜索后模型得分

best_estimator_:最好的参数模型

best_params_:描述已取得最佳结果的参数的组合

best_score_:提供优化过程期间观察到的最好评分

cv_results_:每次交叉验证后的验证集和训练集的准确率结果

估计器(Estimator)其实就是模型,它用于对数据的预测或回归。基本上估计器都会有以下几个方法:

使用估计器的工作流:

转化器(Transformer)用于对数据的处理,例如标准化、降维以及特征选择等等。同与估计器的使用方法类似:

以上仅仅是简单的概括sklearn的函数的一些特点。sklearn绝大部分的函数的基本用法大概如此。但是不同的估计器会有自己不同的属性,例如随机森林会有Feature_importance来对衡量特征的重要性,而逻辑回归有coef_存放回归系数intercept_则存放截距等等。并且对于机器学习来说模型的好坏不仅取决于你选择的是哪种模型,很大程度上与你超参的设置有关。因此使用sklearn的时候一定要去看看官方文档,以便对超参进行调整。

THE END
1.在线字典,该规范了!记者调查发现,一些在线字典网站打着“新华字典”旗号,吸引用户点击访问,实际提供的内容却错误百出,有的字音字形有误,有的词语释义不当,提供的例句更是前言不搭后语,误导读者。 记者用搜索引擎搜索“在线新华字典”,显示出多个“免费查询”网页。 在线字典乱象频出 https://mp.weixin.qq.com/s?__biz=MzA3ODExNTc2Ng==&mid=2651272987&idx=4&sn=f8c9fd99a02a7ca9fc7e1d61bf2bf759&chksm=85fdf1cb69357f91a9a215c00279e63c2498c6572e925c846d2f95c1a4070596795760a4c60e&scene=27
2.在线判别双字典学习的目标跟踪算法传统目标跟踪算法的模板更新方法易导致目标模型漂移,为此提出一种在线判别双字典学习算法更新目标模板.双字典由目标字典和投影字典组成,其中目标字典表示目标模板.根据目标和背景样本在线迭代学习双字典,保证获其对目标维持高度描述性.通过判别函数的约束,不但降低背景信息更新到目标字典中的概率,而且保证真实目标在投影近字典http://xwxt.sict.ac.cn/CN/abstract/abstract3663.shtml
3.基于字典学习与等效视数的低剂量CT伪影抑制算法在线阅读 下载 引用 收藏 分享 打印 摘要:针对低剂量CT图像出现条形伪影的现象,提出了一种基于字典学习与等效视数(ENL)的伪影抑制算法.该方法首先利用平稳小波变换(SWT)对低剂量CT图像进行单层分解,并对高频图像训练字典,然后利用等效视数(ENL)对字典进行分区得到伪影字典和特征字典,并只对特征原子进行稀疏编码,经小https://d.wanfangdata.com.cn/periodical/hbgxyxb201906013
4.范慧杰5) 机器人在线学习和场景感知研究 经费来源:国家自然科学基金; 2014-2017 6) 基于稀疏表达和字典选择的一致异常行为算法研究 经费来源:国家自然科学基金; 2012-2014 7) 基于水平集理论PLIF火焰前锋与特征提取算法研究 经费来源:国家自然科学基金; 2009-2011 http://www.sia.cas.cn/vision/kytd/yjry/202307/t20230726_6834850.html
5.稀疏编码与字典学习在信号处理和图像处理中的应用二、字典学习的基本原理 字典学习是一种通过自动学习的方式来构建字典的方法。它的基本思想是从数据中学习出最能代表数据特征的基函数集合。字典学习可以分为无监督学习和有监督学习两种方法。在无监督学习中,字典学习算法根据数据的统计特性来构建字典。常见的无监督学习方法包括K-SVD算法、在线字典学习算法等。这些https://baijiahao.baidu.com/s?id=1789027883587442703&wfr=spider&for=pc
6.在线字典的学习算法测试源程序,包含飞行器飞行中的姿态控制,如标题中的“在线字典的学习算法测试源程序”指的是一个用于教育和学习的软件或代码库,它可能包含了一些算法的实现,供用户理解和测试。这里的关键词是“学习”和“测试”,表明这是一个教学资源,帮助用户掌握特定的编程概念或算法。 描述中提到的“飞行器飞行中的姿态控制”是指在航空工程领域中,如何通过计算机程序来管https://download.csdn.net/download/GZM888888/87517180
7.高光谱遥感影像稀疏表示与字典学习分类研究因此,本论文结合高光谱遥感影像自身特点,在对高光谱遥感影像稀疏表示方法进行系统分析和完善的基础上,按照对稀疏特性不同层级的理解并从特征多样性、模型多样性和字典完备性等角度出发,构建了高光谱遥感影像稀疏表示与字典学习分类框架,提出了多特征核稀疏表示学习、多核自适应协同表示学习和空间加权在线字典学习等算法。https://wap.cnki.net/touch/web/Dissertation/Article/-1019015426.html
8.系统工程与电子技术杂志中国航天科工集团公司二院主办稀疏字典学习海面微弱动目标检测 关键词:稀疏字典学习 海杂波抑制 信号重构 微弱动目标检测 针对强海杂波背景下微弱动目标信号提取困难、雷达检测性能差的问题,在稀疏表示理论的基础上,提出利用字典学习算〖JP2〗法抑制海杂波、重构目标信号。该算法通过K类奇异值分解(K-singular value decomposition,K-SVD)算法学习海https://www.youfabiao.com/xtgcydzjs/202001/
9.基于深度学习的推荐算法——推荐系统模型搭建基础及DeepCrossing免费在线预览全文 基于深度学习的推荐算法——推荐系统模型搭建基础及DeepCrossing原理 本章节从推荐系统模型搭建基础和DeepCr ssing原理讲解及实操两展开。 ?、推荐系统模型搭建基础 1. Keras搭建模型 keras搭建模型主要有两种模式,?种是Sequential API,另外?种是Functi nal API。前者主要是通过层的有序https://max.book118.com/html/2022/0413/6010025010004134.shtm
10.C/C++小型英汉电子词典(数据结构与算法)C/C++小型英汉电子词典(数据结构与算法) 17.小型英汉电子词典(***)问题描述:设计一个英汉电子词典,支持查找、插入、删除等功能。基本要求:实现字典常用的数据结构包括有序表、AVL树、Patricia Tree(简称PAT tree,它是一种压缩存储的二叉树结构)、散列表等,选一种数据结构,实现字典的基本操作,查找单词、插入单词(https://www.bilibili.com/read/cv40150375
11.8.特征工程五稀疏表示和字典学习五、稀疏表示和字典学习5.1 原理5.2 算法 作者华校专,曾任阿里巴巴资深算法工程师、智易科技首席算法研究员,现任腾讯高级研究员,《Python 大战机器学习》的作者。这是作者多年以来学习总结的笔记,经整理之后开源于世。目前还有约一半的内容在陆续整理中,已经整理好的内https://www.bookstack.cn/read/huaxiaozhuan-ai/spilt.5.9a94c12cac5bfe37.md
12.悄悄学习Doris,偷偷惊艳所有人ApacheDoris四万字小总结DorisDB 重新定义了 MPP 分布式架构,集群可扩展至数百节点,支持 PB 级数据规模,是当前唯一可以在大数据规模下进行在线弹性扩展的企业级分析型数据库。 DorisDB 还打造了全新的向量化执行引擎,单节点每秒可处理多达 100 亿行数据,查询速度比其他产品快 10-100 倍! https://xie.infoq.cn/article/b2250c2d887f69d8519a3f50b
13.稀疏表示字典学习KSVD算法详解与MATLAB实现(超清晰!稀疏表示字典学习KSVD算法详解与MATLAB实现(超清晰! 论文题目 K-SVD: An Algorithm for Designing Overcomplete Dictionaries for Sparse Representation 这篇论文的去噪效果还是很不错的,个人认为凡是学习图像去噪/复原这一方向的都应该学习。 我这篇文章是很久之前写的了,借鉴了一些大佬的理解,但由于时间久远,忘了哪https://www.pianshen.com/article/24621068785/
14.机器学习MachineLearning集智百科强化学习:训练数据(以奖励和惩罚的形式)只作为对程序在动态环境中的行为的反馈,例如自动驾驶或与对手玩游戏[5]。 无监督学习:没有标签给学习算法,留下它自己在其输入中找到结构。无监督学习本身可以是一个目标(发现数据中隐藏的模式),或者是一种达到目的的手段(特征学习)。 https://wiki.swarma.org/index.php?title=%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0_Machine_Learning
15.有道词典提出了一种二层学习算法来优化模糊规则基。 7. 26kb This paper proposes a dictionary learning algorithm which is applied to image de-noising. 本文提出一种超完备字典学习算法并应用于图像去噪。 8. 26kb How do you know what machine learning algorithm to choose for your classification problem?https://m.youdao.com/singledict?q=learning%20algorithm&dict=blng_sents&more=true
16.国学启蒙古诗词典apk下载国学启蒙古诗词典最新版下国学启蒙古诗词典最新版是一款在线学习诗词的软件,这款软件是由爱好国学,诗词,古诗,文言文,成语的团队所制作,收录了近154本国学经典和7万首诗词,古诗,文言文,并其中诗词,古诗,文言文,成语约8本,国学启蒙约29本。同时在这里,用户不仅可以随意翻阅你想学习的内容,从中领略国学魅力弘扬传统文化,还可以在线体验有声朗读https://www.ddooo.com/softdown/229822.htm
17.深入浅出字典学习(DictionaryLearning)y向量代表原有的图像(640000维),A是字典矩阵(K*640000),x是稀疏表示向量(K维),因为K远远小于N,我们认为,稀疏表示后的数据获得了大幅的压缩。求A的过程通常称为字典学习。已知A,求x的过程称为稀疏表示。通常这两者可以等同。在实际训练的过程中,为了减少计算量,通常将图像切割为小的patch(8*8或16*16),https://www.jianshu.com/p/f6e5d1cd21b9
18.基于字典学习的鲁棒光场显微澎湃号·湃客澎湃新闻图1 字典学习提升光场成像性能算法原理图 该研究成果以DiLFM: an artifact-suppressed and noise-robust light-field microscopy through dictionary learning为题在线发表在Light: Science & Applications。 该研究团队提出基于字典学习的光场重建方法,实现对多种重建伪影的消除,同时具有对恶劣成像场景的鲁棒性,可实现对样本https://www.thepaper.cn/newsDetail_forward_14324350
19.LintCode炼码算法: 双指针 · 127同向双指针 · 63相向双指针 · 34二分法 · 119二分答案 · 28分治法 · 80宽度优先搜索 · 151拓扑排序 · 12深度优先搜索/回溯法 · 258动态规划 · 267背包型动态规划 · 40坐标型动态规划 · 108划分型动态规划 · 27记忆化搜索 · 32区间型动态规划 · 31状态压缩动态规划 ·https://www.lintcode.com/problem
20.八种时间序列分类方法总结对时间序列进行分类是应用机器和深度学习模型的常见任务之一。本篇文章将涵盖 8 种类型的时间序列分类方法。这包括从简单的基于距离或间隔的方法到使用深度神经网络的方法。这篇文章旨在作为所有时间序列分类算法的参考文章。 对时间序列进行分类是应用机器和深度学习模型的常见任务之一。本篇文章将涵盖 8 种类型的时间序https://www.51cto.com/article/745092.html
21.金山词霸爱词霸英语翻译器为广大英文学习爱好者提供即时的在线翻译、在线词典、英文写作校对、汉译英、英译汉、图片、文档翻译、汉语查词等服务,金山词霸在线查词翻译频道致力于提供优质的在线翻译、查词服务http://iciba.com/
22.基于快速字典学习和特征稀有性的显著目标提取据此, 本文提出一种基于快速字典学习与特征稀有性的自然图像显著目标提取算法(Fast dictionary learning and feature rarity based salient object extraction, FR-SOE), 实验结果表明, 本文所提算法相较于其他4种现存的传统算法提取自然图像中的显著目标更为准确, 并能够有效地处理包含多个显著目标的自然图像。 1 http://xuebao.jlu.edu.cn/gxb/article/2016/1671-5497-46-5-1710.html