경기도미래기술학교 AI개발자 부트캠프 35일차 TIL- KNN 알고리즘 그려보기.
2023. 6. 28. 09:36ㆍpython
반응형
import numpy as np
import matplotlib.pyplot as plt
def euclidean_distance(x1, y1, x2, y2):
result = (((y1-x1)**2) + ((y2-x2)**2)) ** 0.5
return result
n_classes = 4
n_data = 100
X, y = [], []
for class_idx in range(n_classes):
centroid = np.random.uniform(low=-10, high=10, size=(2,))
X_ = np.random.normal(loc=centroid, scale=2, size=(n_data, 2))
y_ = class_idx * np.ones(n_data,)
X.append(X_)
y.append(y_)
X, y = np.vstack(X), np.concatenate(y)
print(X.shape, y.shape)
random_spot = np.random.uniform(low=-5, high=8, size=(2,))
test_list = np.empty(0)
for i in range(400):
stack = euclidean_distance(X[i][0], random_spot[0], X[i][1], random_spot[1])
test_list = np.append(test_list, stack)
sorted_indices = np.argsort(test_list)
sorted_test_list = test_list[sorted_indices]
k = 3
k_nearest_values = sorted_test_list[:k]
k_nearest_labels = y[sorted_indices[:k]]
n_classes = 4
# Scatter plot 그리기
colors = ['red', 'blue', 'green', 'yellow']
plt.scatter(X[:, 0], X[:, 1], c=y)
plt.scatter(random_spot[0], random_spot[1], c='black', marker='+', label='Random Spot', s=50)
plt.scatter(X[sorted_indices[:k], 0], X[sorted_indices[:k], 1], c='orange', marker='o', label='K Nearest')
plt.title('KNN')
plt.legend()
# 중심선 그리기
# plt.plot([random_spot[0], X[sorted_indices[0], 0]], [random_spot[1], X[sorted_indices[0], 1]], 'k--', label='Center Line')
# K Nearest에 화살표 선 그리기
for i in range(k):
plt.arrow(random_spot[0], random_spot[1], X[sorted_indices[i], 0] - random_spot[0], X[sorted_indices[i], 1] - random_spot[1],
length_includes_head=True, head_width=0.5, color='magenta')
plt.show()
KNN 알고리즘 배운 대로 화살표 점을 그려봤다.
색칠하는 것은 오늘 뇌가 과부하라 다음에 하기로 했다. 바이바이
728x90
'python' 카테고리의 다른 글
경기도미래기술학교 AI개발자 부트캠프 36일차 TIL- KNN 알고리즘 디시전 바운더리까지. (0) | 2023.06.29 |
---|---|
데이터 전처리(레이블 인코딩, 원핫 인코딩)와 스케일링(일반적으로 표준화, 정규화) (0) | 2023.06.28 |
axis에 대해서. 1,2,3차원 (0) | 2023.06.27 |
경기도미래기술학교 AI개발자 부트캠프 33일차 TIL- 혼자서 예측 프로그램 만들어보기. (0) | 2023.06.26 |
머신러닝 용어, 기본 개념. 학습데이터? 테스트 데이터? 머신러닝 계의 Hello World인 붓꽃(load_iris) 연습하기. (0) | 2023.06.25 |