机器学习系列文章--(一)打造机器学习工具箱

机器学习系列文章--(一)打造机器学习工具箱

司塔科信息安全 欧美男星 2018-11-28 00:00:52 583

        在机器学习领域,Python语言可以大展身手,因为Python的设计哲学是“优雅、明确、简单”。Python开发者的哲学是“用一种方法,最好是只有一种方法来做一件事”。在设计Python语言时,如果面临多种选择,Python开发者一般会拒绝花俏的语法,而选择明确的没有或者很少有歧义的语法。由于这种设计观念的影响,Python源代码具备更好的可读性,并且能够支撑大规模的软件开发。几乎在任何涉及软件开发的领域都可以看到Python的身影,在机器学习领域它更是威名远扬,大量的优秀机器学习库都是基于Python开发或者提供Python接口的。所以本节重点介绍Python语言在机器学习领域的优势和应用,包括几个重点库:NumPy、SciPy、NTLK、Scikit-Learn的简介、环境依赖以及安装,最后介绍TensorFlow的简介及安装。为后续的学习准备好工具箱。

一.python在机器学习的优势


Python在机器学习领域应用广泛(如图所示)


主要原因有两个:

语法简单,功能强大;

生态完整,具备丰富的第三方库,对应的机器学习库非常丰富。



下面将重点介绍四个库。

1.Numpy

    NumPy(Numerical Python) Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。NumPy 的前身 Numeric 早是由 Jim Hugunin 与其它协作者共同开发,2005 年,Travis Oliphant Numeric 中结合了另一个同性质的程序库 Numarray 的特色,并加入了其它扩展而开发了 NumPyNumPy 为开放源代码并且由许多协作者共同维护开发。NumPy 是一个运行速度非常快的数学库,主要用于数组计算,包含:

 (1)一个强大的N维数组对象 ndarray

 (2)广播功能函数

 (3)整合 C/C++/Fortran 代码的工具

 (4) 线性代数、傅里叶变换、随机数生成等功能

安装方法:


用法示例:

首先需要创建数组才能对其进行其他操作。可以通过给array函数传递Python的序列对象创建数组,如果传递的是多层嵌套的序列,将创建多维数组(下例中的变量c)


数组的大小可以通过其shape属性获得


数组元素的存取方法和Python的标准方法相同:


和Python的列表序列不同,通过下标范围获取的新的数组是原始数组的一个视图。它与原始数组共享同一块数据空间:


  除了使用下标范围存取元素之外,NumPy还提供了两种存取元素的高级方法。NumPy和MatLab不一样,对于多维数组的运算,缺省情况下并不使用矩阵运算,如果你希望对数组进行矩阵运算的话,可以调用相应的函数。

  NumPy库提供了matrix类,使用matrix类创建的是矩阵对象,它们的加减乘除运算缺省采用矩阵方式计算,因此用法和MatLab十分类似。

但是由于NumPy中同时存在ndarray和matrix对象,用户很容易将两者弄混。这有违Python的“显式优于隐式”的原则,因此并不推荐在较复杂的程序中使用matrix。下面是使用matrix的一个例子:


   因为a是用matrix创建的矩阵对象,因此乘法和幂运算符都变成了矩阵运算,于是上面计算的是矩阵a和其逆矩阵的乘积,结果是一个单位

矩阵。矩阵的乘积可以使用dot函数进行计算。对于二维数组,它计算的是矩阵乘积,对于一维数组,它计算的是点积。当需要将一维数组当作

列矢量或者行矢量进行矩阵运算时,推荐先使用reshape函数将一维数组转换为二维数组:


   除了dot计算乘积之外,NumPy还提供了inner和outer等多种计算乘积的函数。这些函数计算乘积的方式不同,尤其是当处理多维数组的时候,更容易搞混。下面分别介绍这几个函数。·dot:对于两个一维的数组,计算的是这两个数组对应下标元素的乘积和(数学上称之为“内积”);对于二维数组,计算的是两个数组矩阵乘积;对于多维数组,它的通用计算公式如下,即结果数组中的每个元素都是——数组a的最后一维上的所有元素与数组b的倒数第二位上的所有元素的乘积和。


下面以两个三维数组的乘积演示一下dot乘积的计算结果。

首先创建两个三维数组,这两个数组的最后两维满足矩阵乘积的条件:


·inner:和dot乘积一样,对于两个一维数组,计算的是这两个数组对应下标元素的乘积和;对于多维数组,它计算的结果数组中的每个元素都是——数组a和b的最后一维的内积,因此数组a和b的最后一维的长度必须相同。


下面是inner乘积的演示


outer:只按照一维数组进行计算,如果传入参数是多维数组,则先将此数组展平为一维数组,之后再进行运算。outer乘积计算的列向量和行向量的矩阵乘积:


矩阵中更高级的一些运算可以在NumPy的线性代数子库linalg中找到。例如inv函数计算逆矩阵,solve函数可以求解多元一次方程组。下面是solve函数的一个例子:


solve函数有两个参数a和b。a是一个N×N的二维数组,而b是一个长度为N的一维数组,solve函数找到一个长度为N的一维数组x,使得a和x的矩阵乘积正好等于b,数组x就是多元一次方程组的解。


2. Scipy

  SciPy是一款方便、易于使用、专为科学和工程设计的Python工具包,如图所示。它包括统计、优化、整合、线性代数模块、傅里叶变换、信号和图像处理、常微分方程求解器等等。


安装:

pip install --user numpy scipy matplotlib iPython jupyter pandas sympy nose


3. NLTK

NLTK在NLP领域中是最常使用的一个Python库,包括图形演示和示例数据,其提供的教程解释了工具包支持的语言处理任务背后的基本概念。

安装程序如下:

pip install -U nltk

加载数据如下:


用法示例

分词和标识


标识名词实体



4. scikit-learn

   Scikit-Learn是基于Python的机器学习模块,基于BSD开源许可证。这个项目最早于2007年发起,目前也是由社区自愿者进行维护的。Scikit-Learn官方网站上可以找到相关的Scikit-Learn的资源、模块下载、文档、例程等等。Scikit-Learn的基本功能主要分为6个部分:分类,回归,聚类,数据降维,模型选择,数据预处理。具体可以参考官方网站上的文档,见图


安装方法:pip install -U scikit-learn




二:TensorFlow简介与环境搭建

     TensorFlow是一个采用数据流图、用于数值计算的开源软件库(如图)。节点在图中表示数学操作,图中的线则表示在节点间相互联

系的多维数据数组,即张量。它灵活的架构使你可以在多种平台上展开计算,例如台式计算机中的一个或多个CPU(或GPU)、服务器、移动

设备等等。TensorFlow最初由Google大脑小组(隶属于Google机器智能研究机构)的研究员和工程师们开发出来,用于机器学习和深度神经网

络方面的研究,但这个系统的通用性使其也可广泛用于其他计算领域。



TensorFlow的特点:

·高度的灵活性;

·真正的可移植性;

·将科研和产品联系在一起;

·自动求微分;

·多语言支持;

·性能最优化。


安装TensorFlow

1.安装virtualenv


2.创建一个虚拟环境


3.激活虚拟环境


4.在虚拟环境中安装tensorflow


如果没有错误,那就安装成功了

5.激活tensorflow环境


取消

感谢您的支持鼓励,我会继续努力的!

文章地址:

用户邮箱:

打赏金额:USDT

点击”去打赏“,即可进行打赏支持本文章哦

发表评论