파 이 썬 으로 감지 기 알고리즘 을 어떻게 실현 하 는 지 상세 하 게 설명 하 다.

제목
在这里插入图片描述
2.수학 구 해 과정
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
이 라운드 교체 분류 결 과 는 모두 정확 하 며,판별 함 수 는 g(x)=-2x1+1 이다.
3.감지 기 알고리즘 원리 와 절차
在这里插入图片描述
4.python 코드 구현 및 결과
(1)수학 구 해 과정 에서 알 수 있다.
在这里插入图片描述
(2)프로그램 실행 결과
在这里插入图片描述
(3)그림 결과
在这里插入图片描述

'''
20210610 Julyer    
'''
import numpy as np
import matplotlib.pyplot as plt

def get_zgxl(xn, a):
    '''
          
    :param x:   
    :param a: 1 -1
    :return:
    '''
    temp = []
    if a == 1:
        xn.append(1)
    if a == -1:
        for i in range(len(xn)):
            temp.append(xn[i]*(-1))
        temp.append(-1)
        xn = temp
    # print('xn:'+ str(np.array(x).reshape(-1, 1)))
    return np.array(xn).reshape(-1, 1)

def calculate_w(w, xn):
    '''
      xn    ,  w
    :param w:     --> wT:   
    :param xn:    
    :return:
    '''
    # wT = w.reshape(1, -1)  #          ,  w
    wT = w.T   #          ,   w
    wTx = np.dot(wT, xn).reshape(-1)  #         ,     1。
    #wTx = wT@xn  #         
    if wTx > 0:
        w_value = w
    else:
        w_value = np.add(w, xn)

    # print("w_update shape" + str(w_update.shape))
    #print("wTx:" + str(wTx))
    return w_value, wTx     # w_value    , wTx    


def fit_one(w1, x1, x2, x3, x4):
    '''
          ,      ,   w5。
    :param w1:    
    :param x1:
    :param x2:
    :param x3:
    :param x4:
    :return:   w5 wTx   。
    '''
    wTx_list = []
    update_w = w1

    for i in range(0, len(x_data)): #len      ,      w
        update_w, wTx = calculate_w(update_w, x_data[i])
        wTx_list.append(wTx)

    #print(wTx_list)
    return update_w, wTx_list

def draw_plot(class1, class2, update_w):
    plt.figure()

    x_coordinate = []
    y_coordinate = []
    for i in range(len(class1)):
        x_coordinate.append(class1[i][0])
        y_coordinate.append(class1[i][1])
    plt.scatter(x_coordinate, y_coordinate, color='orange', label='class1')

    x_coordinate = []
    y_coordinate = []
    for i in range(len(class2)):
        x_coordinate.append(class2[i][0])
        y_coordinate.append(class2[i][1])
    plt.scatter(x_coordinate, y_coordinate, color='green', label='class2')

    w_reshape = update_w.reshape(-1)
    #print

    x = np.linspace(0, 2, 5)
    if w_reshape[1] == 0:
        plt.axvline(x = (-1) * w_reshape[2]/w_reshape[0])
    else:
        plt.plot(x, (x*w_reshape[0]*(-1) + w_reshape[2]*(-1))/w_reshape[1])

    plt.title('result of perception')
    plt.xlabel('x1')
    plt.ylabel('x2')
    plt.legend()
    plt.show()

if __name__ == '__main__':
    x1 = [0, 0]
    x2 = [0, 1]
    x3 = [1, 0]
    x4 = [1, 1]
    class1 = [x1, x2]
    class2 = [x3, x4]

    x1 = get_zgxl(x1, 1)
    x2 = get_zgxl(x2, 1)
    x3 = get_zgxl(x3, -1)
    x4 = get_zgxl(x4, -1)
    x_data = [x1, x2, x3, x4]
    # print(x_data)

    w1 = np.zeros((3, 1))  #    w1    
    #print('w1:' + str(w1) + '
') update_w = w1 update_w, wTx_list = fit_one(update_w, x1, x2, x3, x4) count = 0 iter_number = 0 for wTx in wTx_list: if wTx > 0: count += 1 if count < 4: update_w, wTx_list = fit_one(update_w, x1, x2, x3, x4) iter_number += 1 else: break print(' :' + str(iter_number)) print(' w:'+'
' + str(update_w)) #print(wTx_list) draw_plot(class1, class2, update_w)
파 이 썬 으로 감지 기 알고리즘 을 구현 하 는 방법 에 대한 자세 한 설명 은 여기까지 입 니 다.파 이 썬 감지 기 알고리즘 구현 에 관 한 더 많은 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기