数学之路(3)-机器学习(3)-机器学习算法-神经网络[9]

神经网络线性分类器

编写代码并将其线性分类过程封装成PYTHON的一个模块,调用代码如下:


#!/usr/bin/env python
#-*- coding: utf-8 -*-
#email:myhaspl@qq.com
#author:麦好
#2013-07-25
#线性神经网络分类
import mplannliner as nplann                         
traindata1=[[[9,25],-1],[[5,8],-1],[[15,31],-1],[[35,62],-1],[[19,40],-1],[[28,65],1],[[20,59],1],[[9,41],1],[[12,60],1],[[2,37],1]]
myann=nplann.Mplannliner()
#样本初始化
myann.samples_init(traindata1)
#学习率初始化
myann.a_init(0.1)
#搜索时间常数初始化
myann.r_init(50)
#最大训练次数
myann.maxtry_init(500)
#期望最小误差
myann.e_init(0.05)
#训练
myann.train()
#仿真,测试,对未知样本分类
myc=myann.simulate([35,68])
print "[35,68]"
if myc=="+":
    print u"正类"
else:
    print u"负类"

#将测试点在最终效果图上显示出来,将它加入drawponint集,测试点表现为"*",并且色彩由其最终的分类结果而决定
myann.drawponint_add([35,68])


myc=myann.simulate([35,82])
print "[35,82]"
if myc=="+":
    print u"正类"
else:
    print u"负类"
myann.drawponint_add([35,82])    
myann.draw2d()


#下面直接使用默认参数进行训练
traindata2=[[[9,25,30],-1],[[5,8,12],-1],[[15,31,49],-1],[[35,62,108],-1],[[19,40,60],-1],[[28,65,98],1],[[20,59,72],1],[[9,41,38],1],[[12,60,46],1],[[2,37,18],1]]
myann2=nplann.Mplannliner()
myann2.samples_init(traindata2)
myann2.train()
myc=myann2.simulate([35,68,110])
print "[35,68,110]"
if myc=="+":
    print u"正类"
else:
    print u"负类"


训练分类结果为:

...................

第179次调整中。。。误差:3.464102
第180次调整中。。。误差:2.828427
第181次调整中。。。误差:2.828427
第182次调整中。。。误差:3.464102
第183次调整中。。。误差:2.828427
第184次调整中。。。误差:0.000000
麦好   myhaspl@qq.com
http://blog.csdn.net/u010255642
[35,68]
负类
[35,82]
正类

...................

第10次调整中。。。误差:4.000000
第11次调整中。。。误差:4.898979
第12次调整中。。。误差:4.000000
第13次调整中。。。误差:4.000000
第14次调整中。。。误差:4.000000
第15次调整中。。。误差:4.000000
第16次调整中。。。误差:4.472136
第17次调整中。。。误差:2.828427
第18次调整中。。。误差:4.000000
第19次调整中。。。误差:4.000000
第20次调整中。。。误差:4.000000
第21次调整中。。。误差:4.000000
第22次调整中。。。误差:4.000000
第23次调整中。。。误差:4.472136
第24次调整中。。。误差:3.464102
第25次调整中。。。误差:4.000000
第26次调整中。。。误差:4.000000
第27次调整中。。。误差:4.000000
第28次调整中。。。误差:4.000000
第29次调整中。。。误差:4.000000
第30次调整中。。。误差:4.000000
第31次调整中。。。误差:3.464102
第32次调整中。。。误差:0.000000
麦好   myhaspl@qq.com
http://blog.csdn.net/u010255642
[35,68,110]
负类

效果图为:

模块要求安装numpy和matplotlib

windows下的下载地址为:

https://pypi.python.org/pypi/numpy/

http://matplotlib.org/downloads.html


线性模块库在csdn资源中下载:

http://download.csdn.net/detail/u010255642/5816519

原文地址:https://www.cnblogs.com/aukle/p/3217659.html