numpy 转载学习

熟悉数据科学的人都很喜欢NumPy库,它是时下最流行的Python系数据科学的中流砥柱,是Python科学计算、数据分析以及AI 机器学习的基础组件。在最流行的三大数据处理栈R、Matlab和Python中,NumPy是最重要的组件之一,有很多Python系的数据处理系统都依赖NumPy作为其基础架构的基础部分,比如tensorflow、pandas、SciPy和scikit-learn等。

NumPy和机器学习数据表示的可视化介绍

NumPy极大地简化了向量和矩阵的操作和处理。本文中虫虫将一图像可视化方式介绍NumPy的主要方法,以及在ML数据模型中的数据表示,图文并茂的方式系统对大家的学习有所帮助。

数组

创建数组

数组的创建通常是通过使用np.array(),并将列表传递给它。如下图:

NumPy和机器学习数据表示的可视化介绍

在创建时候NumPy也提供了很多方法帮我们初始化数组,这些方法包括:ones(),zeros()和random.random()。其参数为要生成的元素个数:

NumPy和机器学习数据表示的可视化介绍

数组计算

做为例子我们首先创建两个数组data和one:

NumPy和机器学习数据表示的可视化介绍

最其做加法运算,其实很简单就是对应位置元素互相想加。

NumPy和机器学习数据表示的可视化介绍

NumPy在处理这些计算时候,简单就想正常数学计算一样,不像其他语言中那样复杂的处理方式(比如做计算符号重载)。从而可以让我们专注于数学计算而不是怎么用循环表示。更多计算:

NumPy和机器学习数据表示的可视化介绍

实际中,也有数组和单个数字之间执行计算(也称为向量和标量之间的计算)。比如,我们的数组表示以英里为单位的距离,我们希望将其转换为公里数。我们可以简单使用data *1.6:

NumPy和机器学习数据表示的可视化介绍

NumPy对每个元素都会做了乘法计算。这个又叫做广播,一个非常有用的概念。

索引

我们可以通过各种方式列表切片方式来表示NumPy数组部分和对其索引:

NumPy和机器学习数据表示的可视化介绍

聚合计算

NumPy也支持各种聚合函数:

NumPy和机器学习数据表示的可视化介绍

除了最小值,最大值和总和之外,还支持很多其他统计函数你,比如平均值mean,所有元素相乘的累乘prod,标准差std,及其他。

多维度

截止当前,我们所有例子都是在一个维度上处理向量。 NumPy强大之处的关键是它能够将所有方法都应用到任意数量的维度。

创建矩阵

我们可以给array函数传递如下python列表参数,NumPy就会创建一个矩阵:

np.array([[1,2],[3,4]])

NumPy和机器学习数据表示的可视化介绍

也可以使用上面提到的相同方法(ones(),zeros()和random.random()),只要我们给它们一个元组来表示正在创建的矩阵的维度:

NumPy和机器学习数据表示的可视化介绍

矩阵计算

如果两个矩阵的大小相同,我们可以使用算术运算符(+ - * /)来对矩阵计算。 NumPy将这些作为位置操作处理:

NumPy和机器学习数据表示的可视化介绍

只有当不同维度为1时(例如矩阵只有一列或一行),我们才能在不同大小的矩阵上进行这些算术运算,在这种情况下,NumPy将其广播规则用于该操作:

NumPy和机器学习数据表示的可视化介绍

点计算

与算术相关的一个关键区别是使用点积的矩阵乘法。 NumPy为每个矩阵提供了一个dot()方法,我们可以用它来执行与其他矩阵的点积运算:

NumPy和机器学习数据表示的可视化介绍

这个图的底部添加了矩阵尺寸,以强调两个矩阵在它们彼此面对的一侧必须具有相同的尺寸。可以将此操作可视化为如下所示:

NumPy和机器学习数据表示的可视化介绍

矩阵索引

当我们操作矩阵时,索引和切片操作会变得更加有用:

NumPy和机器学习数据表示的可视化介绍

矩阵聚合

我们可以像聚合数组一样聚合矩阵:

NumPy和机器学习数据表示的可视化介绍

我们不仅可以聚合矩阵中的所有值,还可以使用axis参数对行或列进行聚合:

NumPy和机器学习数据表示的可视化介绍

转置和重塑

处理矩阵时的一个共同需求是需要旋转矩阵。当我们需要采用两个矩阵的点积并​​需要对齐它们共享的维度时,通常就是这种情况。 NumPy数组有一个方便的属性叫做T来获得矩阵的转置:

NumPy和机器学习数据表示的可视化介绍

在更高级的用例中,可能需要切换某个矩阵的维度。在机器学习应用程序中通常会有这种情况,其中某个模型期望输入的某个维度与数据集不同。在这些情况下,NumPy的reshape()方法很有用。只需将矩阵所需的新尺寸传递给它即可,可以为维度传递-1,NumPy可以根据已有矩阵推断出正确的维度:

