test

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])                                            
<span style="font-family:Courier New;">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))) </span>

  #初始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))) 
阅读更多
想对作者说点什么? 我来说一句

MyDate

2008年03月25日 51KB 下载

电脑故障小解

2008年06月05日 61KB 下载

tesytesttestest

2011年01月20日 1.88MB 下载

Test Test Test Test

2011年04月18日 1.91MB 下载

Xenserver虚拟机迁移到VMwareESX

2017年09月07日 278KB 下载

test test test

2010年06月13日 1.1MB 下载

test .net控件

2009年02月10日 19.76MB 下载

sgpp.rar sgp test

2011年06月02日 32KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