手写一个机器学习的入门算法-感知器算法
2016-08-21 16:56
309 查看
用4x+5y=2000作为分界线制造了100个点;
初始分界线为0,0;
经过1000轮纠正后,结果是:
22x+31y=11876
对比结果4x+5y=2000
还是比较接近的。
刚开始更新w的那行代码搞错了,以为是用predict去纠正,其实应该用sample的真实值去纠正。
importrandom;
deffind_split(points):
w=(0,0,0)
for_inrange(1,2000):
print'w='+str(w);
forptinpoints:
(x1,x2,z)=pt;
(w1,w2,w3)=w;
predict=int((w1+w2*x1+w3*x2)>0)*2-1
ifpredict!=z:
print'wrong:'+str(pt)
w=(w1+z,w2+z*x1,w3+z*x2);
#break;
else:
print'right:'+str(pt)
returnw;
deftest_split(points,w):
points_2=filter(lambdapt:((int(w[0]+w[1]*pt[0]+w[2]*pt[1])>=0)*2-1)==pt[2],points)
returnpoints_2;
definit_points(max_x,max_y,num_of_pts):
points=[];
foriinrange(1,num_of_pts,1):
x=int(random.random()*max_x);
y=int(random.random()*max_y);
z=int((4*x+5*y)>=2000)*2-1
points.append((x,y,z));
returnpoints;
if__name__=='__main__':
points=init_points(400,500,100);
printpoints;
line=find_split(points);
print(line);
pts=test_split(points,line);
printpoints;
printlen(pts);
相关文章推荐
- 机器学习入门算法及其java实现-Kmeans(K均值)算法
- KNN--用于手写数字识别(机器学习入门笔记)
- 用MXnet入门实战深度学习之一:安装GPU版mxnet并跑一个MNIST手写数字识别
- 深入理解机器学习:从原理到算法 学习笔记-第1周 02简易入门
- 用MXnet入门实战深度学习之一:安装GPU版mxnet并跑一个MNIST手写数字识别
- Udacity机器学习入门笔记——自选算法 随机森林
- 基于机器学习多种方法的kaggle竞赛入门之手写数字的图像识别预测
- 机器学习入门算法及其java实现-朴素贝叶斯
- [算法]很特别的一个动态规划入门教程
- 用MXnet入门实战深度学习之一:安装GPU版mxnet并跑一个MNIST手写数字识别
- 只用getchar函数读入一个整数(算法竞赛入门经典 完整版)
- 机器学习——k-近邻算法(手写字识别)
- 机器学习(10.1)--手写数字识别的不同算法比较(1)--mnist数据集不同版本解析及平均灰度实践
- Python机器学习入门必需学会的top 10大算法决策树
- 用MXnet入门实战深度学习之一:安装GPU版mxnet并跑一个MNIST手写数字识别
- 机器学习实战(①)——KNN算法改进约会网站的配对效果和手写字识别系统
- 【机器学习】k-近邻算法应用之手写数字识别
- 机器学习笔记2-基于KNN算法的手写字识别程序
- 识别王者英雄 – 一个 PM 的机器学习入门之旅
- 用MXnet入门实战深度学习之一:安装GPU版mxnet并跑一个MNIST手写数字识别