- 积分
- 56592
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2011-6-21
- 最后登录
- 1970-1-1

|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 MeteoInfo 于 2019-3-8 16:58 编辑
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])
|
|