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

 更新时间:2021年10月11日 11:03:32   作者:Jeffrey_Cui  
这篇文章主要为大家详细介绍了python机器学习之神经网络第一篇,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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)) 

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

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

相关文章

  • python2与python3共存问题的解决方法

    python2与python3共存问题的解决方法

    这篇文章主要为大家详细介绍了python2与python3共存问题的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • Python 定义分数类实现其基本运算(示例代码)

    Python 定义分数类实现其基本运算(示例代码)

    这篇文章主要介绍了Python 定义分数类实现其基本运算,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • Python集成开发环境Pycharm的使用及技巧

    Python集成开发环境Pycharm的使用及技巧

    本文详细讲解了Python集成开发环境Pycharm的使用及技巧,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • Python深度优先算法生成迷宫

    Python深度优先算法生成迷宫

    这篇文章主要为大家详细介绍了Python深度优先算法生成迷宫,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • python中end=" "的含义及说明

    python中end=" "的含义及说明

    这篇文章主要介绍了python中end=" "的含义及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • Python实现的堆排序算法原理与用法实例分析

    Python实现的堆排序算法原理与用法实例分析

    这篇文章主要介绍了Python实现的堆排序算法,简单描述了堆排序的原理,并结合实例形式分析了Python实现堆排序的相关操作技巧,代码中备有较为详细的注释便于理解,需要的朋友可以参考下
    2017-11-11
  • Python+OpenCV实现分水岭分割算法的示例代码

    Python+OpenCV实现分水岭分割算法的示例代码

    分水岭算法是用于分割的经典算法,在提取图像中粘连或重叠的对象时特别有用。本文将用Python+OpenCV实现这一算法,需要的可以参考一下
    2022-08-08
  • python安装模块如何通过setup.py安装(超简单)

    python安装模块如何通过setup.py安装(超简单)

    这篇文章主要介绍了python安装模块如何通过setup.py安装,安装方法其实很简单,感兴趣的朋友跟随脚本之家小编一起看看吧
    2018-05-05
  • 教你用python提取txt文件中的特定信息并写入Excel

    教你用python提取txt文件中的特定信息并写入Excel

    这篇文章主要给大家介绍了如何利用python提取txt文件中的特定信息并写入Excel的相关资料,Python是一个强大的语言,解决这点问题非常简单,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2021-11-11
  • Python语法学习之线程的创建与常用方法详解

    Python语法学习之线程的创建与常用方法详解

    本文主要介绍了线程的使用,线程是利用进程的资源来执行业务,并且通过创建多个线程,对于资源的消耗相对来说会比较低,今天就来看一看线程的使用方法具体有哪些吧
    2022-04-04

最新评论