![](https://img-blog.csdnimg.cn/20190918140129601.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
julia机器学习&科学计算
Julia 科学计算 与 机器学习。
October-
多学习
展开
-
深度学习----使用LSTM算法预测变压器套管温度
1、概要本来想使用Julia 的Flux深度学习框架,但是Flux对时间序列数据分析的支持不是太好,只好使用 Keras+TensorFlow. 暂时没有使用堆叠式LSTM,这里只是使用一层 LSTM ,一层Dense。总的来开效果还不错。2、准备数据数据是在某电站采集的真实数据,且都已经经过清理,可以直接拿来用。数据按照分钟、小时、天 等三种时间矢量单位进行分析,这里给出的代码是按照小时的时间矢量单位,也就是每条数据都是某一天某一小时内的温度平均值,要预测的值也是 某一小时内的温度平均值.原创 2020-12-12 18:01:31 · 1452 阅读 · 0 评论 -
Julia 时间序列数据分析 ---- TimeSeries基础用法
这里主要介绍Julia 时间序列分析库 TimeSeries 的用法。(1)基础数据类型使用,取数using Datesusing TimeSeriesusing MarketData################(1)数据索引########tuple 类型的数据,封装到TimeArray中,注意:一定要指定时间戳 timestamp = :datetimedates = Date(2018, 1, 1):Day(1):Date(2018, 12, 31)data = (datet原创 2020-10-11 16:29:38 · 2409 阅读 · 0 评论 -
Julia 并发编程 ---- 循环中正确使用并发的方式
1:非并发using Randomconst m = MersenneTwister(0);function dothestuff!(out_N, N, ic, m) out_N[:, ic] .= rand(m, N)endfunction dummy_base(m=m, N=100_000,c=256) out_N = Array{Float64}(undef,N,c) for ic in 1:c dothestuff!(out_N, N, ic,原创 2020-08-16 17:55:25 · 1141 阅读 · 0 评论 -
Julia 并发编程 ---- 多线程与多进程的一些使用建议
这里先看一份代码示例using Distributedaddprocs()@everywhere using SharedArrays;@everywhere using BenchmarkTools;function test(lim) r = zeros(Int64(lim / 16),Threads.nthreads()) Threads.@threads for i in eachindex(r) r[Threads.threadid()] = (Bi翻译 2020-08-15 17:44:28 · 2192 阅读 · 0 评论 -
物理概念在数据分析中的实践——阻尼
物理概念在数据分析中的实践——阻尼 作者: CPDA 数据分析师 刘程浩 最近我在编写一些课件,写着写着,有些过去已经看到几百次的,但是却没认真留意的概念引起了我的注意。因为有些算法模型对大多数人来说偏应用,你只要会用就行。但是如果要讲出来,让人听懂看懂,还真不是一回事儿。里面有很多概念,看似简单,想提一下然后就跳过去,但是到了后面再写的时候,发现之前跳过去的概念又见面了,还真绕不过去。于是我决定认真搞清楚这些概念的应用,也顺带做一个理解物理和数据分析之间的桥梁。 说到阻尼,物理学...转载 2020-05-18 19:25:50 · 1706 阅读 · 0 评论 -
如何才能成为顶级的数据分析师?
每个行业都有好的数据分析师,但如何定义顶尖呢?顶级的数据分析师一定会在数据变现最牛逼的行业里存在,比如金融风控或者数字广告行业,这些业务是真正的数据驱动,因为数据上差一点点,效益就会差一大截。这里以运营商推出的“基于信用分的欠费免停机服务”为例来说明顶级数据分析师(为了描述方便,称其为A君)应该发挥出的价值,然后笔者总结了9个核心能力。1、找到正确的问题A君分析的问题是公司的大问题,相信大家...转载 2020-03-16 18:43:35 · 614 阅读 · 0 评论 -
Julia 机器学习 --- k-折交叉验证
k-折交叉验证(k-fold crossValidation)在机器学习中,将数据集A分为训练集(training set)B和测试集(test set)C,在样本量不充足的情况下,为了充分利用数据集对算法效果进行测试。对一组n个样本进行k-折交叉验证,这些样本被随机分成k个大小几乎相同的不相交验证集。这将生成长度约为n*(1-1/k)的k个训练子集,每次将其中一个包作为测试集,剩下k-1个包作为训练集进行训练主要目的:通过多次训练,得出偏差和方差,来衡量一个模型评估方法的好坏。Error原创 2020-07-06 22:03:07 · 997 阅读 · 0 评论 -
Julia机器学习---- 决策树(决策树-CART、随机森林、回归随机森林)
1、算法说明决策树属于监督式机器学习,一般是通过训练带有标签的数据进行分类,然后来预测没有带有标签的数据 属于那个类别。监督式学习问题可以进一步被分为回归和分类问题。决策树(这里作为一个大类)也包含分类(剪枝决策树分类器、随机森林)和回归(回归随机森林)。1.1 实现原理这里列举一些比较好的文章决策树[1,2,3]随机森林[1,2,3]回归随机森林[1,2,3]1.2 在使用决策树之前重点看下随机森林优缺点:优点:正如上文所述,随机森林算法能解决分类与回归两种类型的问题,原创 2020-07-12 21:29:39 · 1228 阅读 · 1 评论 -
Julia 机器学习 ---- 训练集和测试集的拆分函数
如果只有一个数据集,在机器学习的过程中,一般会将原始数据集分割为训练数据集和测试数据集,训练集 用于训练模型的子集。测试集- 用于测试训练后模型的子集。但要确保测试集满足以下两个条件:规模足够大,可产生具有统计意义的结果。 能代表整个数据集。换言之,挑选的测试集的特征应该与训练集的特征相同。在Julia中也提供了一些拆分数据集的方法,这里给出简单的代码示例。1、流出法留出法(hold-out)直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T。在S上训练..原创 2020-07-04 18:10:11 · 1318 阅读 · 0 评论 -
Julia 机器学习 ---- 单变量线性回归 和 多元线性回归 (Linear regression)
目录1、线性回归概述2、数据准备3、数据探索3.1简单的数据清洗3.2 图形分析数据3.2.1 盒形图的离群点分析,需要根据四分位距去掉部分数据点。3.2.2 密度图进行分布分析3.2.3 散点图相关分析4、数据预处理4.1、独热编码(One Hot Encoding)4.2、按照比例分割为“测试集”和“训练集”5、建立模型6 检验标准(模型诊断)7、 模型预测、评价、交叉验证7.1 模型的预测与评价7.1.1预测7.1.2 计算误差线原创 2020-07-04 17:25:13 · 4058 阅读 · 0 评论 -
Julia ---- Debugger 代码调试方式
Julia debug相对比较麻烦,但还是有一些比较好用的工具 ,这里简单介绍两种方式JuliaPro 中debug插件 Juno.@enterDebugger.jl原创 2020-06-20 23:14:48 · 2052 阅读 · 0 评论 -
Julia 机器学习 ---- 特征提取
t-SNE原创 2020-06-14 10:27:09 · 897 阅读 · 1 评论 -
Julia机器学习 ---- 特征选择
特征评价对理解数据集是非常必要的。根据你随后想建立的模型的类型,有多种策略可以完成特征评价,其中最重要的如下。 区分指数——连续型特征。 费舍尔判别比——连续型特征。 相似度指数——离散型特征。 杰卡德相似度——离散型特征。 互信息——既适用于离散型特征,也适用于连续型特征。...原创 2020-06-19 23:25:18 · 845 阅读 · 0 评论 -
Julia 机器学习----基于DataFrame 的特征标准化方法
1、概述评价是现代社会各领域的一项经常性的工作,是科学做出管理决策的重要依据。随着人们研究领域的不断扩大,所面临的评价对象日趋复杂,如果仅依据单一指标对事物进行评价往往不尽合理,必须全面地从整体的角度考虑问题,多指标综合评价方法应运而生。所谓多指标综合评价方法,就是把描述评价对象不同方面的多个指标的信息综合起来,并得到一个综合指标,由此对评价对象做一个整体上的评判,并进行横向或纵向比较。而在多指标评价体系中,由于各评价指标的性质不同,通常具有不同的量纲和数量级。当各指标间的水平相差很大时,如果直接用原创 2020-06-13 22:46:44 · 875 阅读 · 0 评论 -
Julia机器学习--KNN算法KDTree结构搜索欧式距离最近的数据,并绘制图表
NearestNeighbors是Julia中一个效率比较高的KNN分类统计代码库,它提供了BallTree,KDTree等多种数据结构。这里使用KDTree结构搜索欧式距离最近的数据, 并绘制图表。这里仍然使用鸢尾花数据代码示例using RDatasetsusing DataFramesusing CSVusing NearestNeighborsusing Colorsusing PyPlotusing PyCallimport PyPlot:plotimport Nea原创 2020-06-06 19:56:15 · 757 阅读 · 0 评论 -
Julia机器学习--KNN算法BallTree 结构分类统计,并使用圆绘制图表
NearestNeighbors是Julia中一个效率比较高的KNN分类统计代码库,它提供了BallTree,KDTree等多种数据结构。这里使用BallTree结构,并绘制图表。这里仍然使用鸢尾花数据代码示例using RDatasetsusing DataFramesusing CSVusing NearestNeighborsusing Colorsusing PyPlotusing PyCallimport PyPlot:plotimport NearestNeighb原创 2020-06-06 18:50:08 · 755 阅读 · 0 评论 -
Julia ---- PyCall.jl 的正确安装方式
Julia中经常需要Python的代码库,毕竟科学计算还是Python的库比较丰富。这时需要现在安装PyCall.jl。如果是直接Pkg.add("PyCall") 那你就错了。如果要正确使用这个程序包,Julia需要一个完整的Python编译环境,默认情况下,它是Miniconda 来管理python的编译环境。当然也可以手动设置,如下所示,但是我的观点最好还是使用默认的,一个独立的编译环境是编写稳定代码的基础,最好不要跟其他编程环境共享Python的基础设置。ENV["PYTHON"] = "..原创 2020-05-26 21:09:46 · 5523 阅读 · 6 评论 -
Julia机器学习---- 聚类分析 代码示例
Clustering.jl 是Julia中一个很基础的 用于聚类数据分析的代码库,文档里缺少一些代码示例,这里简单整理了一下。K-meansK-均值是一种经典的聚类或矢量量化方法。它产生固定数量的簇,每个簇都与一个中心(也称为原型)关联,并且每个数据点都被分配给具有最近中心的簇。从数学角度来看,K-means是一种坐标下降算法,它解决了以下优化问题:这里,μk是k次聚类的中心,Zi是i次点的聚类指标。代码样例using RDatasets, Clustering, P...原创 2020-05-17 23:14:58 · 907 阅读 · 4 评论 -
Julia ---- Eclipe 也出Julia插件了
地址:https://marketplace.eclipse.org/category/free-tagging/julia直接把Install 拖到Eclipse上就行了。原创 2020-05-16 15:22:07 · 346 阅读 · 0 评论 -
Julia ---- 如何定义自己的符合Pkg规范的程序包
之前创建Pkg包的时候 都需要自己 按照程序结构手动创建,幸运的是现在有了一个模板程序:PkgTemplates.jl。需要注意的是它也在随着Julia版本不断更新,如果使用的过程中出现了问题,可能过段时间就会解决。添加工具包:pkg> add PkgTemplates ...原创 2020-05-10 22:31:38 · 625 阅读 · 1 评论 -
Julia ---- 将String 转换成其他的数据类型
JuliaData 核心库中有一个比较新的 数据转换的工具包(Parsers.jl),专门用来将String类型转换成其他的基础类型。使用起来非常方便,这里做一个简单的介绍。使用的时候先添加开发环境 Pkg.add("Parsers")代码示例using Parsers# 基础整型x = Parsers.parse(Int, "101")#101x2 = Parsers.parse(Int8, "-1")#-1x3 = Parsers.parse(Int, SubString(.原创 2020-05-10 16:54:55 · 1713 阅读 · 0 评论 -
Julia ---- 基于 DAG图 的并行计算:Dagger
Dagger 是一个核心库之外并行计算的框架。它借鉴了Python 的 并行计算框架 Dask。它可以在许多Julia工作进程上以向无环图(DAGs)的形式高效地运行计算任务。DAGs 的数据结构就是Thunk,DAGs中每个节点成为Chunk。一个Chunk的输出可以成为下一个Chunk的输入参数。目前看Chunk 都是延迟计算的。核心函数delayed(f; options...)f :是一个给定输入的函数。options... :包含一些控制DAGs的运行的可选参数。get_res原创 2020-05-09 23:24:56 · 1219 阅读 · 0 评论 -
Julia---- 整理一些用于数据分析的工具包
数据库相关mysql: MySQL.jlSQLite:SQLite.jlPostgreSQL: 原来的PostgreSQL.jl已经废弃,请使用 LibPQ.jlRedis:Redis.jlOralce:ODBC.jlJDBC:JDBC.jl 目前不支持在windows上使用MongoDB: 原来的Mongo.jl 版本太老了,还是使用Mongoc.jlle...原创 2020-05-04 23:01:36 · 1405 阅读 · 0 评论 -
julia ---- 与标准阵列相比,DataFrames.jl或JuliaDB.jl有什么好处
与标准阵列相比,DataFrames.jl或JuliaDB.jl有什么好处(1)它们允许您存储具有不同类型的数据列。在数组中也可以这样做,但是它们必须定义成存储任意类型(::Any)的数组,这通常比具有具体类型的数据列要慢并且占用更多的内存。(2)可以使用列名访问。这是一个次要功能—例如named array.jl提供了一个具有命名维度的数组类型。(3)另一个好处是,有一个生态系统建立...翻译 2020-04-25 18:48:28 · 907 阅读 · 0 评论 -
Julia ---- DataFrame 快速清洗数据的一些方式
(1)循环处理每一项数据的方式(2)原创 2020-04-12 16:43:23 · 1293 阅读 · 0 评论 -
Julia ---- 广播变量的性能问题
翻译内容在Julia中广播是一种编写向量化代码(类似Matlab)的方法,它是一种高效和明确的方法。除了代码执行速度更快以外,显式矢量化也是一个显著的优点。但也是有限制的,对复杂函数进行矢量化可能需要相当多的练习才能熟练使用,但通常可读性较差。Julia中使用点广播(矢量化)。如果希望调用函数时使用向量(对向量的每个元素应用相同的函数),只需在函数调用上加一个点。例如,值向量的正弦变成si...翻译 2020-03-29 17:51:53 · 446 阅读 · 0 评论 -
Julia --- 将JSON转换成DataFrames
思路比较简单,基本就是把list中的每个节点转成DataFrames,然后再通过reduce函数合并成一个DataFramesjson_str = """[{ "color": "red", "value": "#f00" }, { "color": "green", "value": "#0f0" }, { "color": "blue", "value": "#00f" }, ...原创 2020-03-28 17:29:54 · 938 阅读 · 0 评论 -
Julia ---- Pkg 如何加速安装工具包
目前的加速方式有两种:第一种方式参考博客 :https://blog.csdn.net/ouening/article/details/100187862,需要安装privoxy代理,这种方式适用所有版本的JuliaPro,速度确实也很快,但是有时候会失效需要重新配置并启动代理,同时需要关闭本地的防火墙。第二种方式Pkg 默认使用的是GitHub的上安装源,目前国内还有一个安装源地...原创 2020-03-28 15:58:46 · 1365 阅读 · 0 评论 -
julia ---- 如何定义全局静态变量
有两种情况需要考虑(1)如果在全局范围内 用const 和const global 都是一样的。(2)如果是在特定范围内,比如在某个函数内,只能使用 global 定义全局变量。 并且 会覆盖外部定义的全局变量(3)const定义的全局变量是 可以被覆盖的代码示例const global x = 2x = "a"# invalid redefinition of ...原创 2020-03-15 17:54:54 · 1309 阅读 · 0 评论 -
让代码飞起来——高性能Julia学习笔记(二)
数字Julia 中 Number 的 size 就跟 C 语言里面一样, 直接依赖于底层的 CPU/OS, 32 位 OS 上 integer 默认是 32 位, 64 位 OS 上 integer 默认是 64 位。可以用bitstring查看 number 的二进制表示:julia > bitstring(3)"000000000000000000000000000000...转载 2020-03-15 17:09:29 · 987 阅读 · 0 评论 -
让代码飞起来——高性能Julia学习笔记
最近有个项目是计算密集型的, 最开始用 TS 快速实现了算法原型, 后来改用 Go 重写, Go 的 goroutine 用起来还是蛮爽的, 很容易把所有 cpu core 跑满。 不过随着代码逐渐复杂, 感觉用 Go 还是没有动态语言写起来爽, 性能也没有达到极致, 跟 C/C++/Rust 还是有一定差距,似乎对 GPU 和 SIMD 支持也不太好(不敢说对 Go 精通, 可能是我没找到合适的...转载 2020-03-15 16:06:55 · 382 阅读 · 0 评论 -
Julia ---- 一种高效扫描Array中数据的方式
很多时候需要逐个扫描Array中数据,并根据计算规则计算数据。这里以对比数据为例给出两种计算方式:1 使用内置函数all 过滤arraytest_1(x) = all(y->y==x[1],x)2 这里有一个 自定义 函数@inline function test_2(x) length(x) < 2 && return true ...原创 2020-03-15 15:46:55 · 177 阅读 · 0 评论 -
Julia ---- 有没有类型检查?
Julia 目前没有用于类型检查的工具,语言本身也没有特别的类型检查的机制。但它是有类型注释的。但类型注释可能是一个红鲱鱼问题,类型注释无法实现类型检查。添加类型注释也非常简单:只需在任何字段、参数或表达式上加上::Any,它就会有一个类型注释,这也是Julia隐式地做的。但这不能告诉编译器关于该对象的实际类型的任何有用信息。它给人一种假象,好像是有类型检查 但实际没有添加任何信息。这里...原创 2020-03-14 17:19:00 · 460 阅读 · 0 评论 -
Julia ---- 为Julia做一下辩解
我写这篇文章的主要目的就是为了给我喜欢的Julia语言一辩,并且指出人们对Julia语言的几个常见的误区。预警:文章非常长,所以需要希望入坑的人有耐心阅读文章内容1.常见误区2.重新认识Julia3.结尾正文即使我不说大家也知道,在知乎的Julia的这个话题下的相关话题和讨论寥寥无几,不仅如此,还充斥着很多大量的负面评论,除了少量非常客观的分析是在谈论语言本身以外(这些...转载 2020-03-01 09:54:27 · 1977 阅读 · 2 评论 -
Julia---- 为什么要多重派发?(Why multiple dispatch?)
为什么要多重派发?(Why multiple dispatch?)最近看Julia语言的时候,在Wikipedia的multiple dispatch页面上看到了一些有意思的东西,首先最令人惊讶的就是,尽管有这么多语言都能支持multiple dispatch,不过貌似主流语言里面把multiple dispatch作为主要买点的也就只有Julia了.(嗯,CLOS也是一个比较出...转载 2020-03-01 09:47:53 · 999 阅读 · 0 评论 -
Julia ---- 多重分派
什么是多重分派 一般的多态是单重分派,即一个基类指针(或引用)直接到绑定到某一个子类对象上去,以获得多态行为。就像java 那样。但是Julia多重派发机制,有它自己的特点,这里给出一些代码,并展示多重派发的函数如何回调父类函数。并参考 手册中https://docs.julialang.org/en/v1/base/base/#Core.invoke中关于invoke 的使用。其...原创 2020-03-01 09:09:07 · 635 阅读 · 0 评论 -
Julia并发编程 ---- 进程数设置
julia-p 4将启动4个 worker。这意味着如果运行nprocs(),将有5个进程。id为1的进程为主进程将指导计算,也是本地进程,然后2-5 号进程将是执行并行计算的工作进程。这些进程可能在本地服务器上,也可能在远程服务器上。using Distributednprocess = 4#添加新的工作进程 addprocs(nprocess)# 5-elemen...原创 2020-02-29 16:23:28 · 654 阅读 · 0 评论 -
Julia ---- 正确使用泛型定义函数
要注意两个方面:(1)函数定义中最好使用最基础的类型定义,如下所示;(2) 泛型定义方式要正确示例代码:正确的示例:function foo(a::Vector{String})endfoo(["a"])function foo(::AbstractString)endfoo("a")如果是集合,应该是这样的:function foo(a::...原创 2020-02-26 22:29:45 · 687 阅读 · 0 评论 -
Julia 并发编程 ---- Julia并行机制的特点和限制
问题 1:技术文档中有这样关于Julia并发机制的描述:2.14 并行机制。在Julia中并行执行由标准库中实现的基于消息的多处理系统提供。Julia语言设计通过提供对称协程来支持实现并发编程库,这种协程也可以看作是协同调度的线程。这种设计方式使异步通信隐藏在标准库中,而不需要用户设置回调。Julia目前不支持本机线程(Native threads),这是一个限制,也是它的一个优点,这样可...翻译 2020-01-29 23:19:12 · 1291 阅读 · 0 评论 -
Julia 并发编程 ---- 如何使用 @async 和 @sync
根据官方文档(https://julia-doc.readthedocs.io/en/latest/manual/parallel-computing/)描述,@sync,@async将任意表达式包装到任务中,这意味着,对于属于其范围内的任何内容,Julia都将开始运行此任务,然后继续执行脚本中接下来的其他代码,而不是等待当前任务完成,再去执行接下来的代码。下面是一些代码样例没有使用宏:...翻译 2020-01-29 11:41:57 · 1709 阅读 · 0 评论