机器学习算法之自适应线性感知器算法

自适应线性感知器算法

原理推导

这里写图片描述

python实现

import numpy as np
import matplotlib.pyplot as plt

#随机生成x和y, n=100, m=2
x = np.random.randn(100, 2)
y = x.dot(np.array([[2], [1]])) + 1

#初始话权值w和偏置b
w = np.zeros(x.shape[1]).reshape((x.shape[1], 1))#
b = 0

#设定超参
epoches = 100
alpha = 0.1

#误差追踪
error = []

#开始迭代
for e in range(epoches):
    y_hat = np.dot(x, w) + b   #计算y_hat
    err = y_hat - y
    error += [err.sum() ** 2 / (2 * len(x))]#计算损失函数
    delta_w = x.T.dot(err) / (len(x))  #计算w偏导
    delta_b = sum(err) / len(x)  #计算b的偏导
    #更新w和b
    w -= delta_w * alpha
    b -= delta_b * alpha
print(w)
print(b)
plt.plot(error)
plt.show()

运行结果

w和b,可以看出与真实值基本一致

这里写图片描述

误差追踪,误差不断下降

这里写图片描述

总结

在算偏导的时候一定不要忘了除以样本数,在处理数据x时尽量把值域控制的小一点,从而控制delta_w和delta_b的值,以免过大影响学习。

猜你喜欢

转载自blog.csdn.net/qq_35327651/article/details/79898579