Python本身的数据分析功能并不强,需要安装一些第三方扩展库来增强其相应的功能。本书用到的库有NumPy、SciPy、Matplotlib、pandas、StatsModels、scikit-learn、Keras、Gensim等,下面将对这些库的安装和使用进行简单的介绍。
如果读者安装的是Anaconda发行版,那么它已经自带了以下库:NumPy、SciPy、Matplotlib、pandas、scikit-learn。
本节主要是对这些库进行简单的介绍,在后面的章节中会通过各种案例对这些库的使用进行更加深入的说明。读者也可以到官网阅读更加详细的使用教程。
用Python进行科学计算是很深的学问,本书只是用到了它的数据分析和挖掘相关的部分功能,所涉及的扩展库如表2-4所示。
表2-4 Python数据分析与挖掘常用扩展库
此外,限于篇幅,我们仅仅介绍了本书案例中会用到的一些库,还有一些很实用的库并没有介绍,如涉及图片处理时可以用Pillow(旧版为PIL,目前已经被Pillow代替)、涉及视频处理时可以用OpenCV、涉及高精度运算时可以用GMPY2等。而对于这些知识,建议读者在遇到相应的问题时,自行到网上搜索相关资料。相信通过对本书的学习,读者解决Python相关问题的能力一定会大大提高。
Python并没有提供数组功能。虽然列表可以完成基本的数组功能,但它不是真正的数组,而且在数据量较大时,使用列表的速度就会很慢。为此,NumPy提供了真正的数组功能以及对数据进行快速处理的函数。NumPy还是很多更高级的扩展库的依赖库,我们后面介绍的SciPy、Matplotlib、pandas等库都依赖于它。值得强调的是,NumPy内置函数处理数据的速度是C语言级别的,因此在编写程序的时候,应当尽量使用其内置函数,避免效率瓶颈(尤其是涉及循环的问题)的出现。
在Windows系统中,NumPy的安装跟普通第三方库的安装一样,可以通过pip命令进行,命令如下:
也可以自行下载源代码,然后使用如下命令安装:
在Linux系统下,上述方法也是可行的。此外,很多Linux发行版的软件源中都有Python常见的库,因此还可以通过Linux系统自带的软件管理器安装,如在Ubuntu下可以用如下命令安装:
安装完成后,可以使用NumPy对数组进行操作,如代码清单2-27所示。
代码清单2-27 使用NumPy操作数组
NumPy是Python中相当成熟和常用的库,因此关于它的教程有很多,最值得一看的是其官网的帮助文档,其次还有很多中英文教程,读者遇到相应的问题时,可以查阅相关资料。
参考链接:
❑http://www.numpy.org。
❑http://reverland.org/python/2012/08/22/numpy。
如果说NumPy让Python有了MATLAB的“味道”,那么SciPy就让Python真正成为半个MATLAB。NumPy提供了多维数组功能,但它只是一般的数组,并不是矩阵,比如当两个数组相乘时,只是对应元素相乘,而不是矩阵乘法。SciPy提供了真正的矩阵以及大量基于矩阵运算的对象与函数。
SciPy包含的功能有最优化、线性代数、积分、插值、拟合、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算,显然,这些功能都是挖掘与建模必需的。
SciPy依赖于NumPy,因此安装之前得先安装好NumPy。安装SciPy的方法与安装NumPy的方法大同小异,需要提及的是,在Ubuntu下也可以用类似的命令安装SciPy,安装命令如下:
安装好SciPy后,使用SciPy求解非线性方程组和数值积分,如代码清单2-28所示。
代码清单2-28 使用SciPy求解非线性方程组和数值积分
参考链接:
❑http://www.scipy.org。
❑http://reverland.org/python/2012/08/24/scipy。
不论是数据挖掘还是数学建模,都要面对数据可视化的问题。对于Python来说,Matplotlib是最著名的绘图库,主要用于二维绘图,当然也可以进行简单的三维绘图。它不仅提供了一整套和MATLAB相似但更为丰富的命令,让我们可以非常快捷地用Python实现数据可视化,而且允许输出达到出版质量的多种图像格式。
Matplotlib的安装并没有什么特别之处,可以通过“pip install matplotlib”命令安装或者自行下载源代码安装,在Ubuntu下也可以用类似的命令安装,命令如下:
需要注意的是,Matplotlib的上级依赖库相对较多,手动安装的时候,需要逐一把这些依赖库都安装好。下面是一个简单的作图例子,如代码清单2-29所示,它基本包含了Matplotlib作图的关键要素,作图效果如图2-4所示。
代码清单2-29 Matplotlib作图示例
图2-4 Matplotlib的作图效果展示
如果读者使用的是中文标签,就会发现中文标签无法正常显示,这是因为Matplotlib的默认字体是英文字体,解决方法是在作图之前手动指定默认字体为中文字体,如黑体(Sim-Hei),命令如下:
其次,保存作图图像时,有可能不能显示负号,对此可以通过以下代码解决:
这里有一个小建议:有时间多去Matplotlib提供的“画廊”欣赏用它做出的漂亮图片,也许你就会慢慢爱上Matplotlib作图了。画廊网址是http://matplotlib.org/gallery.html。
参考链接:
❑http://matplotlib.org。
❑http://reverland.org/python/2012/09/07/matplotlib-tutorial。
终于谈到本书的主力工具——pandas了。pandas是Python下最强大的数据分析和探索工具。它包含高级的数据结构和精巧的工具,使得用户在Python中处理数据非常快速和简单。pandas建造在NumPy之上,它使得以NumPy为中心的应用使用起来更容易。pandas的名称来自于面板数据(Panel Data)和Python数据分析(Data Analysis),它最初作为金融数据分析工具被开发,由AQR Capital Management于2008年4月开发问世,并于2009年底开源。
pandas的功能非常强大,支持类似SQL的数据增、删、查、改操作,并且带有丰富的数据处理函数;支持时间序列分析功能;支持灵活处理缺失数据;等等。事实上,单纯地用pandas这个工具就足以写一本书,读者可以阅读pandas的主要作者之一Wes Mc-Kinney写的《利用Python进行数据分析》来学习更详细的内容。
pandas的安装相对来说容易一些,只要安装好NumPy之后,就可以直接安装pandas了。通过pip install pandas命令或下载源码后通过python setup.py install命令安装均可。由于我们频繁用到读取和写入Excel,但默认的pandas还不能读写Excel文件,因此需要安装xlrd(读)库和xlwt(写)库以支持Excel的读写。为Python添加读取/写入Excel功能的命令如下:
在后面的章节中,我们会逐步展示pandas的强大功能,而在本节,我们先以简单的例子一睹为快。
首先,pandas基本的数据结构是Series和DataFrame。Series顾名思义就是序列,类似一维数组;DataFrame则相当于一张二维的表格,类似二维数组,它的每一列都是一个Series。为了定位Series中的元素,pandas提供了Index这一对象,每个Series都会有一个对应的Index,用来标记不同的元素,Index的内容可以是数字,也可以是字母、中文等,它类似于SQL中的主键。
类似的,DataFrame相当于多个带有同样Index的Series的组合(本质是Series的容器),每个Series都有一个唯一的表头,用来标识不同的Series。pandas中的常用操作如代码清单2-30所示。
代码清单2-30 pandas中的常用操作
由于pandas是本书的主力工具,在后面会频繁使用它,因此这里不再详细介绍,后文会更加详尽地讲解pandas的使用方法。
参考链接:
❑http://pandas.pydata.org/pandas-docs/stable/。
pandas注重数据的读取、处理和探索,而StatsModels则更加注重数据的统计建模分析,它使得Python有了R语言的“味道”。StatsModels支持与pandas进行数据交互,因此,它与pandas结合成为Python下强大的数据挖掘组合。
安装StatsModels相当简单,既可以通过pip命令安装,又可以通过源码安装。对于Windows用户来说,它的官网上甚至已经有编译好的exe文件可供下载。如果手动安装的话,需要自行解决依赖问题,StatsModels依赖于pandas(当然也依赖于pandas所依赖的库),同时还依赖于Pasty(一个描述统计的库)。
使用StatsModels进行ADF平稳性检验,如代码清单2-31所示。
代码清单2-31 使用StatsModels进行ADF平稳性检验
参考链接:
❑http://statsmodels.sourceforge.net/stable/index.html。
从库的名字可以看出,这是一个与机器学习相关的库。确实如此,scikit-learn是Python下强大的机器学习工具包,它提供了完善的机器学习工具箱,包括数据预处理、分类、回归、聚类、预测、模型分析等。
scikit-learn依赖于NumPy、SciPy和Matplotlib,因此,只需要提前安装好这几个库,然后安装scikit-learn基本就没有什么问题了。安装方法与前几个库的安装方法一样,可以通过pip install scikit-learn命令安装,也可以下载源码自行安装。
使用scikit-learn创建机器学习模型的示例如代码清单2-32所示。
代码清单2-32 使用scikit-learn创建机器学习模型
1)scikit-learn为模型提供统一接口:针对训练模型的model.fit(),针对监督模型的fit(X,y),针对非监督模型的fit(X)。
2)监督模型提供如下接口:
❑model.predict(X_new):预测新样本。
❑model.predict_proba(X_new):预测概率,仅对某些模型有用(比如LR)。
❑model.score():得分越高,训练效果越好。
3)非监督模型提供如下接口:
❑model.transform():从数据中学到新的“基空间”。
❑model.fit_transform():从数据中学到新的基并将这个数据按照这组“基”进行转换。
scikit-learn本身提供了一些实例数据供我们上手学习,比较常见的有安德森鸢尾花卉数据集、手写图像数据集等。安德森鸢尾花卉数据集有150个鸢尾花的尺寸观测值,如萼片长度和宽度、花瓣长度和宽度,还有它们的亚属,包括山鸢尾(iris setosa)、变色鸢尾(iris versicolor)和维吉尼亚鸢尾(iris virginica)。导入iris数据集并使用该数据训练SVM模型,如代码清单2-33所示。
代码清单2-33 导入iris数据集并训练SVM模型
参考链接:
❑http://scikit-learn.org/stable/。
scikit-learn已经足够强大了,然而它并没有包含这一强大的模型——人工神经网络。人工神经网络是功能相当强大但是原理又相当简单的模型,在语言处理、图像识别等领域都有重要的作用。近年来逐渐流行的深度学习算法,实质上也是一种神经网络,可见在Python中实现神经网络是非常必要的。
本书用Keras库来搭建神经网络。事实上,Keras并非简单的神经网络库,而是一个基于Theano的强大的深度学习库,利用它不仅可以搭建普通的神经网络,还可以搭建各种深度学习模型,如自编码器、循环神经网络、递归神经网络、卷积神经网络等。由于它是基于Theano的,因此速度也相当快。
Theano也是Python的一个库,它是由深度学习专家Yoshua Bengio带领的实验室开发出来的,用来定义、优化和高效地解决多维数组数据对应数学表达式的模拟估计问题。它具有高效实现符号分解、高度优化速度和稳定性等特点,最重要的是它还实现了GPU加速,使得密集型数据的处理速度是CPU的数十倍。
用Theano可以搭建高效的神经网络模型,然而对于普通读者来说它的门槛还是相当高的。Keras大大简化了搭建各种神经网络模型的步骤,允许普通用户轻松地搭建并求解具有几百个输入节点的深层神经网络,而且定制的自由度非常大,读者甚至因此惊呼:搭建神经网络可以如此简单!
安装Keras之前首先需要安装NumPy、SciPy和Theano。安装Theano之前首先需要准备一个C++编译器。Linux系统自带该编译器,因此,在Linux系统下安装Theano和Keras都非常简单,只需要下载源代码,然后用python setup.py install安装就行了,具体可以参考官方文档。
可是在Windows系统下就没有那么简单了,因为它没有现成的编译环境,一般需要先安装MinGW(Windows系统下的GCC和G++),然后再安装Theano(提前装好NumPy等依赖库),最后安装Keras,如果要实现GPU加速,还需要安装和配置CUDA。限于篇幅,对于Windows系统下Theano和Keras的安装配置,本书不做详细介绍。
值得一提的是,在Windows系统下Keras的速度会大打折扣,因此,想要在神经网络、深度学习做深入研究的读者,请在Linux系统下搭建相应的环境。
参考链接:
❑http://deeplearning.net/software/theano/install.xhtml#install。
用Keras搭建神经网络模型的过程相当简单,也相当直观,就像搭积木一般,通过短短几十行代码,就可以搭建一个非常强大的神经网络模型,甚至深度学习模型。简单搭建一个MLP(多层感知器),如代码清单2-34所示。
代码清单2-34 搭建一个MLP(多层感知器)
需要注意的是,Keras的预测函数与scikit-learn有所差别,Keras用model.predict()方法给出概率,用model.predict_classes()给出分类结果。
参考链接:
❑https://keras.io/。
在Gensim官网中,Gensim的简介只有一句话:topic modelling for humans!
Gensim用于处理语言方面的任务,如文本相似度计算、LDA、Word2Vec等,这些领域的任务往往需要比较多的背景知识。
在这一节中,我们只是提醒读者存在这么一个库,而且这个库很强大,如果读者想深入了解这个库,可以去阅读官方帮助文档或参考链接。
值得一提的是,Gensim把Google在2013年开源的著名的词向量构造工具Word2Vec作为子库,因此需要用到Word2Vec的读者也可以直接使用Gensim,而无须自行编译。Gensim的作者对Word2Vec的代码进行了优化,所以它在Gensim下的速度比原生的Word2Vec还要快。为了实现加速,需要准备C++编译器环境,因此,建议使用Gensim的Word2Vec的读者在Linux系统环境下运行。
下面是一个Gensim使用Word2Vec的简单例子,如代码清单2-35所示。
代码清单2-35 Gensim使用Word2Vec的简单示例
参考链接:
❑http://radimrehurek.com/gensim/。
TensorFlow是一个由Google开发的开源框架,旨在支持各种机器学习和深度学习算法的实现与优化。
TensorFlow的核心是使用数据流图来表示计算,其中节点表示操作或数学运算,连线表示数据流动。这种图形化的表示方法使得TensorFlow能够高效地利用计算资源,包括多核CPU和GPU,甚至分布式计算环境。数据流图的简单示例如图2-5所示。首先分别输入值4和2到两个明确的输入节点a和节点b。节点c表示乘法运算,它从节点a和节点b接收输入值4和2,并将运算结果8输出到节点e。节点d表示加法运算,它将计算结果6传递给节点e。最后,该数据流图的终点节点e接收输入值8和6,将两者相加,并输出最终结果14。
图2-5 数据流图的简单示例
TensorFlow提供了丰富的API,支持多种编程语言,包括Python、C++和Java。用户可以使用这些API来构建、训练和部署各种类型的机器学习模型,从简单的线性回归模型到复杂的深度神经网络模型。
除了核心功能之外,TensorFlow还提供了各种工具和扩展库,如TensorBoard可视化工具、TensorFlow Serving模型部署工具等,以帮助用户更好地管理和理解机器学习模型。
总之,TensorFlow是一个功能强大、灵活且易于使用的机器学习框架,被广泛应用于图像识别、自然语言处理、语音识别等领域。
TensorFlow CPU版本和TensorFlow GPU版本是针对不同硬件平台的优化版本。
TensorFlow CPU版本:TensorFlow的默认版本,适用于在不具备GPU加速的计算机上运行。它使用CPU进行计算,能够有效地处理大规模的数据集和复杂的计算任务。TensorFlow CPU版本具有广泛的兼容性,几乎可以在所有支持Python的操作系统上运行。
TensorFlow GPU版本:专门针对装有支持CUDA的NVIDIA显卡的计算机而设计的版本,且该版本针对的是模型训练和推理的优化,而非开发。利用GPU的并行计算能力加速深度学习计算。相比CPU版本,TensorFlow GPU版本在训练和推理速度上有明显提升。GPU版本可以充分利用显卡的多个核心进行并行计算,从而加快模型训练的速度,特别适用于处理大规模的数据集和复杂的神经网络模型。
总之,TensorFlow GPU版本旨在利用GPU的并行计算能力来加速完成深度学习任务,而TensorFlow CPU版本则是在没有GPU加速的情况下运行的通用版本。两种版本的安装方式如下。
1)安装TensorFlow CPU版本。打开命令行终端或Anaconda Prompt,输入以下命令安装TensorFlow CPU版本:pip install tensorflow。
2)安装TensorFlow GPU版本。在安装TensorFlow GPU版本之前,需要确保以下4点。
①检查显卡是否支持:首先要确保使用的显卡支持CUDA加速。可以在NVIDIA官方网站上查找相应的显卡系列和型号来确认。
②安装NVIDIA显卡驱动和CUDA:首先需要安装与计算机显卡型号匹配的NVIDIA显卡驱动和CUDA。可以在NVIDIA官网上下载相应版本的驱动和CUDA,并按照提示进行安装。
③安装cuDNN:cuDNN是NVIDIA提供的GPU加速库,可用于加速深度学习计算。在安装完成CUDA后,需要下载对应版本的cuDNN并解压到CUDA安装目录中的相应文件夹下。
此外,需要注意的是,不同版本的TensorFlow GPU、CUDA、cuDNN和Python之间存在严格的对应关系,在安装TensorFlow GPU版本时,需要确保TensorFlow与CUDA、cuDNN和Python的版本兼容。一些常用的TensorFlow GPU版本与对应的CUDA、cuDNN和Python版本如表2-5所示。
表2-5 TensorFlow GPU版本与对应的CUDA、cuDNN和Python版本
④配置环境变量:将Python、pip、CUDA和cuDNN的安装路径添加到环境变量中,使其可以在任意路径下访问。在Windows系统中,可以通过以下步骤配置环境变量:右键单击计算机,选择属性,在左侧导航栏中选择高级系统设置,在弹出的窗口中选择“环境变量”,在“系统变量”中找到“Path”,双击编辑,将Python、pip、CUDA和cuDNN的安装路径添加到末尾,多个路径之间用分号隔开。
完成上述操作后,打开命令行终端或Anaconda Prompt,输入以下命令安装Tensor-Flow GPU版本:pip install tensorflow-gpu。
安装完成后,可以验证TensorFlow是否成功使用GPU加速,如代码清单2-36所示。如果输出为True,则表示TensorFlow成功使用GPU进行了加速。
代码清单2-36 安装TensorFlow GPU版本
参考链接:
❑https://www.tensorflow.org/。
TensorFlow 2.0及其后续版本已经整合了Keras高级API作为其默认的高级深度学习API,在充分发挥TensorFlow优势的同时,模型构建变得更加简洁、灵活。这使得开发者能够更加高效地进行深度学习模型开发,并且能够快速迭代和实验不同的模型架构。
使用TensorFlow的Keras高级API来构建一个简单的前馈神经网络模型,用于识别MNIST数据集中的手写数字。示例包括数据加载,模型构建、编译、训练、评估和预测等,如代码清单2-37所示。
代码清单2-37 构建简单的前馈神经网络模型
PyTorch是一个由Facebook的人工智能研究团队开发和维护的开源深度学习框架,提供了强大的张量计算功能以及灵活的深度学习构建模块,使得用户可以轻松地构建和训练复杂的神经网络模型。PyTorch的主要功能介绍如下。
1)张量操作:PyTorch提供了丰富的张量操作函数,可以高效地进行张量运算,并支持GPU加速。这使得PyTorch成为一个强大的科学计算工具,不仅适用于深度学习任务,还适用于各种数值计算和科学研究。
2)动态计算图:PyTorch使用动态计算图,使得用户可以使用Python的控制流语句(如if、for循环等)来定义计算图,从而实现更加灵活和动态的模型构建。
3)自动微分:PyTorch提供了自动微分机制,可以自动计算张量操作的梯度,这对于训练神经网络模型来说非常重要。用户可以通过调用backward()方法来实现反向传播,从而计算出模型参数的梯度。
4)神经网络构建模块:PyTorch提供了丰富的神经网络构建模块,包括各种类型的层(全连接层、卷积层、循环神经网络层等)、激活函数、损失函数等。用户可以方便地使用这些模块来构建自己的神经网络模型。
5)模型训练和优化:PyTorch提供了优化器(如SGD、Adam等)以及各种常用的损失函数,可以帮助用户方便地训练和优化模型。
6)模型部署和导出:PyTorch支持将训练好的模型导出为ONNX格式,这使得用户可以将模型部署到其他深度学习框架或者在不同的平台上运行。
7)丰富的工具和库:PyTorch生态系统中有许多与深度学习相关的工具和库,包括用于计算机视觉任务的torchvision、用于自然语言处理任务的torchtext等。
总之,PyTorch提供了丰富的功能和很好的灵活性,适用于各种深度学习任务,在学术界和工业界得到广泛应用。
PyTorch CPU版本和PyTorch GPU版本是针对不同硬件平台的优化版本。两种版本的安装方式如下。
1)安装PyTorch CPU版本。打开命令行终端或Anaconda Prompt,输入以下命令安装PyTorch CPU版本:pip install torch torchvision。
2)安装PyTorch GPU版本。与安装TensorFlow GPU版本类似,在安装完NVIDIA显卡驱动、CUDA工具包和cuDNN之后,按照代码清单2-38安装PyTorch GPU版本。
代码清单2-38 安装PyTorch GPU版本
参考链接:
❑https://pytorch.org/。
使用PyTorch构建和训练一个简单的全连接神经网络(多层感知器),用于识别MNIST数据集中的手写数字。示例包括数据加载,模型构建、编译、训练、评估和预测等,如代码清单2-39所示。
代码清单2-39 搭建多层感知器模型
PaddlePaddle(百度深度学习框架)是一个开源的深度学习平台,旨在为用户提供高效、灵活和易用的工具来完成深度学习任务。PaddlePaddle的主要功能介绍如下。
1)丰富的模型库:PaddlePaddle提供了丰富的模型库,涉及图像分类、目标检测、语义分割、机器翻译、语音识别等多个领域。这些模型库使得用户可以快速搭建和使用各种复杂的深度学习模型。
2)丰富的预训练模型:PaddlePaddle作为一个深度学习框架,也提供了丰富的预训练模型。这些预训练模型已经在大规模数据集上进行了训练,可以直接应用于各种具体任务,从而加速模型的训练和优化,并提高模型的效果和泛化能力。
预训练(Pre-training)是一种常见的深度学习技术,它通过在大规模数据集上进行训练来初始化神经网络的参数,从而提高模型的泛化能力和效果。它的目的是通过学习通用的特征表示,为后续的具体任务提供更好的初始化参数。在深度学习领域,预训练的应用十分广泛。例如,在自然语言处理领域,预训练模型可以使用大规模文本语料库来学习通用的词向量表示,从而提高后续NLP任务的效果;在计算机视觉领域,预训练模型可以使用大规模图像数据集来学习通用的特征表示,从而提高后续图像分类、目标检测等任务的效果。PaddlePaddle中的预训练模型及其说明如表2-6所示。
表2-6 预训练模型及其说明
3)高性能计算:PaddlePaddle具备优化后的计算引擎,可以充分利用多核CPU和GPU资源,提供高性能的计算能力。同时,PaddlePaddle还支持分布式训练和推理,可以在多台机器上同时进行训练和预测,加速深度学习任务的完成。
4)易用的API和工具:PaddlePaddle提供了简洁易用的API和工具,使得用户可以轻松地构建、训练和部署深度学习模型。PaddlePaddle的API设计简洁清晰,能够提高开发效率和代码可读性。此外,PaddlePaddle还提供了可视化工具,以帮助用户更好地理解模型的训练过程和结果。
5)端到端的深度学习平台:PaddlePaddle支持从数据处理、模型设计到训练和部署的全流程深度学习任务。用户可以使用PaddlePaddle进行数据预处理、模型调优、训练和推理等,无须切换不同的工具或平台,从而提高开发效率。
6)跨平台支持:PaddlePaddle支持多种操作系统(包括Linux和Windows)、多种编程语言(包括Python和C++),以及多种硬件平台(如CPU和GPU),使得用户可以根据自己的需求选择合适的平台和环境完成深度学习任务。
总之,PaddlePaddle是一款功能强大、易用性高的深度学习平台,提供了丰富的模型库、高性能计算、易用的API和工具,以及端到端的深度学习支持。它可以帮助用户快速构建、训练和部署各种复杂的深度学习模型。
PaddlePaddle CPU版本和PaddlePaddle GPU版本的安装方式如下。
1)安装PaddlePaddle CPU版本。打开命令行终端或Anaconda Prompt,输入以下命令安装PaddlePaddle CPU版本:pip install paddlepaddle。
2)安装PaddlePaddle GPU版本。与安装PyTorch GPU版本类似,只需在激活虚拟环境后,使用以下命令安装PaddlePaddle GPU版本:pip install paddlepaddle-gpu。
参考链接:
❑https://www.paddlepaddle.org.cn/。
使用预训练的ERNIE模型进行文本分类。示例包括预训练模型的加载、配置、推理,如代码清单2-40所示。
代码清单2-40 利用ERNIE模型进行文本分类
XGBoost(eXtreme Gradient Boosting)是一种基于梯度提升树的机器学习算法,被广泛应用于分类和回归问题。它是一种集成学习算法,通过集成多个弱分类器来提高预测性能。XGBoost库是一个开源的机器学习库,用于实现XGBoost算法。它提供了高效、灵活且可扩展的实现。XGBoost的主要功能介绍如下。
1)高性能:XGBoost使用了优化后的梯度提升算法,通过并行计算和近似算法来提高训练和预测的速度。
2)可扩展性:XGBoost支持在大规模数据集上进行训练,并能够处理高维特征。
3)正则化:XGBoost提供了正则化技术,如L1和L2正则化,以防止过拟合。
4)特征重要性评估:XGBoost可以通过计算特征的分裂得分或覆盖率来评估特征的重要性。
5)Python和R接口:XGBoost提供了Python和R两种主要编程语言的接口,方便用户使用和集成到自己的工作流程中。
在Windows系统上使用pip安装XGBoost的步骤如下。
首先需要确认已经安装了Visual C++Build Tools。可以通过以下链接下载并安装:https://visualstudio.microsoft.com/visual-cpp-build-tools/。
打开命令提示符(cmd),输入以下命令安装XGBoost:pip install xgboost。
如果安装过程中出现错误,可以尝试使用以下命令安装特定版本的XGBoost:pip install xgboost==0.90。其中,0.90是XGBoost的版本号,可以根据实际需求进行调整。
安装完成后,可以使用以下命令测试是否成功安装XGBoost:python-c "import xgboost”。如果没有报错,则表示XGBoost安装成功。
参考链接:
❑https://xgboost.ai/。
下面是一个简单的XGBoost示例,用于演示如何使用XGBoost完成分类任务,如代码清单2-41所示。
代码清单2-41 利用XGBoost库搭建分类模型
首先使用load_breast_cancer()函数加载乳腺癌数据集,并将其划分为训练集和测试集。然后,使用xgb.DMatrix()函数将数据转换为DMatrix对象,以便XGBoost进行处理。接下来,设置参数,如max_depth表示树的最大深度,eta表示学习率,objective表示损失函数,eval_metric表示评估指标等。然后,使用xgb.train()函数训练模型,其中num_rounds表示迭代次数。最后,使用训练好的模型进行预测,并计算准确率作为评估指标。