Skip to content

Commit 270a817

Browse files
committed
Colaboratory를 통해 생성됨
1 parent 66a367c commit 270a817

File tree

1 file changed

+120
-0
lines changed

1 file changed

+120
-0
lines changed

Diff for: 16. KNN Algorithm/KNN Algorithm.ipynb

+120
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
{
2+
"nbformat": 4,
3+
"nbformat_minor": 0,
4+
"metadata": {
5+
"colab": {
6+
"name": "KNN Algorithm",
7+
"provenance": [],
8+
"collapsed_sections": [],
9+
"include_colab_link": true
10+
},
11+
"kernelspec": {
12+
"name": "python3",
13+
"display_name": "Python 3"
14+
}
15+
},
16+
"cells": [
17+
{
18+
"cell_type": "markdown",
19+
"metadata": {
20+
"id": "view-in-github",
21+
"colab_type": "text"
22+
},
23+
"source": [
24+
"<a href=\"https://colab.research.google.com/github/ndb796/Python-Data-Analysis-and-Image-Processing-Tutorial/blob/master/16.%20KNN%20Algorithm/KNN%20Algorithm.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
25+
]
26+
},
27+
{
28+
"cell_type": "markdown",
29+
"metadata": {
30+
"id": "zd6X4p1HtmJo",
31+
"colab_type": "text"
32+
},
33+
"source": [
34+
"## KNN Algorithm\n",
35+
"[강의 노트](https://github.com/ndb796/Python-Data-Analysis-and-Image-Processing-Tutorial/blob/master/16.%20KNN%20Algorithm/Python%20%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EB%B6%84%EC%84%9D%EA%B3%BC%20%EC%9D%B4%EB%AF%B8%EC%A7%80%20%EC%B2%98%EB%A6%AC%20-%20KNN%20Algorithm.pdf)"
36+
]
37+
},
38+
{
39+
"cell_type": "markdown",
40+
"metadata": {
41+
"id": "3kbmRDiPv4P_",
42+
"colab_type": "text"
43+
},
44+
"source": [
45+
"K-Nearest Neighbor\n",
46+
"\n",
47+
"* KNN은 비지도학습(Unsupervised Learning)의 가장 간단한 예시입니다.\n",
48+
"* 다양한 레이블의 데이터 중에서, 자신과 가까운 데이터를 찾아 자신의 레이블을 결정하는 방식입니다."
49+
]
50+
},
51+
{
52+
"cell_type": "code",
53+
"metadata": {
54+
"id": "Kce7P2rKtmxe",
55+
"colab_type": "code",
56+
"colab": {
57+
"base_uri": "https://localhost:8080/",
58+
"height": 322
59+
},
60+
"outputId": "6b728ff5-3e93-4c5a-e280-73c549427272"
61+
},
62+
"source": [
63+
"import cv2\n",
64+
"import numpy as np\n",
65+
"from matplotlib import pyplot as plt\n",
66+
"\n",
67+
"# 각 데이터의 위치: 25 X 2 크기에 각각 0 ~ 100\n",
68+
"trainData = np.random.randint(0, 100, (25, 2)).astype(np.float32)\n",
69+
"# 각 데이터는 0 or 1\n",
70+
"response = np.random.randint(0, 2, (25, 1)).astype(np.float32)\n",
71+
"\n",
72+
"# 값이 0인 데이터를 각각 (x, y) 위치에 빨간색으로 칠합니다.\n",
73+
"red = trainData[response.ravel() == 0]\n",
74+
"plt.scatter(red[:, 0], red[:, 1], 80, 'r', '^')\n",
75+
"# 값이 1인 데이터를 각각 (x, y) 위치에 파란색으로 칠합니다.\n",
76+
"blue = trainData[response.ravel() == 1]\n",
77+
"plt.scatter(blue[:, 0], blue[:, 1], 80, 'b', 's')\n",
78+
"\n",
79+
"# (0 ~ 100, 0 ~ 100) 위치의 데이터를 하나 생성해 칠합니다.\n",
80+
"newcomer = np.random.randint(0, 100, (1, 2)).astype(np.float32)\n",
81+
"plt.scatter(newcomer[:, 0], newcomer[:, 1], 80, 'g', 'o')\n",
82+
"\n",
83+
"knn = cv2.ml.KNearest_create()\n",
84+
"knn.train(trainData, cv2.ml.ROW_SAMPLE, response)\n",
85+
"ret, results, neighbours, dist = knn.findNearest(newcomer, 3)\n",
86+
"\n",
87+
"# 가까운 3개를 찾고, 거리를 고려하여 자신을 정합니다.\n",
88+
"print(\"result : \", results)\n",
89+
"print(\"neighbours :\", neighbours)\n",
90+
"print(\"distance: \", dist)\n",
91+
"\n",
92+
"plt.show()"
93+
],
94+
"execution_count": 9,
95+
"outputs": [
96+
{
97+
"output_type": "stream",
98+
"text": [
99+
"result : [[1.]]\n",
100+
"neighbours : [[1. 0. 1.]]\n",
101+
"distance: [[ 25. 97. 148.]]\n"
102+
],
103+
"name": "stdout"
104+
},
105+
{
106+
"output_type": "display_data",
107+
"data": {
108+
"image/png": "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\nAAAASUVORK5CYII=\n",
109+
"text/plain": [
110+
"<Figure size 432x288 with 1 Axes>"
111+
]
112+
},
113+
"metadata": {
114+
"tags": []
115+
}
116+
}
117+
]
118+
}
119+
]
120+
}

0 commit comments

Comments
 (0)