简介
参考李航老师出版的《统计学习方法》,用python实现感知机学习的算法
感知机算法
这里贴书中介绍的算法原始形式:
具体的推导和逻辑理解可以查看书籍或者网上的其它博客。
感知机算法代码实现
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
def PLA_train(dataSet,plot = False):
numLines = dataSet.shape[0]
numFeatures = dataSet.shape[1]
#模型初始化
w = np.ones((1, numFeatures-1))
b = 0.1
k = 1
i = 0
#用梯度下降方法,逐渐调整w和b的值
while i<numLines:
if dataSet[i][-1] * (np.sum(w * dataSet[i,0:-1],)+ b) <0: #y[i](w*x[i]+b)<0
w = w + k*dataSet[i][-1] * dataSet[i,0:-1] #w = w + k*y[i]
b = b + k*dataSet[i][-1] # b = b + k*y[i]
i =0
else:
i +=1
return w, b
为了测试该算法,这里简单模拟生成数据进行测试。假设生成的数据都是线性可分的,那么只需要在坐标轴上随机生成大量的数据点,在用一条标准线进行分类。然后用这些分类的数据进行训练,查看训练出的模型与标准线的差距。
模拟生成已分类数据
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as