我们一直都不知道这个模型是好还是坏,但是如果把它当做一个神经网络的一层,那就厉害了.首先从个人角度感性理解这个模型是什么?
感知机:有一组数据(X,Y),Y = {+1,-1},我们希望找到一个函数F(x),是得到所有的数据都能正确分类.
我们希望找到这样一个函数:F(x) = sign(WX+b).
使得所有的训练数据都能正确分类.找到一个loss(x)函数,最小化其损失,来更新W和b.
1. 默认(W,b) = ([0,0,…,0],0)
2. 对弈数据(X_i,Y_i),F(X_i) = W_t * X_i + b_t,
如果这是一个错误分类,会有Y_i * F(X_i) < 0. 此时更新:
+ W_t+1 = W_t + a * (Y_i * X_i)
+ b_t+1 = b_t + a * Y_i
3. a是学习率.
import perceptron
per = perceptron.Perceptron(verbose = 5)
X = [[1,0],[2,0],[2,1],[0,1],[0,2],[1,2],[1,3]]
y = [1,1,1,0,0,0,0]
X_vali = [[4,1],[1,5],[2,6]]
y_vali = [1,0,0]
per.fit(X,y)
per.source(X_vali,y_vali)
per.predict([[2,3],[5,1],[6,3]])
per.get_params()
注: 源码地址 https://github.com/xiaorancs/xr-learn