线性分类器——点集样本分类
线性分类器个人理解
给定一群数据点,采用线性方式对其划分和归类,最基础的就是用一条直线将现有的数据点集按照一定的规则进行分类和划分。
一步一步来,我们先从简单的开始,先给出一条直线,然后依次给出点集中的点,每给一个点,就按照规则对点进行分类
从第一步简单开始
先看看效果:
随机生成直线,鼠标点击界面添加新点,加入的过程中,判断新加的点是在直线的左侧还是右侧,同时用不同的符合现实,如下:
好了,对上面的有了直观的认识后,让我们继续实现它!
-
界面设计
构造界面,参考之前的博文,代码如下: -
**构造直线,我们这里采用随机的方式构造直线 **
使用random随机命令生成直线,注意使用的时候,给出随即范围。
这里随机生成的W1.W2.W0,之间的关系如下:
这里看懂了,求出了W1.W2.W0其实就是求出了直线的方程,也就获得前面图中中间的绿线了。 -
添加 数据点集往里面添加点
就是后期要做归类的数据点,我们这里反过来做了从简单入手。这里顺带看一下在软件中添加点的过程:这里用到了一个SAMPLE格式的,看一下是什么样的
这一块基本就看懂了。 -
新添加的点,需要 按规则划分,看一下划分规则
首先讲一下:看下图,上学的时候讲的直线,只讲了直线的方程式,但是没有关注直线的方向,但是,敲黑板喽,直线是有方向的哦,而且人工智能中这一点一定要清楚哦,就像下图所示有什么意义呢?仔细看,直线的方向不一样,那么直线两侧的点的符号是不一样的哦,怎么来的呢?简单推敲一下哈:
简单说一下:虚线W是直线的法向量,看一下表达式二者内积为0,按照右手法则,手指指向W方向,逆时针旋转90°即为直线方向。结合这里例程,新加的点 ,在W一侧的即为+,反之为-。
到此,本次的例程就完了,代码随后附上。
后话
再来看一下图片:
1常规的是已知这些数据点,要寻找中间这条线,目前为们反过来了,从简单入门,那,对于给定的数据点集,我们应该怎么寻找这条直线呢?后面我们继续。