sklearn

sklearn

sklearn,Scikit-learn针对Python编程语言的免费软件机器学习库

Visit Site →

sklearn官网,Scikit-learn针对Python编程语言的免费软件机器学习库

Sklearn是什么

sklearn,全称Scikit-learn(以前称为scikits.learn)是针对Python编程语言的免费软件机器学习库 。它具有各种分类,回归和聚类算法,包括支持向量机,随机森林,梯度提升,k均值和DBSCAN,并且旨在与Python数值科学库NumPy和SciPy联合使用。其具体功能如下图所示:

sklearn官网: https://scikit-learn.org/stable/index.html

sklearn中文指南 社区: https://scikit-learn.org.cn/

Sklearn常用功能介绍

2.1 聚类

聚类是一种典型的无监督学习任务,但也是实际应用中较为常见的需求。在不提供样本真实标签的情况下,基于某些特征对样本进行物以类聚。根据聚类的原理,主要包括:K-MEANS、近邻传播(AffinityPropagation)、均值偏移(MeanShift)、谱聚类(SpectralCluster)、层次聚类(AgglomerativeClustering)、密度噪声(DBSCAN)、平衡迭代层次聚类(Birch)、高斯混合(GMM)、双向聚类(SpectralBiclustering)。

2.2 降维

降维也属于无监督学习的一种,将已存在的特征进行压缩,降维完毕后的特征不是原本的特征矩阵中的任何一个特征,而是通过某些方式组合起来的新特征。尽可能保留原有信息的情况下降低维度,一般采用PCA处理,且降维后的特征与原特征没有直接联系,使得模型训练不再具有可解释性。根据降维的原理,主要包括:普通PCA、增量PCA(IPCA)、使用随机化的SVD的PCA、Kernel PCA、稀疏化PCA 和minibatchsparsePCA、非负矩阵分解、独立成分分析-ICA、Latent Dirichlet Allocation (LDA)。

2.3 度量指标

不同的度量指标可以学到不同的最优模型。对于不同类型任务,sklearn提供了多种度量指标,包括:
·分类任务:准确率,所有样本中分类正确样本所占比例;精准率和召回率,一对相互矛盾的指标,适用于分类样本数量不均衡时,此时为了保证既定目标,可只选其中一个指标;调和平均数F1,相当于兼顾了精准率和召回率两项指标;
·回归任务:常用的包括MSE、MAE,F1-score;
·聚类任务:轮廓系数(无需先验标签,用组内距离与组外最近距离的比值度量)、调整兰德指数(基于真实分簇标签和聚类标签计算)。

2.4 集成学习模型

当基本学习模型性能难以满足需求时,集成学习便应运而生。集成学习,顾名思义,就是将多个基学习器的结果集成起来汇聚出最终结果。而根据汇聚的过程,集成学习主要包括3种流派:
·bagging,即bootstrap aggregating,通过自助取样(有放回取样)实现并行训练多个差异化的基学习器,虽然每个学习器效果可能并不突出,但通过最后投票得到的最终结果性能却会稳步提升。当基学习器采取决策树时,bagging思想的集成学习模型就是随机森林。另外,与bagging对应的另一种方式是无放回取样,相应的方法叫pasting,不过应用较少;
·boosting,即提升法。基学习器串行组合,试图减小组合学习器的偏差,把几个弱学习器组合成一个强力的集成模型。(eg:adaboost,Gradient Tree Boosting)与bagging模型并行独立训练多个基学习器不同,boosting的思想是基于前面训练结果逐渐训练更好的模型,属于串行的模式。根据实现细节不同,又具体分为两种boosting模型,分别是Adaboost和GBDT,二者的核心思想差异在于前者的提升聚焦于之前分错的样本、而后者的提升聚焦于之前漏学的残差。另外一个大热的XGBoost是对GBDT的一个改进,实质思想是一致的‘’
·stacking,即堆栈法,基本流程与bagging类似而又不同:stacking也是并行独立训练多个基学习器,而后又将这些训练的结果作为特征进行再次学习。有些类似于深度学习中的多层神经网络。

2.5 样例数据集

sklearn提供了一些经典数据集,数据集主要围绕分类和回归两类经典任务,通过这些数据集可快速搭建机器学习任务、对比模型性能。
常用数据集简介如下:
·load_breast_cancer:乳腺癌数据集,标签为0或1的二分类任务;
·load_iris:经典鸢尾花数据集,特征为连续数值变量,标签为0/1/2的三分类任务;
·load_wine:红酒数据集,各类样本数量轻微不均衡;
·load_digits:小型手写数字数据集(之所以称为小型,是因为还有大型的手写数字数据集mnist),包含0-9共10种标签,各类样本均衡;
·load_boston:波士顿房价数据集,适用于回归任务值得指出。

2.6 数据预处理

sklearn中的各模型均有规范的数据输入输出格式,一般以np.array和pd.dataframe为标准格式,所以一些字符串的离散标签是不能直接用于模型训练的;同时为了加快模型训练速度和保证训练精度,往往还需对数据进行预处理,常用的数据预处理功能:
·MinMaxScaler:最大最小归一化;
·StandardScaler:标准化归一化,主要适用于可能存在极大或极小的异常值,此时用MinMaxScaler时,可能因单个异常点而将其他数值变换的过于集中,而用标准正态分布去量纲则可有效避免这一问题;
·Binarizer:二值化处理,适用于将连续变量离散化;
·OneHotEncoder:独热编码,一种经典的编码方式,适用于离散标签间不存在明确的大小相对关系时;
·Ordinary:数值编码,适用于某些标签编码为数值后不影响模型理解和训练时。

2.7 特征选择

机器学习中有句经典的台词是:数据和特征决定学习上限,模型和算法只是逼近这个上限,可见特征工程在机器学习中的重要性。几种常见的特征选择方式:from_model、VarianceThreshold、SelectKBest。

2.8 模型选择

模型选择是机器学习中的重要环节,涉及到的操作包括数据集切分、参数调整和验证等。对应常用函数包括:
·train_test_split:常用操作之一,切分数据集和测试集,可设置切分比例;
·cross_val_score:交叉验证,默认K=5折,相当于把数据集平均切分为5份,并逐一选择其中一份作为测试集、其余作为训练集进行训练及评分,最后返回K个评分;
·GridSearchCV:调参常用方法,通过字典类型设置一组候选参数,并制定度量标准,最后返回评分最高的参数。

2.9 基本学习模型

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

安装指南

有多种安装scikit-learn的方法:

  • 安装最新的官方版本。这是对于大多数用户来说最好的方法。它将提供一个较稳定的版本,并且预编译的软件包可适用于大多数平台。
  • 安装电脑操作系统或Python发行版提供的scikit-learn版本 。对于电脑操作系统或Python发行版兼容scikit-learn的用户来说,这是一个快速的选择。它提供的可能不是最新的发行版本。
  • 从源代码构建软件包。对于想要最新和最强大的功能并且不害怕运行全新代码的用户而言,这是最好的选择。这也正是希望为该项目做出贡献的用户所需要的。

安装最新版本

操作系统:Windows

包管理器:pip

例如从https://www.python.org上安装Python 3的64位版本。

然后运行:

  1. pip install -U scikit-learn

您可以使用以下语句去检查

  1. python