**
开源机器学习: 感知机
**
要想自己学习机器学习,3本“圣经”是一定要看的(花书,西瓜书,和统计学习方法),但不是刚入门就要看的,首先啊,我们必须学好学校教的c语言,对编程有一个初步的了解,其次,我们都知道python的厉害,可以干很多事,也很出名,这就出现了人人都知道py,但不是人人都懂py的现象。确实要想搞机器学习,你最好学习py,但不是让你直接钻入py里,这样不仅仅没有学到机器学习,反而会卒于py,这不是我们训练营的目的。在这么宝贵的寒假里,你们可以:
1.学习python时你仅仅需要掌握基础语法即可。之后的库以及包与高级运用可以在实战中学习即可。
2.学习学习机器学习的基本概念了,了解什么是分类,学习率。。。(这部分概念介绍在b站上有很多,有详细的介绍,肯定比我讲的好,感兴趣的可以找来看看)。
对于代码感兴趣的同学可以看看别人实现的代码,如果要自己手写代码,你必须懂数据结构等等一些知识,不要以为不重要:在写KNN时,我不会数据结构,对二叉树的分类是我绞尽脑汁花了4天时间也没写出来。。。
正题:感知机
感知机是一个二分类的模型,就是对于空间(简单看成二维空间)中的每个点找一个直线y=wx+b把它们正确划分,这里我不讲数学公式,毕竟大家大部分是大一,直接将思路(可能讲完大家并不理解,但这仅仅是将你们引入门,刺激你们学习兴趣,对了,网上的资料很多,这也是为什么我不细讲的理由):
-
选取初值w0,b0,n(学习率)
-
在训练集中选取(xi,yi)
-
若yi(wxi+b)<=0
w=w+nyixi
b=b+nyi -
转至第二部直到没有错误分点
不用知道思路如何得到的(因为这涉及了很多数学上的概念和推导),你们只需要知道要这么做,你们可以自己写一个程序试一试,这也是《统计学习方法》中的例2.1
附上我写的代码
因为我之前学习方法有问题,没有学数据结构,所以代码写的有点屎,代码里有什么不懂的可以在开源社团里问我,我们一起进步!!!