# 感知机对偶形式算法实现python
本文的相关推导过程和算法参考的是_统计学习方法_
代码如下
import numpy as np
class PERCEPTRON:
'''
To peerceptron
'''
def __init__(self):
'''
init attribution
a: a vector number is instances of misclassification
b: a number
GRAM: Gram matrix
'''
self.a =None
self.b = 0
self.GARM =None
self.rate = 1
def train(self,x_train,y_train):
'''
iteration
:param x_train:sample
:param y_train:label
:return:None
'''
self.a = np.zeros(x_train.shape[0])
self.GARM = np.matmul(x_train,np.transpose(x_train))
i = 0
while i < x_train.shape[0]:
X = x_train[i]
Y = y_train[i]
pY = 0
for j in range(x_train.shape[0]):
pY+= self.a[j]*y_train[j]*self.GARM[i,j]
pY+=self.b
pY *= Y
if pY <=0:
self.a[i] =self.a[i] +self.rate
self.b = self.b+Y
i = 0
else:
i+=1
def main():
x_train = np.array([[3,3],[4,3],[1,1]])
y_train= np.array([1,1,-1])
MYPERCEPTRON = PERCEPTRON()
MYPERCEPTRON.train(x_train,y_train)
print(MYPERCEPTRON.a)
print(MYPERCEPTRON.b)
# ok
main()