sklearn库的使用,python skitlearn

  sklearn库的使用,python skitlearn

  科学系列:sklearn库主要模块功能概述01 sklearn概述

  Arn全称scikit-learn,是python中的机器学习库。它基于数据科学包,如numpy、scipy、matplotlib等。是机器学习中的样本数据和数据预处理,不同于pytorch和TensorFlow中几乎涵盖所有环节的深度学习库存。sklearn是python中传统机器学习的首选库,没有其他竞争对手。

  本文重点介绍下图中的每个子模块。虽然并不详尽,但给出了一个总结。

  Sklearn通用模块列表

  02样本数据集

  Sklearn为初学者提供了几个经典的数据集,通过这些数据集可以快速构建机器学习任务,比较模型的性能。数据集主要关注两个经典任务:分类和回归。根据不同的要求,常见的数据集总结如下

  乳腺癌数据集。是一个二进制分类任务,具有连续的数值变量和0或1的标签。

  Load_iris:一组典型的aperture数据集,以连续的数值变量为特征,三个分类任务标记为0/1/2,样本数量平衡为50个。

  load _ wine:wine数据集的特征与iris数据集相似,也是连续特征的三类任务,不同的是样本数量略有不平衡。

  Load_digits:小型手写数字数据集(之所以称之为小型,是因为还有大型手写数字数据集mnist(包括0-9,共10个标签,样本均衡)。与前三个数据集最大的区别是特征也在离散值0-16之间。例如,该数据集可用于多项式朴素贝叶斯模型和ID3树模型的情况。

  Load_boston:波士顿房价数据集,连续特征适合房价和回归任务。

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

  03数据预处理

  有些字符串的离散标签不能直接用于模型训练,因为sklearn中的每个模型都有一个数据输入/输出格式,标准格式有np.array和pd.dataframe另外,为了加快模型的训练速度,保证训练精度,往往需要对数据进行预处理。例如,当在距离的尺度上训练时,应该考虑维度。因此,sklearn提供了常见的数据预处理功能,例如:

  MinMaxScaler:标准化和无量纲化处理。数据有明确的上下限,适用于没有严重异常值的情况。例如,测试分数为0-100的数据可以优先进行标准化处理。

  StandardScaler:标准化维度删除适用于可能存在最大值或最小值的情况。在这种情况下,MinMaxScaler可能会导致单个离群点过度集中其他数,但使用标准正态分布进行降维可以有效避免这一问题。

  二值化器:二值化处理。适用于连续变量的离散化

  OneHotEncoder:独立热线。当离散标签之间没有确定的相对关系时,适用于离散标签的一种经典编码方法。例如,在对种族特征进行编码的情况下,将其编码为0-55的数值,意味着在基于距离的模型中,种族之间存在“大小”和“距离”的关系。在一热编码中,每个族群被转化为一个由1个“1”和55个“0”组成的向量。缺点是分类标签太多容易造成维度灾难,特征过于稀疏。

  普通:数字代码。适用于某些标签编码为数字而不影响模型理解和训练的情况。例如,如果国籍是分类对象的标签,它可以很容易地编码为0到55之间的数字。

  04功能选择

  机器学习中有一句经典台词:数据和特征决定了学习的上限。只要模型和算法逼近这个上限,就可以看出特征工程在机器学习中的重要性。一般来说,传统机器学习对特征工程的要求主要有两个。

  在特征维数过多的情况下,为了加快模型的训练速度,选择特征,过滤掉不重要的特征;

  如果特征少或者模型的训练性能差,可以尝试通过了解问题来建立特征,以提高维度。

  下面简单介绍一些特性的选择方法。

  来自模型:持久芹菜从模型中选择特征。这可以作为特征选择的依据,因为很多模型在训练之后都会提供feature_importance的结果。

  更改阈值:基于方差阈值选择特征。事实上,一个特征的方差越大,分类区分度越好。否则,由于特征的集中值,很难应付不同的分类效果。

  根据所选标准,选择最佳特征选择结果。

  05型号选择

  模型选择是机器学习的重要组成部分,相关操作包括数据集分割、参数调整和验证。相应的功能如下:

  训练_测试_分割:

  常见的操作之一是拆分数据集和测试集,拆分比例可以设置。

  Cross_val_score:交叉验证,默认k=5折,相当于将数据集平均分成5部分,选择一部分作为测试集,其余部分作为训练集进行训练和评分,最终返回k分。

  GridSearchCV:一种常用的参数调整方法,按字典类型设置一组候选参数,制定度量标准,最终返回得分最高的参数。

  06指标

  不同的度量可以学习不同的最优模型。Sklearn为不同类型的任务提供了多种指标,包括:

  分类:准确率,正确分类的样本占所有样本的比例;准确率和召回率这一对矛盾的指标,适用于分类样本数量不均衡的情况。此时,为了保证既定目标,只能选择一个指标;调和平均F1相当于考虑了准确率和召回率。

  回归任务:常用的是MSE和MAE,但R2_score其实是一个更公正直观的评价指标,其显著性为R2_Score=MSE/VAR,即预测分类和实际分类的均值方差与实际分类的方差之比。

  聚类任务:聚类任务属于无监督学习,所以根据有无先验标签信息,聚类结果的度量指标有轮廓系数(用无先验标签时组内距离与组外最近距离的比值来度量)和调整敏感度的洋葱指数(基于真实聚类标签和聚类标签计算)。

  07降维

  降维也是一种无监督学习。当特征维数过大时,可以通过矩阵的QR分解进行降维,同时尽可能保留原始信息。一般用于图像数据预处理,降维后的特征与原始特征没有直接关系,使得模型训练不再具有可解释性。

  08聚类

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

  基于距离聚类,典型的是K-means聚类。通过迭代和再次搜索最小距离将所有样本分成K个聚类。有一个小游戏《拥挤城市》应该是基于K-means聚类实现的。

  基于密度的聚类不同于距离聚类。基于密度聚类的思想来源于判断样本是否通过距离连接(需要指定连接距离的阈值),从而完成样本划分。因为划分结果只取决于连通距离的阈值,所以不能指定簇的数目。典型的算法模型是DBSCAN。

  基于层次聚类,可以细分为自上而下和自下而上。以自底向上的层次聚类为例:首先将所有样本划分为一类,其中聚类数K=样本数n,遍历K个聚类中最近的两个聚类完成合并。此时仍有K-1个簇,以此类推,直到被分成指定数目的簇。当然,在这里,评价两个最近簇的标准可以细分为最小距离、最大距离和平均距离。

  09基本学习模式

  分类和回归任务是机器学习bot中的经典场景

  线性模型,回归任务对应线性回归,分类任务对应逻辑回归,或者对数概率回归。本质上,二元分类是通过线性回归拟合对数概率来实现的。

  k,最简单易懂的机器学习模型,不需要训练(惯性模型),只是通过判断你所在位置周围的样本来判断类比或拟合结果。

  支持向量机,一种经典的机器学习模型,最初起源于线性分类,通过最大化区间来达到最可靠的分类边界。相传支持向量机具有花痴草和区间的双重核函数。其中‘区间’由硬区间升级为软区间,解决了存在离群点的线性不可分场景。“对偶”是优化过程中解决拉格朗日问题的一个小技巧,而核函数是支持向量机的核心。经过验证的核函数可以实现从线性可分到线性不可分的升级,同时避免维数灾难。

  朴素贝叶斯是从概率论中贝叶斯的全概率公式推导出来的。模型训练的过程就是拟合每个特征分布概率的过程,而预测的过程就是标注概率最高的类比的过程,这是一个纯粹按照概率完成分类任务的模型。而logistic回归、K近邻、支持向量机、决策树可以预测各种概率,但都不是纯概率。

  决策树是一种直观而强大的机器学习模型,其训练过程主要包括特征选择-分割-剪枝。典型的三种决策树是ID3、C4.5和CART,其中CART树既可以用于分类,也可以用于回归。更重要的是,决策树不仅是具有研究价值的模型本身,还是许多集成学习模型的基础学习器。

  上述五个经典的基础学习模型中,除了只用于分类任务的朴素贝叶斯,其他四个模型都可以进行分类和回归。

  10综合学习模式

  当基本学习模式的性能难以满足要求时,集成学习应运而生。整合,执着的芹菜,就是把多个基础学习者的成果整合起来,汇聚成最终的成果。按照趋同的过程,整合学习主要包括三个流派:

  Bagging,即bootstrap aggregating,通过自助采样(带放回采样)并行训练多个差异化的基础学习者。虽然每个学习者的效果可能并不突出,但通过最终投票得出的最终结果的表现会稳步提升。当基础学习者采用决策树时,bagging思想的集成学习模型就是随机森林。另外,与套袋相对应的另一种方法是不放回取样,相对应的方法叫做粘贴,但很少使用。

  助推,也就是升降法。与bagging模型并行独立训练多个基础学习者不同,boosting的思路是在之前训练结果的基础上逐步训练更好的模型,属于串行模式。根据实现细节的不同,有两种boosting模型,即Adaboost和GBDT。两个模型的核心思想是,前者侧重于之前的错误样本,后者侧重于之前的残差。另一个热门的XGBoost是GBDT的改进,本质是一样的。

  堆砌,也就是堆砌法,有一个类似于装袋的基本流程,但不同于装袋:堆砌也是并行独立训练多个基础学习者,然后以这些训练的结果为特征重新学习。有些类似于深度学习中的多层神经网络。

  1巴

  以上简单介绍了sklearn中常见的子模块,基本涵盖了常用的模型和辅助功能,对于sklearn的介绍已经足够。当然,本文只是旨在建立一个sklearn库的宏观框架,当然还要查阅专门的教程进一步学习。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: