import numpy as np
def loadData(): #加载数据
X=np.mat([[3,3],
[4,3],
[1,1]])
Y=[1,1,-1]
return X,Y
def Gram(X): #计算Gram矩阵
m,n=np.shape(X)
G=[None]*m
for i in range(m):
G[i]=[0]*m
for j in range(m):
G[i][j]=int(np.dot(X[i],X[j].T)) #G=[xi*xj]
return np.mat(G)
def perceptron_pair(G,X,Y): #感知机对偶算法
m, n = np.shape(X)
alpha=np.zeros(m) #初始化alpha,b
b=0
isfind=False
while not isfind:
for i in range(m):
s=0
for j in range(m):
s+=alpha[j]*Y[j]*G[j,i]
s+=b
if Y[i]*s<=0: #误分条件
alpha[i]+=1 #更新alpha,b
b+=Y[i]
print(alpha,b)