Web安全之机器学习 | 学习工具之Python和TensorFlow

Python在机器学习领域的优势:

1、 NumPy:

NumPy是Python的一种开源的数组计算扩展。可用来存储和处理大型矩阵。提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理、以及精密的运算库,专门为进行严格的数字处理。

NumPy包括:

一个强大的N维数组对象Array;

比较成熟的(广播)函数库;

用于整合C/C++和Fortran代码的工具包;

实用的线性代数、傅里叶变换和随机数生成函数。

【1】安装

pip install --user numpy

【2】使用

首先需要创建数值才能对其进行其他操作。

可以通过给array函数传递Python的序列对象创建数组,如果传递的是多层嵌套的序列,将创建多维数组(列如下列变量c)。

每个数组都有shape属性和dtype属性,shape表示数组维数,dtype 表示数组元素类型。

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

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

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

除了使用下标范围存取数组之外,NumPy还提供了两种存取元素的高级方法。

NumPy和MatLab不一样,对于多维数组运算,缺省情况下并不能使用矩阵运算,可以调用相应的函数。

NumPy库提供了matrix类,使用matrix类创建的是矩阵对象,它们的加减乘除运算缺省采用矩阵方式计算,用法和Matlab类似。由于NumPy中同时存在ndarray和matrix对象,很容易将两者混淆,所以并不推荐在复杂的程序中使用matrix。

使用matrix的例子:

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

可使用dot函数进行计算矩阵的乘积,对于二维数组计算的是矩阵的乘积,对于一维数组,计算的是点积(内积)。一维数组要当作矢量或者行矢量进行矩阵运算时,推荐先使用reshape函数转换为二维数组:

reshape()函数可改变数组的形状,其中参数-1,它所做的是未知维度的表示法,意思是让numpy用正确的值来填充缺失的维度,这样我的数组就保留了相同数量的项。例如a.reshapr((-1,1))告诉numpy,我不知道可以分成多少行,但是我的需要是分成1列。reshape(a,b,c)  参数a:创建矩阵个数;参数b:创建的矩阵的行数;参数c:创建的矩阵的列数。参数a可选。

NumPy提供了dot、inner、outer等函数计算乘积。

dot:对于两个一维的数组,计算的是这两个数组对应下标元素的乘积和(数学上称为内积);对于二维数组,计算的是两个数组的矩阵乘积;对于多维数组,它的通用公式为:

dot(a, b)[i,j,k,m] = sum(a[i,j,:] * b[k,:,m])

即结果数组中的每个元素都是——数组a的最后一维上的所有元素与数组b的倒数第二位上的所有元素的乘积和。

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

dot乘积的结果c可以看作是数组a,b的多个子矩阵的乘积。

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

inner(a, b)[i,j,k,m] = sum(a[i,j,:]*b[k,m,:])

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

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

2、SciPy

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

【1】安装:

在链接:https://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy下载相对于系统版本的scipy的whl文件,然后将下载文件放到python目录下,输入命令:

pip install scipy‑1.2.2‑cp36‑cp36m‑win_amd64.whl

3、NLTK

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

【1】安装:

pip install -U nltk

【2】使用:

加载数据:

分词与标识:

如果报错提示 Resource [93mpunkt[0m not found.输入命令:import download('punkt')

4、Scikit-Learn

Scikit-Learn是基于Python的机器学习模块,基于BSD开源许可证。其基本功能主要分为6个部分:分类、回归、聚类、数据降维、模型选择、数据预处理。具体可参考官网:https://scikit-learn.org/stable/index.html

安装:

pip install -U scikit-learn

TensorFlow简介与环境搭建

TensorFlow是一个采用数据流图、用于数值计算的开源软件库。节点在图中表示数学操作,图中的线则表示在节点间相互联系的多维数据数组,即张量。

安装:

pip install tensorflow==2.0.0-beta0 

使用virtualenv创建一个隔离的容器安装TensorFlow,可以使排查安装问题变得更容易:

先安装所有的必备工具:

# 在Linux上:
$ sudo apt-get install python-pip python-dev python-virtualenv
# 在Mac上:
$ sudo easy_install pip # 如果还没有安装pip
$ sudo pip install --upgrade virtualenv

接下来,建立一个全新的virtualenv环境。为了将环境建在~/tensorflow目录下,执行:

$ virtualenv --system-site-packages ~/tensorflow
$ cd ~/tensorflow

然后激活virtualenv:

$ source bin/activate # 如果使用bash
$ source bin/activate.csh # 如果使用 csh
(tensorflow)$ # 终端提示符应该发生变化

在virtualenv内安装tensorflow:

(tensorflow)$ pip install –U TensorFlow

当使用完tensorflow:

(tensorflow)$ deactivate # 停用virtualenv

参考资源

http://www.numpy.org/

https://www.scipy.org/

http://www.nltk.org/

http://scikit-learn.org/stable/modules/decomposition.html

http://www.tensorfly.cn/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值