




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第六章scikit-learnscikit-learn库是一个通用型开源机器学库,它几乎涵盖了所有地机器学算法,并且搭建了高效地数据挖掘地框架。图六.一scikit-learn官网我们可以看到官网地宣传主要提到到了四点:一个简单高效地数据挖掘与数据分析工具。对于所有都是易用地,而且可以在各个环境使用。它是基于Numpy,Scipy与Matplotlib库。开源地,可以商用。这个库另一个最大地优点是库地设计是十分有条理地。我们可以看到scikit-learn主要分为六个板块,它们分别是:分类(classification)回归(regression)聚类(clustering)降维(dimensionalityreduction)模型选择(modelselection)预处理(preprocessing)其分类与回归问题又被称为有监督学,而聚类问题被称为无监督学。而我们在实际行机器学过程地先后次序是一)预处理,二)降维,三)有监督与无监督学,四)模型选择,如图六.二所示。图六.二机器学流程六.一预处理(preprocessing)对数据行一些清洗,转换,使得它们更适合机器学模型。scikit提供了一些预处理地方法,它们分别是标准化,非线转换,归一化,二值化,分类特征编码,缺失值插补,生成多项式特征,如图六.三所示。图六.三预处理有关分类六.一.一标准化为什么要对数据行标准化处理?如表六.一所示,我们可以看到收入这一列数字特别大,而年龄这一列数字相比之下就特别小。因此,在某些机器学过程,收入特征就会表现地比较"抢眼",而影响最终地模型效果。所以我们要将其单位去除,让大家在同一起跑线上。我们需要去除这种影响,将该表转换成另一种形式,如表六.二所示。在scikit提供了scale方法来对数据行标准化。(一)导入有关模块。(二)导入有关数据,这里我们将上述表格导入。(三)将数据标准化。(四)查看标准化结果。(五)查看标准化后地均值。(六)查看标准化后地标准差。六.一.二非线转换类似于标准化处理,它是将数据映射到[零,一]地均匀分布上。非线转换将每个特征转换为相同地范围内或者分布内。通过这个变化可以将异常地数据变得更滑从而受异常值地影响也会变小,但是它却一定程度上改变了特征内部与特征之间地距离与有关。(一)导入有关模块。(二)创建非线转换对象。(三)导入有关数据。(四)行线转换。(五)查看线转换地结果,所有地数值都被转换[零,一]区间内地数字。六.一.三归一化归一化地作用是缩放单个样本,使其具有单位范数。有两种归一化地方式,分别是范数"L一"与范数"L二"。(一)导入有关模块。(二)导入有关数据。(三)归一化数据。(四)查看归一化之后地结果,这里要注意,归一化地是针对每一行做地。六.一.四二值化二值化地作用是将数值型地特征值转换为布尔值。(一)导入有关模块。(二)导入有关数据。(三)查看最后地编码结果,我们可以看到所有大于一零零地数字都被编码为一,所有小于一零零地数字都被编码为零。(四)查看有关结果。六.一.五分类特征编码在机器学过程,我们经常会遇到字符串形式地特征。这个时候我们就需要将这些字符串类型地特征,转换为数值型地特征。比如说"老师","学生","主任",我们需要将这些字符串转换为整数。比如讲"老师"转换为零,将"学生"转换为一,将"主任"转换为二。这样地转换会提高机器学地效率,但是这样地转换还是不够地,因为这样连续数值地输入,分类器会认为类别之间是有序地,但实际上"老师","学生","主任"它们时间是无序地,而且没有大小地区别。这个时候我们就需要将这些数值一步转换。我们地解决思路就是将某个特征n个可能,转换为n个特征,转换后地特征是零,一二值类型数据。(一)导入有关模块。(二)创建One-Hot编码对象。(三)导入有关数据。(四)训练One-Hot编码对象。(五)查看编码后地结果。我们可以看到第一列有四种情况,所以第一列会被分为四个列。也就是说原来地。零表示为[一,零,零,零],一表示为[零,一,零,零],二表示为[零,零,一,零],三表示为[零,零,零,一]。同样地道理,第二列也被分为四个列,四表示为[一,零,零,零],五表示为[零,一,零,零],六表示为[零,零,一,零],七表示为[零,零,零,一]。六.一.六缺失值插补我们所获得地数据不一定是完整地数据,里面可能存在着缺失地情况。这时候就需要对这些缺失地数据做一些处理,以补全它们。(一)导入有关模块。(二)创建插值对象。(三)导入有关数据。(四)训练插值模块。(五)行转换。在axis=零地情况下,第一列有两个非空值,它们地均值是一.五,所以空值全部都用一.五填充。六.一.七生成多项式特征在机器学,有些时候数据集地特征很少,这个时候就需要我们自己根据以后地特征构造一些新地特征出来。(一)导入有关模块。(二)创建多项式特征对象。(三)导入有关数据。(四)训练多项式特征对象。(五)将原数据转换为多项式,X地特征已经从转换为。六.二降维在机器学过程,我们可能会碰到一些维度非常多地数据,当使用这些复杂维度做学时可能会产生两个问题:维度多会造成过度拟合。维度多会增加机器学算法地复杂度,从而降低机器学地效率。scikit-learn库提供了三种降低维度地方法,它们分别是PCA,随机投影与特征凝聚,如图六.四所示。在本书地第一六章PCA降维我们会详细讲解其方法与思想。图六.四scikit-learn提供地降维方法六.三有监督学,无监督学有监督学是指在训练模型地过程,已知正确结果。scikit-learn提供了多种有监督学地方法,如图六.五所示。本书地第八章至第一五章都属于有监督学地范畴。无监督学是指在训练模型过程,不给出目地变量,让算法自动找寻训练集地规律,如图六.六所示。本书地第一八章聚类具体会阐述无监督学思想与方法。六.四模型评估当我们对一个数据集选定模型,并行训练之后,我们需要对这个模型行评估,以判定这个模型地优劣。不好地模型通常有以下两种情况:欠拟合。欠拟合是指模型不能很好地适应与拟合已有地数据。欠拟合地模型在训练集与测试集上表现得都会很差。过度拟合。过度拟合是指模型非常完美地适应与拟合已有地数据,这将导致该模型地泛化能力严重下降。过度拟合在训练集上表现几乎完美,而在测试集上则表现地很差。所以,最优地模型应该是欠拟合与过度拟合地折,它既较好地拟合了训练集又具有很好地泛化能力,这种泛化能力主要体现就是在测试集上也会有很好地表现。六.四.一测试集评分在scikit-learn包,提供了测试集评分地方法。让我们看一个简单地例子:(一)导入有关模块。(二)导入有关数据,这里导入鸢尾花数据集。(三)查看数据集属数据形状。(四)查看数据集目地变量数据形状。(五)将数据集分割为训练集与测试集,分割比例是四:一。(六)查看训练集数据。(七)查看训练集数据。(八)查看学集数据。(九)查看学集数据。(一零)创建knn分类器对象。(一一)训练模型。(一二)对测试结果行评分。看来这个模型地得分不错。我们可以调整模型不同地参数对其最后地得分行比较,然后选择得分较多地参数模型作为最终地结果。但是,在不同地实验过程,我们地测试集可能在某次实验上,同训练集同时出现了过度拟合地情况,从而导致了在真实地应用过程,泛化能力降低地结果。我们现在对数据集地划分,如图六.七所示。为了避免这个种情况地发生,我们需要再设置一个"验证集",当模型训练完成以后,现在验证集上对模型行评估,然后选择评估分数最高地模型,再在测试集上行最终地测试,如图六.八所示。图六.七将数据分割为训练集与测试集,可能同时出现过度拟合图六.八将数据分割为训练集,验证集与测试集这是比较标准地模型评估过程,但是这并不是最优地办法。虽然"验证集"地选择,有效地避免地测试集出现过度拟合地情况,但是现在我们已经将元数据分为了三个部分:"训练集","验证集"与"测试集"。我们大大减少了"训练集"地数据量,这可能造成训练地模型效果很差。另外一方面,由于验证集与测试集,仍然是一次选择地结果,所以最后地模型评估结果有很大地随机。叉验证(Cross-validation)很好地解决了这两个问题。叉验证多次选择了测试集做最后地评估,这有效地避免了随机所带来地误差。而且叉验证不需要选择验证集,这样就避免地数据地浪费,使得训练集有足够地样本数量。叉验证最基本地方法是k折叉验证(k-foldcrossvalidation)。它地原理是,如图六.九所示。图六.九叉验证,白色是训练集,黑色是测试集将原始数据随机分为k份。每次挑选其k-一份作为训练集,剩余地一分作为测试集行训练。循环第二步k次,这样每一份都会被作为测试集。计算k组测试集评估结果地均值作为模型地最终得分。当然叉验证唯一地缺点就是计算代价相对较高。实现叉验证可以调用scikit-learn里面提供地cross_val_score辅助函数。叉验证实例如下:(一)导入有关模块。(二)导入有关数据集。(三)创建knn分类器对象。(四)对分类器行叉验证。(五)查看验证结果。这里是每次迭代地分数,我们可以看到最低地得分只有零.八六,而最高地话是一。(六)查看均值。(七)查看标准差。六.四.二叉验证迭代器我们已经了解了叉验证地基本思想,接下来我们将会介绍几个不同地叉迭代器以及它们地使用方法。一.K折KFold会将数据集划分为k个分组,成为折叠(fold)。如果k地值等于数据集实例地个数,那么每次地测试集就只有一个,这种处理方式我们成为"留一"。在sci-kit提供了KFold方法来行分组。二.重复K折叉验证在KFold方法,是采用地不放回地抽样方法,在scikit还提供了RepeatedKFold方法来行重复抽样。三.留一叉验证留一叉验证是K折地特殊情况,既k地值等于数据集实例地个数。留一叉验证地优点是每次训练地训练集都是除了一个样本之外地所有样本,所以保证了训练集样本尽可能大。四.留P叉验证留P叉验证是值选定P个样本做测试集,然后输出所有可能地训练-测试集对。与LeaveOneOut与KFold不同地地方是,当P>一时,测试集会有重叠。五.随机排列叉验证这个方法会将数据集分散,随机排列,然后划分为一对测试集与训练集。六.四.三分层叉验证迭代器有些数据集并不像我们想象地分布那么均匀,这样在训
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司厂级员工安全培训试题及答案审定
- 谈判大赛面试试题及答案
- 项链试题及答案
- 救护新概念-心肺复苏
- 多功能鞋作文400字四年级下册
- 2024大数据下银发经济趋势前瞻-解数咨询-23正式版
- 2025年新型全液压钻机项目合作计划书
- 2025年免疫分析仪器及试剂项目发展计划
- 2025年高分子复合着色材料合作协议书
- 2025年激光比长仪项目建议书
- 二年级数学有余数的除法(2位数除以1位数)竞赛试题练习题
- 2025年法理学接本试题及答案
- 2024年河南省中考满分作文《成功所至诸径共趋》
- 2025年陕西国防工业职业技术学院单招综合素质考试题库学生专用
- 2025年浙江宁波市奉化区农商控股集团有限公司招聘笔试参考题库附带答案详解
- 2025年安庆医药高等专科学校单招职业技能考试题库标准卷
- 2025年中考百日誓师大会校长发言稿:激扬青春志 决胜中考时
- (一模)2025年汕头市2025届高三高考第一次模拟考试 语文试卷(含答案详解)
- 上海浦东新区2024-2025高三上学期期末教学质量检测(一模)物理试卷(解析版)
- 2023年中小学心理健康教育课程标准
- 2025河南中烟工业限责任公司一线岗位招聘128人易考易错模拟试题(共500题)试卷后附参考答案
评论
0/150
提交评论