我们也可以尝试用多层感知器网络对一组数据建立模型,在输入与输出数据之间建立非线性关系,用神经网络拟合输出数据,训练好后,输入其它值,能得到一个较精确的仿真输出数据
下面是钢包使用次数与容积实测数据
钢包使用次数与容积实测数据
使用次数x 容积y  
2 106.42  
3 108.2  
4 109.58  
5 109.5  
7 110  
8 109.93  
10 110.49  
11 110.59  
14 110.6  
15 110.9  
16 110.7  
18 111  
19 111.2  

本博客所有内容是原创,如果转载请注明来源

http://blog.csdn.net/u010255642

部分python代码如下:
#!/usr/bin/env python
#-*- coding: utf-8 -*-
#bp ann
import numpy as np
import matplotlib.pyplot as plt
import random
import copyisdebug=False#x和d样本初始化
#x和d样本初始化
train_x =[]
d=[]
f = open("cubage.csv")
try:  f_text = f.read( )
finally:  f.close( )
x_text=f_text.split('\n')
for line_i in xrange(0,len(x_text)):line=x_text[line_i]if line_i>1 and len(line)>0:train_x.append([])hdata=line.split(',')train_x[line_i-2].append(float(hdata[0]))d.append([float(hdata[1])])myinput=np.array(train_x)
mytarget=np.array(d)
mymax=np.max(d)
tz=(0.1**(len(str(int(mymax)))))*5
myinput=tz*myinput
mytarget=tz*mytarget
train_x=myinput
d=mytarget
......................
def simulate(myx,sigmoid_func,delta_sigfun):'''一个样本的仿真计算'''print u"仿真计算中"        global ann_yiglobal ann_wglobal ann_wj0global ann_y0global hidelevel_countglobal alllevel_countglobal dglobal mylnwwmyd=d[0]myx=np.array(myx)n=len(myx)#清空yi输出信号数组        hidelevel=hidelevel_countalllevel=alllevel_countfor i in xrange(0,alllevel):#第一维是层数,从0开始for j in xrange(0,n):#第二维是神经元ann_yi[i][j]=0.0ann_yi=np.array(ann_yi)yi=ann_yi#前向计算myy=np.array([])for nowlevel in xrange(0,alllevel):#一层层向前计算#计算诱导局部域my_y=[]myy=yi[nowlevel-1]myw=ann_w[nowlevel-1]                if nowlevel==0:#第一层隐藏层my_y=myxyi[nowlevel]=my_y                        elif nowlevel==(alllevel-1):#线性输出层my_y=o_func(yi[nowlevel-1,:len(myd)])yi[nowlevel,:len(myd)]=my_y                       elif nowlevel==(hidelevel-1):#最后一层隐藏输出层for i in xrange(0,len(myd)):temp_y=sigmoid_func(np.dot(myw[:,i],myy))my_y.append(temp_y)                        yi[nowlevel,:len(myd)]=my_y else:#中间隐藏层#中间隐藏层需要加上偏置for i in xrange(0,len(myy)):temp_y=sigmoid_func(np.dot(myw[:,i],myy))my_y.append(temp_y)yi[nowlevel]=my_yif isdebug:print "============="print u"***权值矩阵***"  print ann_wprint u"***输出矩阵***" print yiprint "============="return yi[alllevel-1,:len(myd)]train()delta_sigfun=ann_delta_atanh
sigmoid_func=ann_atanhsimd=[]
for xn in xrange(0,len(x)):mysimout=simulate(x[xn],sigmoid_func,delta_sigfun)simd.append(mysimout[0])temp_x=[]
temp_d=[]
i=0
for mysamp in train_x:temp_x.append(mysamp[0])temp_d.append(d[i][0])i+=1simd=np.array(simd)
simd/=tz
temp_x=np.array(temp_x)
temp_x/=tz
temp_d=np.array(temp_d)
temp_d/=tz
temp_y=simdx_max=max(temp_x)
x_min=min(temp_x)
y_max=max(temp_y)
y_min=min(temp_y)plt.subplot(211)
plt.xlabel(u"x")
plt.xlim(x_min, x_max)
plt.ylabel(u"y")
plt.ylim(y_min, y_max)
plt.title(u"http://blog.csdn.net/myhaspl" )
lp_x1 = temp_x
lp_x2 = temp_y
lp_d = temp_d
plt.plot(lp_x1, lp_x2, 'r-')
plt.plot(lp_x1,lp_d,'b*')errx_max=len(err)
errx_min=1
erry_max=max(err)+0.1
erry_min=0.
plt.subplot(212)
plt.xlabel(u"traincount")
plt.xlim(errx_min, errx_max)
plt.ylabel(u"mse")
plt.ylim(erry_min, erry_max)lp_x1 = xrange(1,len(err)+1)
lp_x2 = err
plt.plot(lp_x1,lp_x2,'g-')
plt.show()

