首页天道酬勤模块库(vs标准库模块)

模块库(vs标准库模块)

admin 12-17 23:41 212次浏览

klearn全称scikit-learn,是python中的机器学习库,基于numpy、scipy、matplotlib等数据科学软件包构建,在机器学习中的样本数据、数据前与pytorch和TensorFlow等多个框架中可以选择涵盖维度削减等几乎所有环节的深度学习库存不同,sklearn是python中传统机器学习的首选库,不存在其他竞争对手

本论文以下图各子模块为中心分别进行介绍。 虽然并未囊括所有,但给出了概要。

sklearn的一般模块一览

02样本数据集

sklearn可以为初学者提供一些经典的数据集,通过这些数据集快速构建机器学习任务,比较模型的性能。 数据集主要围绕分类和回归两类经典任务,针对不同的需求,常见的数据集概述如下

load_breast_cancer :乳腺癌数据集,特征为连续数值变量,标签为0或1的二分类任务load_iris :经典的鸢尾数据集,特征为连续数值变量,标签为0/1/2的三分类器。 小型手写数字数据集(之所以被称为小型,是因为也有大型手写数字数据集mnist。 包含0-9共10种标签,各类样本均衡。 与前面三个数据集最不同的是,特征也在离散值0—16之间。 例如,在进行多项式朴素贝叶斯模型、ID3树模型情况下,可以将该数据集设为load )

值得注意的是,除了load系列经典数据集外,sklearn还支持自定义数据集make系列和下载数据集fetch系列。 load系列在安装sklearn库时附带,fetch需要另外下载。 这对于更多的学习任务场景很有用。

03数据预处理

由于sklearn的各模型都有以np.array和pd.dataframe为标准格式的规格数据输入输出格式,因此某些字符串的离散标签无法直接用于模型训练; 另外,为了加快模型的训练速度,确保训练精度,大多需要对数据进行预处理,例如以距离为尺度进行训练时,需要考虑维度化的问题。 因此,sklearn提供了常用的数据预处理功能,常用的有:

MinMaxScaler :标准化除鳞处理适用于数据有明显上下限、不存在严重异常值的情况。 例如,考试得分在0-100之间的数据,以标准比例:标准化除鳞处理为优先,适用于可能非常大或非常小的异常值。 在这种情况下,使用MinMaxScaler时,如果在单一异常点使用其他标准正态分布删除维,则可以有效避免该问题的Binarizer :二值化处理适用于离散连续变量的OneHotEncoder :独立热编码,在离散标签之间明确表示例如在编码民族特征的情况下,如果将其编码为0-55的数值,则在以距离为尺度的模型中,意味着民族间有“大小”和“远近”的关系,在独热编码中,变换为每个民族由1个“1”和55个“0”构成的矢量弊端是,分类标签过多,容易带来维度灾难,而且特征过于稀疏。Ordinary :数值代码适用于某些标签被编码为数值后,不影响模型的理解和训练的情况。 例如,如果民族是分类标签,则可以轻松编码为0到55之间的数字

04特征选择

e="text-align: justify">机器学习中有句经典的台词是:数据和特征决定学习上限,模型和算法只是逼近这个上限,可见特征工程在机器学习中的重要性。一般而言,传统机器学习中的特征工程主要包括两方面需求:

特征维度过多时,为加快模型训练速度,进行特征选择即过滤掉不重要的特征;特征较少或模型训练性能不好时,可通过对问题的理解尝试构建特征提升维度。

这里简单介绍几种特征选择的方式:

from_model:缥缈的猫咪,从模型选择特征,这是因为很多模型在训练后都提供了特征的重要性结果feature_importance,据此可作为特征选择的依据VarianceThreshold:根据方差阈值做特征选择,实际上当某一特征的方差越大时意味着该特征越能带来更好的分类区分度,否则由于特征取值比较集中,很难对应不同的分类效果SelectKBest:指定K个特征选择结果,具体也需依赖选择的标准

05 模型选择

模型选择是机器学习中的重要环节,涉及到的操作包括数据集切分、参数调整和验证等。对应常用函数包括:

train_test_split:常用操作之一,切分数据集和测试集,可设置切分比例cross_val_score:交叉验证,默认K=5折,相当于把数据集平均切分为5份,并逐一选择其中一份作为测试集、其余作为训练集进行训练及评分,最后返回K个评分GridSearchCV:调参常用方法,通过字典类型设置一组候选参数,并制定度量标准,最后返回评分最高的参数

06 度量指标

不同的度量指标可以学到不同的最优模型。对于不同类型任务,sklearn提供了多种度量指标,包括:

分类任务:准确率,所有样本中分类正确样本所占比例;精准率和召回率,一对相互矛盾的指标,适用于分类样本数量不均衡时,此时为了保证既定目标,可只选其中一个指标;调和平均数F1,相当于兼顾了精准率和召回率两项指标回归任务:常用的包括MSE、MAE,但R2_score实质上是更为公允和直观的评价指标,其意义是R2_Score = MSE / VAR,即预测分类和实际分类的均方差与实际分类方差的比值聚类任务:聚类任务属于无监督学习,所以根据是否有先验标签信息,聚类结果的度量指标包括轮廓系数(无需先验标签,用组内距离与组外最近距离的比值度量)、调整hldmf指数(基于真实分簇标签和聚类标签计算)

