天天看點

李航-統計學習方法(第二版)對偶感覺機書上代碼

class Perception():

    def train(self,x, y, gram):
        learning_rate = 1
        a = [0 for i in range(len(x))]
        b = 0
        flag = True
        while flag :
            flag = False
            for i in range(0,len(x)):
                z = 0
                for j in range(0, len(a)):
                    z = z + learning_rate * a[j]*y[j]*gram[j][i]
                z = z + b
                if z*y[i] <= 0:
                    a[i] = a[i] + 1
                    b = b + learning_rate * y[i]
                    flag = True
            print(a,b)
        res = [0,0]
        for i in range(len(res)):
            for j in range(len(a)):
                res[i] = res[i] + a[j]*x[j][i]*y[j]
        print(res, b)

test = Perception()
x = [[3,3],[4,3],[1,1]]
y = [1,1,-1]
gram = []
for i in range(0,3):
    temp = []
    for j in range(0,3):
        sum = 0
        for k in range(0,len(x[i])):
            sum = sum +  x[i][0]*x[j][0]
        temp.append(sum)
    gram.append(temp)
test.train(x,y,gram)


           

繼續閱讀