拟合的效果如下:

从效果图上可以看出,通过多层感知器建立的数据模型虽然不能直接得出输入与输出之间的确切函数y=f(x),但通过输入数据进入已经训练好的神经网络,仿真输出仍能达到相同的效果

数学之路(3)-机器学习(3)-机器学习算法-神经网络[19]相关推荐

  1. 我爱机器学习网机器学习类别文章汇总

    机器学习领域的几种主要学习方式 From Stumps to Trees to Forests KDD-2014 – The Biggest, Best, and Booming Data Scien ...

  2. [Python从零到壹] 十四.机器学习之分类算法五万字总结全网首发(决策树、KNN、SVM、分类对比实验)

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  3. 如何学习机器学习、看待算法竞赛?粉丝精选留言

    在前几日的赠书活动中,看到大家的积极留言,非常用心,可以看出对机器学习的热爱.经授权,CV君特意将一些52CV粉丝对学习机器学习.参与算法竞赛的看法.理解与经验放出来,与大家分享,值得收藏细品,希望他 ...

  4. 机器学习九大算法---支持向量机

    机器学习九大算法---支持向量机 出处:结构之法算法之道blog. 前言 动笔写这个支持向量机(support vector machine)是费了不少劲和困难的,原因很简单,一者这个东西本身就并不好 ...

  5. 信号与系统中的机器学习相关的算法的进展和理解(期末作业)

    机器学习是一门多学科交叉专业,涵盖概率论知识,统计学知识,近似理论知识和复杂算法知识,使用计算机作为工具并致力于真实实时的模拟人类学习方式, 并将现有内容进行知识结构划分来有效提高学习效率. 机器学习 ...

  6. python机器学习手写算法系列——线性回归

    本系列另一篇文章<决策树> https://blog.csdn.net/juwikuang/article/details/89333344 本文源代码: https://github.c ...

  7. 收藏 | 机器学习模型与算法最全分类汇总!

    题图 | AltumCode 机器学习模型与算法包括线性回归.对数几率回归.LASSO回归.Ridge回归.LDA.k近邻.决策树.感知机.神经网络.支持向量机.AdaBoost.GBDT.XGBoo ...

  8. 一文图解机器学习的基本算法!

    来源:软件定义世界 本文长度为2877字,建议阅读6分钟 本文为你分析如何选择机器学习的各种方法. 每当提到机器学习,大家总是被其中的各种各样的算法和方法搞晕,觉得无从下手.确实,机器学习的各种套路确 ...

  9. 【机器学习】机器学习的经典算法

    [机器学习]机器学习的经典算法 https://www.cnblogs.com/DicksonJYL/p/9517025.html 本文为整篇文章第二部分,整篇文章主要目录如下: 1:一个故事说明什么 ...

最新文章

  1. 为什么很多网站的验证码都设置得肉眼都很难识别?
  2. BestCoder 1st Anniversary ($) 1002.Hidden String
  3. RedHat使用163源
  4. R语言使用pROC包绘制ROC曲线并使用smooth函数绘制平滑的ROC曲线(方法包括:binormal、density、fitdistr、logcondens、logcondens.smooth)
  5. 闲得蛋疼在linux下装鸟个svn
  6. springboot配置国际化资源文件 使用themself模板进行解析
  7. Windows下Mex程序的调试
  8. 数字图像的加载、显示和输出
  9. [算法 笔记]堆排序(续)
  10. 笔记 | 《机器学习》中特征选择与稀疏学习
  11. SLAM GMapping(6)扫描匹配器
  12. 在Python中使用MongoDB
  13. 最全HTML与CSS基础总结,不进来看看吗?
  14. shell_study
  15. 怎么把程序内部坐标转为屏幕坐标,如何将工作空间坐标转换为屏幕坐标?
  16. ubuntu 12.04 修改 grub 启动参数
  17. 非线性控制1.0——自适应控制和鲁棒控制
  18. 解决xftp6 要继续使用此程序,您必须应用最新的更新或使用新版本
  19. autojs获取手机背景图片,抓取壁纸
  20. [恒指赵鑫] 为什么恒指是2019年最火最受欢迎的交易品种?

热门文章

  1. Flutter 制作一个具有酷炫液体滑动效果的酷炫入门页面
  2. macd java 源代码_MACD交易系统原理、用法及源代码
  3. 一位 CEO 在战略沟通会上的员工问答实录
  4. 神策数据斩获三殊荣,美通社小饭桌正和岛齐认可
  5. 参会全攻略 | 倒计时 7 天!30+ 位重量级嘉宾“聊”什么?
  6. 2017 数据驱动大会赠票赠书名单出啦!
  7. 睡还是被睡,这是一个问题!
  8. DVWA系列之17 CSRF攻击介绍与实施
  9. 谷歌的网页排序算法(PageRank Algorithm)
  10. Web UI 制作规范