07 降维

降维也属于无监督学习的一种,当特征维度过多时可通过矩阵的QR分解实现在尽可能保留原有信息的情况下降低维度,一般用于图像数据预处理,且降维后的特征与原特征没有直接联系,使得模型训练不再具有可解释性。

08 聚类

聚类是一种典型的无监督学习任务,但也是实际应用中较为常见的需求。在不提供样本真实标签的情况下,基于某些特征对样本进行物以类聚。根据聚类的原理,主要包括三种:

基于距离聚类,典型的就是K均值聚类,通过不断迭代和重新寻找最小距离,对所有样本划分为K个簇,有一款小游戏《拥挤城市》应该就是基于K均值聚类实现基于密度聚类,与距离聚类不同,基于密度聚类的思想是源于通过距离判断样本是否连通(需指定连通距离的阈值),从而完成样本划分。由于划分结果仅取决于连通距离的阈值,所以不可指定聚类的簇数。典型算法模型是DBSCAN基于层次聚类,具体又可细分为自顶向下和自底向上,以自底向上层次聚类为例:首先将所有样本划分为一类,此时聚类簇数K=样本个数N,遍历寻找K个簇间最相近的两个簇并完成合并,此时还有K-1个簇,如此循环直至划分为指定的聚类簇数。当然,这里评价最相近的两个簇的标准又可细分为最小距离、最大距离和平均距离。

09 基本学习模型

分类和回归任务是机器学习中的经典场景,同属于有监督学习。经典的学习算法主要包括5种:

线性模型,回归任务中对应线性回归,分类任务则对应即逻辑回归,或者叫对数几率回归,实质是通过线性回归拟合对数几率的方式来实现二分类K近邻,最简单易懂的机器学习模型,无需训练(惰性模型),仅仅是通过判断自己所处位置周边的样本判断类比或者拟合结果支持向量机,一个经典的机器学习模型,最初也是源于线性分类,通过最大化间隔实现最可靠的分类边界。业界相传:支持向量机有xfdmt、间隔对偶核函数。其中"间隔"由硬间隔升级为软间隔解决了带异常值的线性不可分场景,"对偶"是在优化过程中求解拉格朗日问题的一个小技巧,而核函数才是支持向量机的核心,通过核实的核函数可以实现由线性可分向线性不可分的升级、同时避免了维度灾难朴素贝叶斯,源于概率论中贝叶斯全概率公式,模型训练的过程就是拟合各特征分布概率的过程,而预测的过程则是标出具有最大概率的类比,是一个纯粹的依据概率完成分类任务的模型。而像逻辑回归、K近邻、支持向量机以及决策树,虽然也都可以预测出各类别概率,但并不是纯粹意义上的概率决策树,这是一个直观而又强大的机器学习模型,训练过程主要包括特征选择-切分-剪枝,典型的3个决策树是ID3、C4.5和CART,其中CART树既可用于分类也可用于回归。更重要的是,决策树不仅模型自身颇具研究价值,还是众多集成学习模型的基学习器。

在以上5个经典的基本学习模型中,除了朴素贝叶斯仅用于分类任务外,其他4个模型都是既可分类也可回归的模型。

10 集成学习模型

当基本学习模型性能难以满足需求时,集成学习便应运而生。集成学习,缥缈的猫咪,就是将多个基学习器的结果集成起来汇聚出最终结果。而根据汇聚的过程,集成学习主要包括3种流派:

bagging,即bootstrap aggregating,通过自助取样(有返回取样)实现并行训练多个差异化的基学习器,虽然每个学习器效果可能并不突出,但通过最后投票得到的最终结果性能却会稳步提升。当其学习器采取决策树时,bagging思想的集成学习模型就是随机森林。另外,与bagging对应的另一种方式是无放回取样,相应的方法叫pasting,不过应用较少boosting,即提升法。与bagging模型并行独立训练多个基学习器不同,boosting的思想是基于前面训练结果逐渐训练更好的模型,属于串行的模式。根据实现细节不同,又具体分为两种boosting模型,分别是Adaboost和GBDT,二者的核心思想差异在于前者的提升聚焦于之前分错的样本、而后者的提升聚焦于之前漏学的残差。另外一个大热的XGBoost是对GBDT的一个改进,实质思想是一致的。stacking,即堆栈法,基本流程与bagging类似而又不同:stacking也是并行独立训练多个基学习器,而后又将这些训练的结果作为特征进行再次学习。有些类似于深度学习中的多层神经网络。

11 小节

以上,对sklearn中的常用子模块进行了粗略简介,基本涵盖了常用的模型和辅助函数,对于sklearn入门来说是足够的。当然,本文仅旨在建立对sklearn库的宏观框架,更为深入的学习当然还是要查阅专项教程。

linux下运行文件的命令是什么-linux运维正确更改Ant Design of Vue样式的问题Java设计模式之原型模式怎么实现开始使用 US3 对象存储 US3Android中WebView截图的实现方式雷士灯具管理系统
移动其他流量怎么用(移动怎么查流量) ()
相关内容