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 初始化多维数组代码
Sep 06 Python
python判断给定的字符串是否是有效日期的方法
May 13 Python
举例讲解Python编程中对线程锁的使用
Jul 12 Python
用Pygal绘制直方图代码示例
Dec 07 Python
微信跳一跳小游戏python脚本
Jan 05 Python
python通过百度地图API获取某地址的经纬度详解
Jan 28 Python
python绘制双Y轴折线图以及单Y轴双变量柱状图的实例
Jul 08 Python
tensorflow指定GPU与动态分配GPU memory设置
Feb 03 Python
在Sublime Editor中配置Python环境的详细教程
May 03 Python
利用Python发送邮件或发带附件的邮件
Nov 12 Python
详解Python爬虫爬取博客园问题列表所有的问题
Jan 18 Python
Python读取pdf表格写入excel的方法
Jan 22 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
新的一年,新的期待:DC在2020年的四部动画电影
2020/01/01 欧美动漫
再说下636单管机
2021/03/02 无线电
php不用内置函数对数组排序的两个算法代码
2010/02/08 PHP
PHP图片处理之使用imagecopyresampled函数裁剪图片例子
2014/11/19 PHP
ThinkPHP3.2框架使用addAll()批量插入数据的方法
2017/03/16 PHP
PHP封装的XML简单操作类完整实例
2017/11/13 PHP
JS异常处理的一个想法(sofish)
2013/03/14 Javascript
JS子父窗口互相操作取值赋值的方法介绍
2013/05/11 Javascript
javascript中实现兼容JAVA的hashCode算法代码分享
2020/08/11 Javascript
js实现密码强度检测【附示例】
2016/03/30 Javascript
纯js实现动态时间显示
2020/09/07 Javascript
vue中七牛插件使用的实例代码
2017/07/28 Javascript
解决layer弹层遮罩挡住窗体的问题
2018/08/17 Javascript
JS获取并处理php数组的方法实例分析
2018/09/04 Javascript
Vue中key的作用示例代码详解
2020/06/10 Javascript
three.js 如何制作魔方
2020/07/31 Javascript
12步教你理解Python装饰器
2016/02/25 Python
python3实现跳一跳点击跳跃
2018/01/08 Python
详解用TensorFlow实现逻辑回归算法
2018/05/02 Python
python3解析库lxml的安装与基本使用
2018/06/27 Python
python取余运算符知识点详解
2019/06/27 Python
python  logging日志打印过程解析
2019/10/22 Python
Django中的session用法详解
2020/03/09 Python
linux面试题参考答案(3)
2012/09/13 面试题
Linux文件系统类型
2012/02/15 面试题
求职简历自荐信
2013/10/20 职场文书
保护母亲河倡议书
2014/04/14 职场文书
出纳试用期自我鉴定范文
2014/09/16 职场文书
购房协议书范本(无房产证)
2014/10/07 职场文书
大学生党员个人剖析材料
2014/10/08 职场文书
销售经理工作失职检讨书
2014/10/24 职场文书
慰问信范文
2015/02/14 职场文书
python opencv常用图形绘制方法(线段、矩形、圆形、椭圆、文本)
2021/04/12 Python
Pytorch使用shuffle打乱数据的操作
2021/05/20 Python
Python数据可视化之绘制柱状图和条形图
2021/05/25 Python
python如何将mat文件转为png
2022/07/15 Python