import numpy as np # 数组运算工具
from fileUtil import FileUtil
from mathUtil import MathUtil
w1=[[0,0],[0,1]]
w3=[[1,0],[1,1]]
# 1.初始化数据
w1 = MathUtil.extend(w1)
w3 = MathUtil.extend(w3) #增广化并转为矩阵
w3 = MathUtil.SN(w3) #符号规范化
x = w1+w3
k = 1
rho = 1
w = np.mat([1, 1, 1])
w = np.transpose(w)
f = 1
# 2.计算判别函数值并调整
while f:
f = 0
for i in range(x.__len__()):
print(k)
k+=1
wt = np.transpose(w)
d = wt*x[i]
if d <= 0:
w = w+(x[i]*rho)
f = 1
import math
import numpy as np
class MathUtil:
# 计算欧式距离
@staticmethod
def ED(x,y):
sum = 0
for i in range(x.__len__()):
sum += (x[i]-y[i])**2
return math.sqrt(sum)
# 增广化并转为矩阵
@staticmethod
def extend(x):
for i in range(x.__len__()):
x[i].append(1)
x[i]=np.mat(x[i])
x[i]=np.transpose(x[i])
return x
# 符号规范化
@staticmethod
def SN(x):
for i in range(x.__len__()):
x[i]=x[i]*-1
return x