NumPy和机器学习数据表示的可视化介绍

更多维度

NumPy可以完成我们在任何维度上提到的所有内容。其中心数据结构称为ndarray(N维数组)。

NumPy和机器学习数据表示的可视化介绍

在很多时候,处理新维度只是在NumPy函数的参数中添加逗号:

NumPy和机器学习数据表示的可视化介绍

实际用法——数据表示方法

最后来干货,我们来举一些NumPy能帮助你完成的有用示例包括公式和数据表示:

公式

实现适用于矩阵和向量的数学公式是考虑NumPy的关键用例。这就是NumPy是科学Python社区的宠儿主要原因。例如,考虑平均误差公式,它是监督机器学习模型处理回归问题的核心:

NumPy和机器学习数据表示的可视化介绍

在NumPy中实现它是轻而易举的:

NumPy和机器学习数据表示的可视化介绍

这样做的好处是,numpy并不会关心预测和标签是否包含一个或一千个值(只要它们的大小相同)。可以通过一个示例逐步执行该代码行中的四个操作:

NumPy和机器学习数据表示的可视化介绍

预测和标签向量都包含三个值。这意味着n的值为3。执行减法后,最终得到如下值:

NumPy和机器学习数据表示的可视化介绍

然后就可以对矢量中的值进行平方

NumPy和机器学习数据表示的可视化介绍

最后:

NumPy和机器学习数据表示的可视化介绍

数据表示

试想我们需要紧缩和构建模型所需的所有数据类型(电子表格,图像,音频......等)。其中很多都非常适合在n维数组中表示:

表格和电子表格

电子表格或值表是二维矩阵。电子表格中的每个工作表都可以是自己的变量。 Python中最受欢迎的抽象是pandas数据帧,它实际上使用NumPy并在其上构建。

NumPy和机器学习数据表示的可视化介绍

音频和时间序列

音频文件是一维样本数组。每个样本都是一个代表音频信号的一小部分的数字。 CD质量的音频每秒可能有44,100个样本,每个样本是-65535到65536之间的整数。这意味着如果你有一个10秒的CD质量的WAVE文件,你可以将它加载到长度为10 * 44,100的NumPy数组中= 441,000个样本。想要提取音频的第一秒?只需将文件加载到音频的NumPy数组中,然后获取音频[:44100]。

以下是一段音频文件:

NumPy和机器学习数据表示的可视化介绍

时间序列数据也是如此(例如,股票价格随时间变化)。

图片

图像是大小(高x宽)像素的矩阵。

如果图像是黑白的(a.k.a.灰度),则每个像素可以用单个数字表示(通常在0(黑色)和255(白色)之间)。想要裁剪图像的左上角10 x 10像素部分?告诉NumPy通过image[:10,:10]。

下面一个图像文件的片段:

NumPy和机器学习数据表示的可视化介绍

如果图像是彩色的,则每个像素由三个数字表示:红色,绿色和蓝色各自的值。在这种情况下,我们需要第三维(因为每个单元格只能包含一个数字)。因此彩色图像由尺寸的ndarray表示:(高x宽x 3)。

NumPy和机器学习数据表示的可视化介绍

自然语言

如果我们处理文本,数据就会有所不同。文本的数字表示需要一个构建词汇表的步骤(模型知道的所有唯一单词的清单)和嵌入步骤。让我们看看用古代用数字表示这个引用的步骤:

我们可以继续处理一个小数据集并使用它来构建一个词汇表(71,290个单词):

NumPy和机器学习数据表示的可视化介绍

然后可以将句子分成一系列标记(基于通用规则的单词或单词部分):

NumPy和机器学习数据表示的可视化介绍

然后我们用词汇表中的id替换每个单词:

NumPy和机器学习数据表示的可视化介绍

这些ID仍然不能为模型提供太多信息价值。因此,在将一系列单词提供给模型之前,需要使用嵌入来替换标记/单词(比如:50维word2vec嵌入):

NumPy和机器学习数据表示的可视化介绍

以看到此NumPy数组的维度为[embedding_dimension x sequence_length]。在实践中,这些将是另一种方式,但我以这种方式呈现它的视觉一致性。出于性能原因,深度学习模型倾向于保留批量大小的第一维(因为如果并行训练多个示例,则可以更快地训练模型)。这是一个明显的情况,reshape()变得非常有用。例如,像BERT这样的模型会期望其输入形状为:[batch_size,sequence_length,embedding_size]。

NumPy和机器学习数据表示的可视化介绍

现在这是一个数字卷,模型可以处理并执行有用的操作。其他行被留空了,但是他们会填充其他示例以供模型训练(或预测)。

转载

https://www.toutiao.com/a6707983457248608771/
感谢原创 虫虫安全 2019-06-30 00:01:46

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容