博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
模式分类
阅读量:7000 次
发布时间:2019-06-27

本文共 1924 字,大约阅读时间需要 6 分钟。

《神经网络与机器学习》第三版,36页

 

实验代码:

# -*- coding: gb2312 -*-import pylab as plimport numpy as npimport random#产生数据,r为每个月亮的半径,w为月亮的高度#n为数目,d为圆心的垂直距离def productData(n,r,w,d=0):    Train_One=[]    Train_Two=[]      temp=0    while 1:        x=random.uniform(-1*r-w/2,r+w/2)        y=random.uniform(0,r+w/2)        if x**2+y**2>(r-w/2)**2 and x**2+y**2<(r+w/2)**2:            Train_One.append([x,y])            temp+=1        if temp==n:            break    temp=0    while 1:        x=random.uniform(-1*(w/2),2*r+w/2)        y=random.uniform(-1*d,-1*d-r-w/2)        if (x-r)**2+(y+d)**2>(r-w/2)**2 and (x-r)**2+(y+d)**2<(r+w/2)**2:            Train_Two.append([x,y])            temp+=1        if temp==n:            break       return Train_One,Train_Two#训练def Test(train_one,train_Two,k=1):    w=np.ones(3)    while 1:        isChange=0        for x1,x2 in train_one:            if w[0]*x1+w[1]*x2+w[2]>0:                pass            else:                isChange=1                w=w+[k*x1,k*x2,k*1]        for x1,x2 in train_Two:            if w[0]*x1+w[1]*x2+w[2]<0:                pass            else:                isChange=1                w=w-[k*x1,k*x2,k*1]        print(w)        #如果w没有改变,则退出        if isChange==0:            break                #显示出当前的分割线        x=[-1*r-w,2*r+w]        if w[2]!=0:            y=[(w[0]*x[0]+w[2])/(-1*w[1]),(w[0]*x[1]+w[2])/(-1*w[1])]        else:            y=[0,0]        pl.plot(x,y,'--',c='y')            return wif __name__=="__main__":    r=10    w=6    d=0.1    Train_One,Train_Two=productData(1000,r,w,d)    w2=Test(Train_One,Train_Two,k=0.01)    #显示最终结果    x=[-1*r-w,2*r+w]    y=[(w2[0]*x[0]+w2[2])/(-1*w2[1]),(w2[0]*x[1]+w2[2])/(-1*w2[1])]    pl.plot(x,y,c='r')    pl.scatter([x[0] for x in Train_One],[x[1] for x in Train_One],c='g')    pl.scatter([x[0] for x in Train_Two],[x[1] for x in Train_Two],c='b')    pl.show()

实验结果显示:

转载于:https://www.cnblogs.com/sklww/p/3667364.html

你可能感兴趣的文章
草稿--cgi
查看>>
同步,异步,阻塞,非阻塞
查看>>
文件缓存
查看>>
bash Shell 中如何实现条件判断之if判断
查看>>
linux守护进程解读
查看>>
Windows操作系统单文件夹下到底能存放多少文件及单文件的最大容量
查看>>
POJ2079:Triangle——题解
查看>>
关于UITableView 不能回调 tableView: cellForRowAtIndexPath的问题
查看>>
linux 批量创建用户获取8位随机密码
查看>>
WPF 单实例应用程序
查看>>
解决wordpress无法发送邮件的问题|配置好WP-Mail-SMTP的前提
查看>>
debian包之间的关系
查看>>
php生成随机数mt_rand和rand
查看>>
04.Linux Disk Partition & Mount Point
查看>>
ios系统的特点
查看>>
mac下配置java运行环境
查看>>
gsoap、c++。webservice的client。
查看>>
java中sleep()和wait()的区别
查看>>
[JAVA]UUID
查看>>
Win10优化
查看>>