MeteoInfo的个人博客分享 http://blog.sciencenet.cn/u/MeteoInfo

博文

MeteoInfo机器学习工具箱:miml

已有 3354 次阅读 2019-3-8 15:39 |个人分类:MeteoInfo|系统分类:科研笔记

MeteoInfoLab的脚本语言是Jython,可以直接使用Java类库。机器学习目前Python(CPython)大行其道,不过Java语言的机器学习库也有不少,比如:Deeplearning4j, Weka, Encog等。Encog支持丰富的神经网络算法,内部具有并行运算功能,有Java和.Net两个版本。这里利用Java版的Encog库进行了简单的封装,提供了FeedforwardNetwork类来创建神经网络,添加网络层,设置训练方法、激活函数等参数,对已知数据进行训练,最后预测结果。

miml工具箱已经打包在MeteoInfo软件中(MeteoInfo -> toolbox -> miml目录),github上的代码仓库:https://github.com/Yaqiang/miml 。该工具箱的使用也很简单,这里用神经网络的一个最基本的XOR问题来说明。AND和OR都很容易理解,XOR是运算符两边不同时为真,可以表示如下:
1 AND 1 -> 1        1 OR 1 -> 1        1 XOR 1 -> 0
1 AND 0 -> 0        1 OR 0 -> 1        1 XOR 0 -> 1
0 AND 0 -> 0        0 OR 0 -> 0        0 XOR 0 -> 0

MeteoInfoLab脚本如下:

import miml

indata = array([[0,0],[1,0],[0,1],[1,1]])
ideal = array([0,1,1,0])
net = miml.FeedforwardNetwork(5, 'trainlm')
net.layers[0].set_activation('tanh')
net.train(indata, ideal, isprint=True)
print net.predict([0,0])
print net.predict([0,1])


先引入miml包(import miml),训练用的输入数据为:indata = array([[0,0],[1,0],[0,1],[1,1]]),真值:ideal = array([0,1,1,0])。然后构建神经网络(缺省为输入层,一个隐含层,输出层),隐含层的神经元数设为5,训练方法设为trainlm,将隐含层的激活函数设为tanh,然后进行训练。训练完成后就可以利用这个神经网络进行预测了。

运行结果如下(神经网络的特征决定了每次运行的结果都可能不一样)。输入为[0, 0]时,XOR的真值为0,这里的预测值为0.003811562449670306;输入为[0, 1]时,XOR的真值为1,这里的预测值为0.9890792015360702。

Epochs 1: Error=0.510
Epochs 2: Error=0.269
Epochs 3: Error=0.041
Epochs 4: Error=0.009
Epochs 5: Error=0.000
array([0.003811562449670306])
array([0.9890792015360702])



https://blog.sciencenet.cn/blog-611158-1166438.html

上一篇:用Maven管理MeteoInfo代码
下一篇:MeteoInfo论文发表
收藏 IP: 114.247.188.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-26 11:46

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部