梯度下降法(固定增量法、感知器算法)

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    

猜你喜欢

转载自blog.csdn.net/aaalswaaa1/article/details/82016104