2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > Julia新版发布 比Python更适合科学计算的语言

Julia新版发布 比Python更适合科学计算的语言

时间:2022-08-04 20:04:03

相关推荐

Julia新版发布 比Python更适合科学计算的语言

Julia 1.5 版发布,带来了一系列的新特性,还有新的库功能,有兴趣的可以去官网了解。在之前的 Julia 系列中我们介绍了:

Julia强悍的性能

Julia简洁方便的数据可视化

Julia可视化

这里我们由浅入深,主要介绍三个主题,如下:

Julia科学计算小案例

科普一下阿兰图灵研究院(MLJ.jl的出处)

Julia的三大框架

Julia 计算小案例

Julia 为科学运算而生,简洁清晰的语法,让上手变得十分容易。Julia 的包从天文、地理、化学、金融、机器学习等,满足绝大多数行业的应用场景。

在命令行运行一个简单的示例,如下:

f(x) = 2x^3 + 3x^2 - pi^(x)

带入一个值,如下:

f(3)

即可获得答案,如下:

49.99372331970018

数字折线图

用Julia 读取一个文件,并用简洁明了的折线图呈现,文件内容如下:

Mygrapha b c13 45 1334 16 5412 56 11

用三条线来反应a、b、c,a就是 (13, 34, 12)三个点的集成. 图表命名为“Mygraph”。并将输出保存为文件“JuliaPlot.png”,代码如下:

# Mygraph# a b c# 13 45 13# 34 16 54# 12 56 11using Plots # 导入包 'Plots'file = readlines(ARGS[1]) # 读取文件gtitle = popfirst!(file) # 获取第一行titlel = popfirst!(file)l = split.(l)l = string.(l)labels = hcat(l...)# 保存文件results = [parse.(Float64, i) for i in split.(file)]plot(transpose(hcat(results...)), title = gtitle, label = labels)savefig('JuliaPlot.png')

运行后,呈现如下:

折线图

Julia机器学习三大框架

Julia 有很多框架,这里我只介绍熟悉的三个,如下:

Flux.jl 是一个优雅的框架,使用的是Julia原生库dataframes等。构建复杂的数据处理管道,集成Flux模型非常容易。官方一直在维护,迭代比较频繁,文档也很齐全。

MLJ.jl 是阿兰图灵研究院推出,是一个有弹性的框架。提供了自动调整参数、自动微分、整合 Tables.jl 等等多种的功能。可以将其他机器学习的模块以外挂的形式整合,包含刚说的Flux、还有主流的XGBoost、LIBSVM等着名的机器学习框架。

Gen.jl 跟Julia语言一样,也是由麻省理工推出的概率编程系统。鲁棒回归以及基于深度图像的 3D 人体姿态估计等问题上,Gen效果都很不错。

Gen人体3D姿势

Gen 贝叶斯线性回归例子

这是一个贝叶斯线性回归例子。给定(x, y)平面上的一组数据点,拟合这些数据点的线。

定义一个生成模型:利用额外语句扩展的 Julia 函数,即从概念上模拟一个假数据集。下面的模型对 slope 和 intercept 参数进行采样。然后 x 轴上的参数可以作为输入,且对相应 y 轴进行采样。将所做的随机选择命名为 @trace,这样就可以在推理程序中引用这些选择。

using Gen@gen function my_model(xs::Vector{Float64})slope = @trace(normal(0, 2), :slope)intercept = @trace(normal(0, 10), :intercept)for (i, x) in enumerate(xs)@trace(normal(slope * x + intercept, 1), 'y-$i')endend

编写了一个推理程序,用于操纵模型的 Execution Traces。推理程序是常规的 Julia 代码,并利用 Gen 的标准推理库。下面的推理程序会输入数据集,并迭代地运行 MCMC 算法,以拟合 slope 和 intercept 参数:

function my_inference_program(xs::Vector{Float64}, ys::Vector{Float64}, num_iters::Int)constraints = choicemap() for (i, y) in enumerate(ys)constraints['y-$i'] = yend # 运行这个模型(trace, _) = generate(my_model, (xs,), constraints)for iter=1:num_iters (trace, _) = metropolis_hastings(trace, select(:slope))(trace, _) = metropolis_hastings(trace, select(:intercept))endchoices = get_choices(trace)return (choices[:slope], choices[:intercept])end

得到结果如下:

xs = [1., 2., 3., 4., 5., 6., 7., 8., 9., 10.]ys = [8.23, 5.87, 3.99, 2.59, 0.23, -0.66, -3.53, -6.91, -7.24, -9.90](slope, intercept) = my_inference_program(xs, ys, 1000)println('slope: $slope, intercept: $intercept')阿兰图灵研究院

刚刚讲过MLJ.jl是有阿兰图灵研究院推出的,这里就科普一下这所牛气的研究院。

阿兰·图灵研究院(Alan Turing Institute)是由剑桥、牛津、爱丁堡、华威和伦敦大学学院五所大学领导,主攻大数据分析及应用研究。

商业创新及技术部国务大臣 Vince Cable 宣布,将联合领导总部位于伦敦大英图书馆旁的阿兰·图灵研究所,派出专家及精英学者进行尖端数学、计算机技术领域的研究,旨在将英国建设为世界上领先的大数据分析及应用国家。

Cable说,在这五所大学的领导下,“阿兰·图灵研究所将吸引最尖端的先进科学,引导我们如何在一个飞速变化和竞争激烈的世界中去使大数据。”

,又有八所大学加入该研究院,包括:利兹大学,曼彻斯特大学,纽卡斯尔大学,伦敦玛丽皇后大学,伯明翰大学,埃克塞特大学,布里斯托大学和南安普敦。

研究领域包括:

演算法

应用数学

人工智能

计算机系统与架构

机器学习

数学建模

编程语言

理论数学

社会数据科学

统计方法与理论

参考://04/Julia.html

http://news.mit.edu//ai-programming-gen-0626

https://probcomp.github.io/Gen/

/probcomp/Gen

https://dspace.mit.edu/bitstream/handle/1721.1/119255/MIT-CSAIL-TR--020.pdf

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。