python机器学习之神经网络(一)


Posted in Python onDecember 20, 2017

python有专门的神经网络库,但为了加深印象,我自己在numpy库的基础上,自己编写了一个简单的神经网络程序,是基于Rosenblatt感知器的,这个感知器建立在一个线性神经元之上,神经元模型的求和节点计算作用于突触输入的线性组合,同时结合外部作用的偏置,对若干个突触的输入求和后进行调节。为了便于观察,这里的数据采用二维数据。

目标函数是训练结果的误差的平方和,由于目标函数是一个二次函数,只存在一个全局极小值,所以采用梯度下降法的策略寻找目标函数的最小值。

代码如下:

import numpy as np 
import pylab as pl 
b=1    #偏置 
a=0.3   #学习率 
x=np.array([[b,1,3],[b,2,3],[b,1,8],[b,2,15],[b,3,7],[b,4,29],[b,4,8],[b,4,20]]) #训练数据 
d=np.array([1,1,-1,-1,1,-1,1,-1])          #训练数据类别 
w=np.array([b,0,0])            #初始w 
def sgn(v):         
 if v>=0: 
  return 1 
 else: 
  return -1 
def comy(myw,myx): 
 return sgn(np.dot(myw.T,myx)) 
def neww(oldw,myd,myx,a): 
 return oldw+a*(myd-comy(oldw,myx))*myx 
 
for ii in range(5):        #迭代次数 
 i=0 
 for xn in x: 
  w=neww(w,d[i],xn,a) 
  i+=1 
 print w 
 
myx=x[:,1]         #绘制训练数据 
myy=x[:,2] 
pl.subplot(111) 
x_max=np.max(myx)+15 
x_min=np.min(myx)-5 
y_max=np.max(myy)+50 
y_min=np.min(myy)-5 
pl.xlabel(u"x") 
pl.xlim(x_min,x_max) 
pl.ylabel(u"y") 
pl.ylim(y_min,y_max) 
for i in range(0,len(d)): 
 if d[i]==1: 
  pl.plot(myx[i],myy[i],'r*') 
 else: 
  pl.plot(myx[i],myy[i],'ro') 
#绘制测试点 
test=np.array([b,9,19]) 
if comy(w,test)>0: 
 pl.plot(test[1],test[2],'b*') 
else: 
 pl.plot(test[1],test[2],'bo') 
test=np.array([b,9,64]) 
if comy(w,test)>0: 
 pl.plot(test[1],test[2],'b*') 
else: 
 pl.plot(test[1],test[2],'bo') 
test=np.array([b,9,16]) 
if comy(w,test)>0: 
 pl.plot(test[1],test[2],'b*') 
else: 
 pl.plot(test[1],test[2],'bo') 
test=np.array([b,9,60]) 
if comy(w,test)>0: 
 pl.plot(test[1],test[2],'b*') 
else: 
 pl.plot(test[1],test[2],'bo') 
#绘制分类线 
testx=np.array(range(0,20)) 
testy=testx*2+1.68 
pl.plot(testx,testy,'g--') 
pl.show()  
for xn in x: 
 print "%d %d => %d" %(xn[1],xn[2],comy(w,xn))

python机器学习之神经网络(一)

图中红色是训练数据,蓝色是测试数据,圆点代表类别-1.星点代表类别1。由图可知,对于线性可分的数据集,Rosenblatt感知器的分类效果还是不错的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的一些陷阱与技巧小结
Jul 10 Python
python实现简单爬虫功能的示例
Oct 24 Python
Python获取文件所在目录和文件名的方法
Jan 12 Python
Python 实现选择排序的算法步骤
Apr 22 Python
selenium获取当前页面的url、源码、title的方法
Jun 12 Python
python如何实现异步调用函数执行
Jul 08 Python
使用python画社交网络图实例代码
Jul 10 Python
Flask-WTF表单的使用方法
Jul 12 Python
python opencv鼠标事件实现画框圈定目标获取坐标信息
Apr 18 Python
python基础学习之生成器与文件系统知识总结
May 25 Python
Anaconda安装pytorch及配置PyCharm 2021环境
Jun 04 Python
Python OpenCV 彩色与灰度图像的转换实现
Jun 05 Python
使用python实现ANN
Dec 20 #Python
python 计算数组中每个数字出现多少次--“Bucket”桶的思想
Dec 19 #Python
浅谈Python实现贪心算法与活动安排问题
Dec 19 #Python
Python实现感知器模型、两层神经网络
Dec 19 #Python
python实现感知器
Dec 19 #Python
python绘制简单折线图代码示例
Dec 19 #Python
matplotlib设置legend图例代码示例
Dec 19 #Python
You might like
php代码书写习惯优化小结
2013/06/20 PHP
轻松掌握php设计模式之访问者模式
2016/09/23 PHP
PHP5.6.8连接SQL Server 2008 R2数据库常用技巧分析总结
2019/05/06 PHP
CL vs ForZe BO5 第一场 2.13
2021/03/10 DOTA
Jquery 扩展方法
2010/05/06 Javascript
jquery弹出关闭遮罩层实例
2013/08/06 Javascript
原始XMLHttpRequest方法详情回顾
2013/11/28 Javascript
RequireJS使用注意细节
2016/05/15 Javascript
AngularJS 中文API参考手册
2016/07/28 Javascript
jQuery简单实现页面元素置顶时悬浮效果示例
2016/08/01 Javascript
Bootstrap模态框水平垂直居中与增加拖拽功能
2016/11/09 Javascript
vue如何引用其他组件(css和js)
2017/04/13 Javascript
详解Angular2中Input和Output用法及示例
2017/05/21 Javascript
微信小程序 循环及嵌套循环的使用总结
2017/09/26 Javascript
代码详解javascript模块加载器
2018/03/04 Javascript
微信小程序wepy框架笔记小结
2018/08/08 Javascript
node 解析图片二维码的内容代码实例
2019/09/11 Javascript
Python中正则表达式的详细教程
2015/04/30 Python
Python使用正则表达式实现文本替换的方法
2017/04/18 Python
解决Matplotlib图表不能在Pycharm中显示的问题
2018/05/24 Python
Python实现决策树C4.5算法的示例
2018/05/30 Python
Python函数参数操作详解
2018/08/03 Python
对Python通过pypyodbc访问Access数据库的方法详解
2018/10/27 Python
详解Python3中ceil()函数用法
2019/02/19 Python
使用python 的matplotlib 画轨道实例
2020/01/19 Python
Python Websocket服务端通信的使用示例
2020/02/25 Python
Django ORM实现按天获取数据去重求和例子
2020/05/18 Python
Python爬取微信小程序Charles实现过程图解
2020/09/29 Python
Python实现自动整理文件的脚本
2020/12/17 Python
小学开学寄语
2014/01/19 职场文书
安全大检查实施方案
2014/02/22 职场文书
大学生职业生涯规划书
2014/03/14 职场文书
2014年女职工工作总结
2014/11/27 职场文书
关于PHP数组迭代器的使用方法实例
2021/11/17 PHP
苹果发布了MagSafe固件更新,可以不外接电源实现最高7.5W充电
2022/04/21 数码科技
国际最新研究在陨石中发现DNA主要成分 或由陨石带来地球
2022/04/29 数码科技