前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Julia机器学习核心编程.6

Julia机器学习核心编程.6

作者头像
云深无际
发布2020-08-18 15:00:30
2.2K0
发布2020-08-18 15:00:30
举报
文章被收录于专栏:云深之无迹云深之无迹

一些常规语言都有的东西

提一嘴类型转换,指更改变量的类型,但是维持值不变的操作

数组是对象的可索引集合,例如整数、浮点数和布尔值,它们被存储在多维网格中。Julia中的数组可以包含任意类型的值。在Julia中本身就存在数组这个概念。

在大多数编程语言中,数组的下标都是从0开始的。但是在Julia中,数组的下标是从1开始的。这个特性我觉得在某些时候更符合直觉.日常说256级色域,你问ta,这么个数,大概率会说,1-256.but这个东西不对,应该是0-255,其实是一种反直觉的东西,至于设计背后的终极理念,如果我可以和语言的设计者聊天,可能会知道吧.MIT哦......我可以去吗?

代码使用rand函数创建了一个数组,该函数接收两个值,其中第一个值是范围,用“:”表示;第二个值是一个数。本例创建了一个具有6个元素的数组。

前面我们讨论的数组元素的类型是相同的。

创建具有不同类型元素的数组

如下代码创建了一个具有不同类型元素的数组,但是一些元素会自动提升它的类型。

在这段代码中,我们使用Float和Int数据来创建一个数组。在Julia中创建数组时会将Int类型转换为Float类型。一般来说,Julia会尝试使用promote()函数来提升类型。如果不能提升,数组将会变成Any类型。

代码在数组中输入了Int和字符串类型的元素,我们知道这两个元素是不能提升类型的,所以该数组为Any类型。

Julia中的列表解析式

通过列表推导创建数组更加容易,接下来我们就创建一个数组,并用2的幂来填充数组。

使用列表解析式创建

对不住了,我报错了

创建空白数组,用push!函数添加元素

append!吧一个数组放另一个数组里面

这还是报错,我一会儿看看文档去

是不是有MATLAB内味儿了!!!!!

转置一下

这个转置函数可能更好一点的选择

常见的操作

意料之中的报错,不知道的去看看线性代数

懂了吧,点到为止

这个把上面的报错也写进来了


.是一个特殊的运算符

多维数组的创建

取数

整形操作

DataFrame是具有标记列的数据结构,可以单独使用不同的数据类型。就像SQL表或电子表格一样,它有两个维度。DataFrame是统计分析推荐的数据结构。Julia提供了一个名为DataFrames的包,它具有使用DataFrames所需的所有功能。Julia的DataFrames包提供了三种数据类型。

• NA:Julia中的缺失值由特定数据类型NA表示。

• DataArray:标准Julia库中定义的数组类型。虽然它具有很多功能,但并未提供任何特定的数据分析功能。而DataFrames包中的DataArray类型提供了这些功能(例如,可以在数组中存储一些缺失值)。

• DataFrame:这是一个二维数据结构,其提供了很多功能来表示和分析数据。

DataFrames中的NA数据类型

在实际生活中,我们会遇到无值的数据。虽然Julia中的数组无法存储这种类型的值,但DataFrames包中提供了这种数据类型,即NA数据类型。假设有一个带有浮点数的数据集:

julia> x = [1.1, 2.2, 3.3, 4.4, 5.5, 6.6]

这将创建一个具有6个元素的数组{Float64,1}。

现在,假设此数据集在位置x[1]处有缺失值。这意味着该数据没有意义,而不是1.1。我们不能用Julia中的数组类型来表示。当尝试分配NA值时,将发生错误,我们无法将NA值添加到数组中。

01 julia> x[1] = NA

02 Error: UndefVarError: NA not defined

03 while loading In[2], in expression starting on line 1

如果要将数据加载到具有NA值的数组中,则需要使用DataArrays包下的DataArray类型。

DataArrays的使用

01 julia> using DataArrays

02 julia> x = DataArray([1.1, 2.2, 3.3, 4.4, 5.5, 6.6])

这将创建一个具有6个元素的数组DataArrays.DataArray{Float64,1}。下面的代码将使用NA值进行测试。

NA值测试

以下代码简单测试了NA的性质。

01 julia> x[1] = NA

02 NA

03 julia> x

04 6-element DataArrays.DataArray{Float64,1}:

05 NA

06 2.2

07 3.3

08 4.4

09 5.5

10 6.6

代码01行将NA赋值给x[1],因此使用DataArray可以处理丢失的数据。NA并不总是影响应用于特定数据集的函数。因此,不涉及NA值或不受其影响的方法可以应用于数据集;如果涉及NA值,那么DataArray将给出NA作为结果。在下面的代码中,我们使用了mean()函数和true||x。mean()函数不起作用,因为它涉及NA值;而true||x则按预期工作。

01 julia> true || x

02 true

03 julia> true && x[1]

04 NA

05 julia> mean(x)

06 NA

07 julia> mean(x[2:6])

08 4.4

可以看到,使用mean()函数时返回的值为NA。代码07行不涉及NA值,因此返回正常的数值。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云深之无迹 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档