机器学习实战——感知机学习算法(附代码实现)

机器学习实战——感知机学习算法(附代码实现)

感知机学习,是神经网络和支持向量机的基础,原理较为简单,这里不再叙述,原理可以参考李航的《统计学习方法》。

最近刚刚学习完感知机学习算法的原理,但没有找到代码实现,由于原理较为简单,就想着自己用代码来实现书中的例子,正好锻炼一下编程能力,下面附代码:

import numpy as np

def perceptron(x,y,r):
    """感知机学习算法原始形式,
    输入 数据集,分类标签,学习率r"""
    size = np.shape(x)
    w = np.zeros((1,size[1])) #初始化w
    b = 0 #初始化b
    i = 0 
    cnt = 0 
    index = True
    while index:
        result = y[i] * (np.inner(w,x[i]) + b) #分类结果值
        # np.inner(a,b)求数组a,b的内积
        if result > 0: #分类正确 计数器加1
            cnt += 1
        if (result <= 0): #分类错误,更新 w 和 b 的值
            w = w + r * y[i] * x[i]
            b = b + r * y[i]
        i += 1
        if i == size[0] and cnt == size[0]:
         #如果数据集全部分类正确 跳出循环
            index = False
        if i == size[0]:
         # 循环检查数据集分类结果,初始为零,重新检查
            i = 0
            cnt = 0
    return w,b

由书中的例子简单拓展了一下测试结果如下:

dataSet = np.array([[3,3,3],[4,3,3],[1,1,1]])
y = [1,1,-1]

w,b = perceptron(dataSet,y,0.8)
print(w,b)

结果

[[0.8 0.8 0.8]] -4.0

你可能感兴趣的:(机器学习)