파 이 썬 으로 감지 기 알고리즘 을 어떻게 실현 하 는 지 상세 하 게 설명 하 다.
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)
파 이 썬 으로 감지 기 알고리즘 을 구현 하 는 방법 에 대한 자세 한 설명 은 여기까지 입 니 다.파 이 썬 감지 기 알고리즘 구현 에 관 한 더 많은 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.