PLA(Percetron Learning Algorithm):感知学习算法,主要用于解决二维或者高维的线性可分问题,最终将问题分为两类:Yes or No。所谓线性可分就是可以找到一条直线或者一个k-1维超平面将一堆二维或K维数据中两个不同类别数据完美区分。
PLA算法是“错误驱动”的,当我们在训练这个算法的时候,只要输出值是正确的,这个算法就不会进行任何数据的调整,反之,当输出与实际值异号,这个算法就会自动调整参数的比重。算法大致流程如下图所示:
下面给出两种简单的实现方法,一种是Naive PLA,另一种为Pocket PLA。Naive PLA主要是针对数据是完全线性可分的,没有任何噪音干扰,它只要找到一个符合条件的解就会结束循环。
def naive_pla():
w = np.ones(4)
count = 0
dataset=[[1,0.10723,0.64385, 0.29556 ,1],
[1 ,0.2418, 0.83075, 0.42741, 1],
[1 ,0.23321 ,0.81004 ,