Skip to content

Commit cd3fe61

Browse files
authoredNov 26, 2022
Add files via upload
1 parent 3448ab8 commit cd3fe61

File tree

1 file changed

+798
-0
lines changed

1 file changed

+798
-0
lines changed
 

‎L11.1 KNN Practice.ipynb

+798
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,798 @@
1+
{
2+
"nbformat": 4,
3+
"nbformat_minor": 0,
4+
"metadata": {
5+
"colab": {
6+
"provenance": []
7+
},
8+
"kernelspec": {
9+
"name": "python3",
10+
"display_name": "Python 3"
11+
},
12+
"language_info": {
13+
"name": "python"
14+
}
15+
},
16+
"cells": [
17+
{
18+
"cell_type": "markdown",
19+
"source": [
20+
"# 수업시간 실습 부분"
21+
],
22+
"metadata": {
23+
"id": "GcyZcu_7nd6r"
24+
}
25+
},
26+
{
27+
"cell_type": "code",
28+
"execution_count": 1,
29+
"metadata": {
30+
"id": "h5xpSdMOdneS"
31+
},
32+
"outputs": [],
33+
"source": [
34+
"import pandas as pd"
35+
]
36+
},
37+
{
38+
"cell_type": "code",
39+
"source": [
40+
"import matplotlib.pyplot as plt\n",
41+
"import random\n",
42+
"from tqdm import tqdm"
43+
],
44+
"metadata": {
45+
"id": "-Vr5IlmZnO_J"
46+
},
47+
"execution_count": 3,
48+
"outputs": []
49+
},
50+
{
51+
"cell_type": "code",
52+
"source": [
53+
"data = []\n",
54+
"\n",
55+
"for line in open(\"iris.data\", \"r\"):\n",
56+
" raw = line.split(',')\n",
57+
" x = [float(r) for r in raw[:4]]\n",
58+
" y = raw[4].strip()\n",
59+
" data.append((x, y))\n"
60+
],
61+
"metadata": {
62+
"id": "MH49KXKVf738"
63+
},
64+
"execution_count": 4,
65+
"outputs": []
66+
},
67+
{
68+
"cell_type": "code",
69+
"source": [
70+
"data"
71+
],
72+
"metadata": {
73+
"colab": {
74+
"base_uri": "https://localhost:8080/"
75+
},
76+
"id": "r9Glx5QAgfcX",
77+
"outputId": "e79c21c4-acac-490f-f11a-ef9bc7abb463"
78+
},
79+
"execution_count": 5,
80+
"outputs": [
81+
{
82+
"output_type": "execute_result",
83+
"data": {
84+
"text/plain": [
85+
"[([5.1, 3.5, 1.4, 0.2], 'Iris-setosa'),\n",
86+
" ([4.9, 3.0, 1.4, 0.2], 'Iris-setosa'),\n",
87+
" ([4.7, 3.2, 1.3, 0.2], 'Iris-setosa'),\n",
88+
" ([4.6, 3.1, 1.5, 0.2], 'Iris-setosa'),\n",
89+
" ([5.0, 3.6, 1.4, 0.2], 'Iris-setosa'),\n",
90+
" ([5.4, 3.9, 1.7, 0.4], 'Iris-setosa'),\n",
91+
" ([4.6, 3.4, 1.4, 0.3], 'Iris-setosa'),\n",
92+
" ([5.0, 3.4, 1.5, 0.2], 'Iris-setosa'),\n",
93+
" ([4.4, 2.9, 1.4, 0.2], 'Iris-setosa'),\n",
94+
" ([4.9, 3.1, 1.5, 0.1], 'Iris-setosa'),\n",
95+
" ([5.4, 3.7, 1.5, 0.2], 'Iris-setosa'),\n",
96+
" ([4.8, 3.4, 1.6, 0.2], 'Iris-setosa'),\n",
97+
" ([4.8, 3.0, 1.4, 0.1], 'Iris-setosa'),\n",
98+
" ([4.3, 3.0, 1.1, 0.1], 'Iris-setosa'),\n",
99+
" ([5.8, 4.0, 1.2, 0.2], 'Iris-setosa'),\n",
100+
" ([5.7, 4.4, 1.5, 0.4], 'Iris-setosa'),\n",
101+
" ([5.4, 3.9, 1.3, 0.4], 'Iris-setosa'),\n",
102+
" ([5.1, 3.5, 1.4, 0.3], 'Iris-setosa'),\n",
103+
" ([5.7, 3.8, 1.7, 0.3], 'Iris-setosa'),\n",
104+
" ([5.1, 3.8, 1.5, 0.3], 'Iris-setosa'),\n",
105+
" ([5.4, 3.4, 1.7, 0.2], 'Iris-setosa'),\n",
106+
" ([5.1, 3.7, 1.5, 0.4], 'Iris-setosa'),\n",
107+
" ([4.6, 3.6, 1.0, 0.2], 'Iris-setosa'),\n",
108+
" ([5.1, 3.3, 1.7, 0.5], 'Iris-setosa'),\n",
109+
" ([4.8, 3.4, 1.9, 0.2], 'Iris-setosa'),\n",
110+
" ([5.0, 3.0, 1.6, 0.2], 'Iris-setosa'),\n",
111+
" ([5.0, 3.4, 1.6, 0.4], 'Iris-setosa'),\n",
112+
" ([5.2, 3.5, 1.5, 0.2], 'Iris-setosa'),\n",
113+
" ([5.2, 3.4, 1.4, 0.2], 'Iris-setosa'),\n",
114+
" ([4.7, 3.2, 1.6, 0.2], 'Iris-setosa'),\n",
115+
" ([4.8, 3.1, 1.6, 0.2], 'Iris-setosa'),\n",
116+
" ([5.4, 3.4, 1.5, 0.4], 'Iris-setosa'),\n",
117+
" ([5.2, 4.1, 1.5, 0.1], 'Iris-setosa'),\n",
118+
" ([5.5, 4.2, 1.4, 0.2], 'Iris-setosa'),\n",
119+
" ([4.9, 3.1, 1.5, 0.1], 'Iris-setosa'),\n",
120+
" ([5.0, 3.2, 1.2, 0.2], 'Iris-setosa'),\n",
121+
" ([5.5, 3.5, 1.3, 0.2], 'Iris-setosa'),\n",
122+
" ([4.9, 3.1, 1.5, 0.1], 'Iris-setosa'),\n",
123+
" ([4.4, 3.0, 1.3, 0.2], 'Iris-setosa'),\n",
124+
" ([5.1, 3.4, 1.5, 0.2], 'Iris-setosa'),\n",
125+
" ([5.0, 3.5, 1.3, 0.3], 'Iris-setosa'),\n",
126+
" ([4.5, 2.3, 1.3, 0.3], 'Iris-setosa'),\n",
127+
" ([4.4, 3.2, 1.3, 0.2], 'Iris-setosa'),\n",
128+
" ([5.0, 3.5, 1.6, 0.6], 'Iris-setosa'),\n",
129+
" ([5.1, 3.8, 1.9, 0.4], 'Iris-setosa'),\n",
130+
" ([4.8, 3.0, 1.4, 0.3], 'Iris-setosa'),\n",
131+
" ([5.1, 3.8, 1.6, 0.2], 'Iris-setosa'),\n",
132+
" ([4.6, 3.2, 1.4, 0.2], 'Iris-setosa'),\n",
133+
" ([5.3, 3.7, 1.5, 0.2], 'Iris-setosa'),\n",
134+
" ([5.0, 3.3, 1.4, 0.2], 'Iris-setosa'),\n",
135+
" ([7.0, 3.2, 4.7, 1.4], 'Iris-versicolor'),\n",
136+
" ([6.4, 3.2, 4.5, 1.5], 'Iris-versicolor'),\n",
137+
" ([6.9, 3.1, 4.9, 1.5], 'Iris-versicolor'),\n",
138+
" ([5.5, 2.3, 4.0, 1.3], 'Iris-versicolor'),\n",
139+
" ([6.5, 2.8, 4.6, 1.5], 'Iris-versicolor'),\n",
140+
" ([5.7, 2.8, 4.5, 1.3], 'Iris-versicolor'),\n",
141+
" ([6.3, 3.3, 4.7, 1.6], 'Iris-versicolor'),\n",
142+
" ([4.9, 2.4, 3.3, 1.0], 'Iris-versicolor'),\n",
143+
" ([6.6, 2.9, 4.6, 1.3], 'Iris-versicolor'),\n",
144+
" ([5.2, 2.7, 3.9, 1.4], 'Iris-versicolor'),\n",
145+
" ([5.0, 2.0, 3.5, 1.0], 'Iris-versicolor'),\n",
146+
" ([5.9, 3.0, 4.2, 1.5], 'Iris-versicolor'),\n",
147+
" ([6.0, 2.2, 4.0, 1.0], 'Iris-versicolor'),\n",
148+
" ([6.1, 2.9, 4.7, 1.4], 'Iris-versicolor'),\n",
149+
" ([5.6, 2.9, 3.6, 1.3], 'Iris-versicolor'),\n",
150+
" ([6.7, 3.1, 4.4, 1.4], 'Iris-versicolor'),\n",
151+
" ([5.6, 3.0, 4.5, 1.5], 'Iris-versicolor'),\n",
152+
" ([5.8, 2.7, 4.1, 1.0], 'Iris-versicolor'),\n",
153+
" ([6.2, 2.2, 4.5, 1.5], 'Iris-versicolor'),\n",
154+
" ([5.6, 2.5, 3.9, 1.1], 'Iris-versicolor'),\n",
155+
" ([5.9, 3.2, 4.8, 1.8], 'Iris-versicolor'),\n",
156+
" ([6.1, 2.8, 4.0, 1.3], 'Iris-versicolor'),\n",
157+
" ([6.3, 2.5, 4.9, 1.5], 'Iris-versicolor'),\n",
158+
" ([6.1, 2.8, 4.7, 1.2], 'Iris-versicolor'),\n",
159+
" ([6.4, 2.9, 4.3, 1.3], 'Iris-versicolor'),\n",
160+
" ([6.6, 3.0, 4.4, 1.4], 'Iris-versicolor'),\n",
161+
" ([6.8, 2.8, 4.8, 1.4], 'Iris-versicolor'),\n",
162+
" ([6.7, 3.0, 5.0, 1.7], 'Iris-versicolor'),\n",
163+
" ([6.0, 2.9, 4.5, 1.5], 'Iris-versicolor'),\n",
164+
" ([5.7, 2.6, 3.5, 1.0], 'Iris-versicolor'),\n",
165+
" ([5.5, 2.4, 3.8, 1.1], 'Iris-versicolor'),\n",
166+
" ([5.5, 2.4, 3.7, 1.0], 'Iris-versicolor'),\n",
167+
" ([5.8, 2.7, 3.9, 1.2], 'Iris-versicolor'),\n",
168+
" ([6.0, 2.7, 5.1, 1.6], 'Iris-versicolor'),\n",
169+
" ([5.4, 3.0, 4.5, 1.5], 'Iris-versicolor'),\n",
170+
" ([6.0, 3.4, 4.5, 1.6], 'Iris-versicolor'),\n",
171+
" ([6.7, 3.1, 4.7, 1.5], 'Iris-versicolor'),\n",
172+
" ([6.3, 2.3, 4.4, 1.3], 'Iris-versicolor'),\n",
173+
" ([5.6, 3.0, 4.1, 1.3], 'Iris-versicolor'),\n",
174+
" ([5.5, 2.5, 4.0, 1.3], 'Iris-versicolor'),\n",
175+
" ([5.5, 2.6, 4.4, 1.2], 'Iris-versicolor'),\n",
176+
" ([6.1, 3.0, 4.6, 1.4], 'Iris-versicolor'),\n",
177+
" ([5.8, 2.6, 4.0, 1.2], 'Iris-versicolor'),\n",
178+
" ([5.0, 2.3, 3.3, 1.0], 'Iris-versicolor'),\n",
179+
" ([5.6, 2.7, 4.2, 1.3], 'Iris-versicolor'),\n",
180+
" ([5.7, 3.0, 4.2, 1.2], 'Iris-versicolor'),\n",
181+
" ([5.7, 2.9, 4.2, 1.3], 'Iris-versicolor'),\n",
182+
" ([6.2, 2.9, 4.3, 1.3], 'Iris-versicolor'),\n",
183+
" ([5.1, 2.5, 3.0, 1.1], 'Iris-versicolor'),\n",
184+
" ([5.7, 2.8, 4.1, 1.3], 'Iris-versicolor'),\n",
185+
" ([6.3, 3.3, 6.0, 2.5], 'Iris-virginica'),\n",
186+
" ([5.8, 2.7, 5.1, 1.9], 'Iris-virginica'),\n",
187+
" ([7.1, 3.0, 5.9, 2.1], 'Iris-virginica'),\n",
188+
" ([6.3, 2.9, 5.6, 1.8], 'Iris-virginica'),\n",
189+
" ([6.5, 3.0, 5.8, 2.2], 'Iris-virginica'),\n",
190+
" ([7.6, 3.0, 6.6, 2.1], 'Iris-virginica'),\n",
191+
" ([4.9, 2.5, 4.5, 1.7], 'Iris-virginica'),\n",
192+
" ([7.3, 2.9, 6.3, 1.8], 'Iris-virginica'),\n",
193+
" ([6.7, 2.5, 5.8, 1.8], 'Iris-virginica'),\n",
194+
" ([7.2, 3.6, 6.1, 2.5], 'Iris-virginica'),\n",
195+
" ([6.5, 3.2, 5.1, 2.0], 'Iris-virginica'),\n",
196+
" ([6.4, 2.7, 5.3, 1.9], 'Iris-virginica'),\n",
197+
" ([6.8, 3.0, 5.5, 2.1], 'Iris-virginica'),\n",
198+
" ([5.7, 2.5, 5.0, 2.0], 'Iris-virginica'),\n",
199+
" ([5.8, 2.8, 5.1, 2.4], 'Iris-virginica'),\n",
200+
" ([6.4, 3.2, 5.3, 2.3], 'Iris-virginica'),\n",
201+
" ([6.5, 3.0, 5.5, 1.8], 'Iris-virginica'),\n",
202+
" ([7.7, 3.8, 6.7, 2.2], 'Iris-virginica'),\n",
203+
" ([7.7, 2.6, 6.9, 2.3], 'Iris-virginica'),\n",
204+
" ([6.0, 2.2, 5.0, 1.5], 'Iris-virginica'),\n",
205+
" ([6.9, 3.2, 5.7, 2.3], 'Iris-virginica'),\n",
206+
" ([5.6, 2.8, 4.9, 2.0], 'Iris-virginica'),\n",
207+
" ([7.7, 2.8, 6.7, 2.0], 'Iris-virginica'),\n",
208+
" ([6.3, 2.7, 4.9, 1.8], 'Iris-virginica'),\n",
209+
" ([6.7, 3.3, 5.7, 2.1], 'Iris-virginica'),\n",
210+
" ([7.2, 3.2, 6.0, 1.8], 'Iris-virginica'),\n",
211+
" ([6.2, 2.8, 4.8, 1.8], 'Iris-virginica'),\n",
212+
" ([6.1, 3.0, 4.9, 1.8], 'Iris-virginica'),\n",
213+
" ([6.4, 2.8, 5.6, 2.1], 'Iris-virginica'),\n",
214+
" ([7.2, 3.0, 5.8, 1.6], 'Iris-virginica'),\n",
215+
" ([7.4, 2.8, 6.1, 1.9], 'Iris-virginica'),\n",
216+
" ([7.9, 3.8, 6.4, 2.0], 'Iris-virginica'),\n",
217+
" ([6.4, 2.8, 5.6, 2.2], 'Iris-virginica'),\n",
218+
" ([6.3, 2.8, 5.1, 1.5], 'Iris-virginica'),\n",
219+
" ([6.1, 2.6, 5.6, 1.4], 'Iris-virginica'),\n",
220+
" ([7.7, 3.0, 6.1, 2.3], 'Iris-virginica'),\n",
221+
" ([6.3, 3.4, 5.6, 2.4], 'Iris-virginica'),\n",
222+
" ([6.4, 3.1, 5.5, 1.8], 'Iris-virginica'),\n",
223+
" ([6.0, 3.0, 4.8, 1.8], 'Iris-virginica'),\n",
224+
" ([6.9, 3.1, 5.4, 2.1], 'Iris-virginica'),\n",
225+
" ([6.7, 3.1, 5.6, 2.4], 'Iris-virginica'),\n",
226+
" ([6.9, 3.1, 5.1, 2.3], 'Iris-virginica'),\n",
227+
" ([5.8, 2.7, 5.1, 1.9], 'Iris-virginica'),\n",
228+
" ([6.8, 3.2, 5.9, 2.3], 'Iris-virginica'),\n",
229+
" ([6.7, 3.3, 5.7, 2.5], 'Iris-virginica'),\n",
230+
" ([6.7, 3.0, 5.2, 2.3], 'Iris-virginica'),\n",
231+
" ([6.3, 2.5, 5.0, 1.9], 'Iris-virginica'),\n",
232+
" ([6.5, 3.0, 5.2, 2.0], 'Iris-virginica'),\n",
233+
" ([6.2, 3.4, 5.4, 2.3], 'Iris-virginica'),\n",
234+
" ([5.9, 3.0, 5.1, 1.8], 'Iris-virginica')]"
235+
]
236+
},
237+
"metadata": {},
238+
"execution_count": 5
239+
}
240+
]
241+
},
242+
{
243+
"cell_type": "code",
244+
"source": [
245+
"# 두 방식 모두 가능\n",
246+
"\n",
247+
"def distance(a, b):\n",
248+
"\n",
249+
" s = 0\n",
250+
" for x, y in zip(a, b):\n",
251+
" s += (x-y) ** 2\n",
252+
"\n",
253+
" return s ** 0.5\n",
254+
"\n",
255+
"def distance2(a, b):\n",
256+
" return sum((x-y)**2 for x, y in zip(a, b)) ** 0.5"
257+
],
258+
"metadata": {
259+
"id": "SEZI7PyNhW6W"
260+
},
261+
"execution_count": 6,
262+
"outputs": []
263+
},
264+
{
265+
"cell_type": "code",
266+
"source": [
267+
"a = distance(data[0][0], data[1][0])\n",
268+
"a"
269+
],
270+
"metadata": {
271+
"colab": {
272+
"base_uri": "https://localhost:8080/"
273+
},
274+
"id": "Kb1aH9Xsh7zW",
275+
"outputId": "48095dfc-f556-4fef-c4ad-f6679ddf7d4d"
276+
},
277+
"execution_count": 7,
278+
"outputs": [
279+
{
280+
"output_type": "execute_result",
281+
"data": {
282+
"text/plain": [
283+
"0.5385164807134502"
284+
]
285+
},
286+
"metadata": {},
287+
"execution_count": 7
288+
}
289+
]
290+
},
291+
{
292+
"cell_type": "code",
293+
"source": [
294+
"from collections import Counter\n",
295+
"\n",
296+
"def knn_classify(k, query, train):\n",
297+
" # query = [5.9, 3.0, 5.1, 1.8]\n",
298+
" # train = ([6.5, 3.0, 5.2, 2.0], 'Iris-virginica')\n",
299+
"\n",
300+
" res = sorted([(distance(query, v), l)for v, l in train])[:k]\n",
301+
" cnts = Counter(r[1] for r in res)\n",
302+
" mc = cnts.most_common(2)\n",
303+
"\n",
304+
" # 동률을 처리하기 위해 \n",
305+
" while len(cnts) >=2 and mc[0][1] == mc[1][1]:\n",
306+
" res = res[:-1]\n",
307+
" cnts = Counter(r[1] for r in res)\n",
308+
" mc = cnts.most_common(2)\n",
309+
"\n",
310+
" return cnts.most_common(1)[0][0]\n",
311+
"\n",
312+
"\n",
313+
"knn_classify(10, [5.5, 3.1, 5.0, 1.7], data)"
314+
],
315+
"metadata": {
316+
"colab": {
317+
"base_uri": "https://localhost:8080/",
318+
"height": 36
319+
},
320+
"id": "cMyV7TUuiLBM",
321+
"outputId": "b37c30e5-6bc5-4d63-cfd8-6f556e71dcca"
322+
},
323+
"execution_count": 8,
324+
"outputs": [
325+
{
326+
"output_type": "execute_result",
327+
"data": {
328+
"text/plain": [
329+
"'Iris-virginica'"
330+
],
331+
"application/vnd.google.colaboratory.intrinsic+json": {
332+
"type": "string"
333+
}
334+
},
335+
"metadata": {},
336+
"execution_count": 8
337+
}
338+
]
339+
},
340+
{
341+
"cell_type": "code",
342+
"source": [
343+
"import matplotlib.pyplot as plt\n",
344+
"\n",
345+
"# 굉장히 비효율적이지만 한 번 해보자 !\n",
346+
"\n",
347+
"\n",
348+
"# 정확도 넣기\n",
349+
"Y = []\n",
350+
"# k 값 넣기\n",
351+
"X = []\n",
352+
"\n",
353+
"for k in range(1, 50):\n",
354+
" n_correct = 0\n",
355+
" n_incorrect = 0\n",
356+
"\n",
357+
" for i, q in enumerate(data):\n",
358+
" new_data = []\n",
359+
" for j, d in enumerate(data):\n",
360+
" if i == j: continue\n",
361+
" new_data.append(d)\n",
362+
" \n",
363+
" ans = knn_classify(k, q[0], new_data)\n",
364+
" true_ans = q[1]\n",
365+
" if (ans == true_ans): n_correct += 1\n",
366+
" else: n_incorrect += 1\n",
367+
"\n",
368+
" X.append(k)\n",
369+
" Y.append(n_correct / (n_correct + n_incorrect))\n",
370+
"\n",
371+
"\n",
372+
"plt.plot(X, Y)\n",
373+
"plt.show()\n"
374+
],
375+
"metadata": {
376+
"colab": {
377+
"base_uri": "https://localhost:8080/",
378+
"height": 265
379+
},
380+
"id": "WAvJ52aokv7y",
381+
"outputId": "ad8b7f9c-58c0-4255-98ef-96addb2f41ec"
382+
},
383+
"execution_count": 9,
384+
"outputs": [
385+
{
386+
"output_type": "display_data",
387+
"data": {
388+
"text/plain": [
389+
"<Figure size 432x288 with 1 Axes>"
390+
],
391+
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAD4CAYAAADlwTGnAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3dfXRc9X3n8fdn9GhbMzK2RrYl+Qkw2JJDTOOQZtOsibttoU15CpsDoW2Sk1PaTdnT3SxpoDmb7jplaRraNC1sTmlDErppCYfNA5t1FlIwSZtsWEx50sg2yCZga2wsG6yRbD3ru3/MHXkiS9Y86mHu93WOjmZ+997f/C7I9zv397u/31dmhnPOufCJzHcDnHPOzQ8PAM45F1IeAJxzLqQ8ADjnXEh5AHDOuZCqnu8G5KOpqck2bNgw381wzrlF5dlnnz1hZvGp5YsqAGzYsIG9e/fOdzOcc25RkfTadOXeBeSccyHlAcA550LKA4BzzoWUBwDnnAspDwDOORdSOQUASVdJOiCpW9Id02xfL+kJSS9KekpSW9a2P5WUkLRP0l9KUlD+DkkvBXVOljvnnJsbswYASVXAfcDVQDtws6T2KbvdAzxoZpcBu4C7g2P/FfAe4DJgK/BOYEdwzJeA3wY2BT9XFXsyzjnncpfLPIArgG4zOwQg6SHgWqAra5924BPB6z3At4PXBtQDtYCAGuANSWuAmJn9JKjzQeA64HtFnY2raAd7B/jO80ko0RLml6yO8v7LWkpSl3OLUS4BoBU4nPX+CPCuKfu8ANwAfBG4HohKWmlm/1fSHuAo6QBwr5ntk7Q9qCe7ztbpPlzSrcCtAOvWrcuhua5S3ftkN996rodSdBaaQW1VhF/duoZIxHsfXTiVaibw7cC9kj4C/BDoAcYlXQxsATJjAt+X9F5gMNeKzex+4H6A7du3e/aaEOvs6WPn5mYe+Mg7i67rgX9+lV3f7eLU4CgrltWWoHXOLT65DAL3AGuz3rcFZZPMLGlmN5jZ5cCng7JTpO8GfmJmA2Y2QLqL593B8W3nq9O5bIMj4xzsHaCjJVaS+uLROgB6+4dLUp9zi1EuAeAZYJOkjZJqgZuAR7N3kNQkKVPXncADwevXgR2SqiXVkB4A3mdmR4GUpJ8Pnv75LeA7JTgfV6H2H0sxYdDR0liS+pqDAHC8f6gk9Tm3GM0aAMxsDLgNeAzYBzxsZglJuyRdE+x2JXBA0svAKuCuoPwR4CDwEulxghfM7H8F2z4O/C3QHezjA8BuRp3JFEDJ7gCaY/WA3wG4cMtpDMDMdgO7p5R9Juv1I6Qv9lOPGwd+Z4Y695J+NNS5WXUl+2hcUkPbBUtKUl988g7AA4ALL58J7BaFRDJFR0uMUs0XbKirZmltFcdTHgBceHkAcAve6PgE+4/1l6z7J6M5WkfvgAcAF14eANyC1318gJGxiZINAGfEo3UcT/kgsAsvDwBuwUuUeAA4ozla74PALtQ8ALgFL5Hso74mwoXxhpLWG4/WeQBwoeYBwC14iWSKLWtiVJV4yYZ4tI7+4TEGR8ZLWq9zi4UHALegTUwYXcETQKXW7LOBXch5AHAL2utvnmFgeIytJR4Ahuy5AD4Q7MLJA4Bb0M4OAJc+ADRH07OBfTKYCysPAG5BSyT7qI6IS1aXdgAYoDnmXUAu3DwAuAWtM5li06ooddVVJa97xdJaqiLyLiAXWh4A3IJlZnQl+8oyAAwQiYimhlpfDsKFlgcAt2Ad7x/mxMBI2QIABJPBfDkIF1IeANyC1dnTB5RnADgjvRyEBwAXTh4A3IKVeQKovax3AL4gnAsvDwBuwUok+9jYtIyGulKlrj5Xc7SOkwPDjE94umkXPjkFAElXSTogqVvSHdNsXy/pCUkvSnpKUltQ/j5Jz2f9DEm6Ltj2VUmvZm3bVtpTc4tdIpkq67d/SHcBTRic9LsAF0KzBgBJVcB9wNVAO3CzpPYpu90DPGhmlwG7gLsBzGyPmW0zs23ATuAM8HjWcZ/MbDez54s/HVcpTp0Z4chbg2WZAZwt7pPBXIjlcgdwBdBtZofMbAR4CLh2yj7twJPB6z3TbAe4EfiemZ0ptLEuPLrKtAT0VHFfD8iFWC4BoBU4nPX+SFCW7QXghuD19UBU0sop+9wE/MOUsruCbqMvSKqb7sMl3Sppr6S9vb29OTTXVYJy5QCYqtnXA3IhVqpB4NuBHZKeA3YAPcDkGruS1gBvAx7LOuZOYDPwTmAF8KnpKjaz+81su5ltj8fjJWquW+gSyT5Wx+pZ2TDt94KS8TsAF2a5PF7RA6zNet8WlE0ysyTBHYCkBuADZnYqa5cPAt8ys9GsY44GL4clfYV0EHEOSC8BsbW1vN/+AeprqojVV/sYgAulXO4AngE2SdooqZZ0V86j2TtIapKUqetO4IEpddzMlO6f4K4ASQKuAzrzb76rRIMj4xzqHaC9zAPAGc0xTw3pwmnWAGBmY8BtpLtv9gEPm1lC0i5J1wS7XQkckPQysAq4K3O8pA2k7yB+MKXqr0t6CXgJaAL+uKgzcRVj37EUE1b+/v+M5mid3wG4UMppho2Z7QZ2Tyn7TNbrR4BHZjj2p5w7aIyZ7cynoS48MgPAW1vn5g4gHq3jX15/a04+y7mFxGcCuwUn0dPH8qU1tDTWz8nnNQfJ4c18NrALl/LNsXcLQmpolC89dZCh0XMTnwtx8xVr2bQqWvTnPLz3MPuOpoquB+AHL/fS0RIjPTxUfs3ReoZGJ+gfHiNWXzMnn+ncQuABoMI91nmMLz11kGhdNUy5ng4Mj9E/NMrn/+3bi/qModFx/vCbL1EVEbXVxd9UCriqY3XR9eRqMjdwatgDgAsVDwAVLpFMsbS2ihf+6JeJRH42Avzml5+e7G8vxstv9DM2YfzVzZdz9dvWFF3fXGvOmgtwcXPpU086t1D5GECFSyT72LImds7FH9Lr7L/8Rj/DY+d2D+Wjs6d8idvnQiY3sM8GdmHjAaCCTUwYXcnUjI9TdrTEGJswXnljoKjPSST7iNZXs3bFkqLqmS/xhvRgs88FcGHjAaCCvfbmGU6PjM+4ombmMctEsq+oz0kEQWauBm1LLbakmtrqiAcAFzoeACpYJqXiTGvqr1+xlIa66skunEKMjU+w72hq0Xb/AEgi3uCTwVz4eACoYIlkipoqcckMj3lGImLLmmhRdwCHTpxmeGxizmbtlktzrM7vAFzoeACoYIlkH5uao+d9NLOjpZF9R/sLTomYCR6L+Q4AMstB+CCwCxcPABXKLD0APNuKmh0tMQZHx3n1xOmCPifRk6KuOsJF8WUFHb9QxH09IBdCHgAq1LHUECdPj8z6zTyzvdBuoM5kH5vXxKiuWtx/Ss3Rek6dGS36kVjnFpPF/a/WzSjRk1tGrU2rGqitihQ0ISxzl7HY+//h7GSwEwMj89wS5+aOB4AKlUimkGDLmvNfnGuqIly6urCB4CNvDZIaGquIAHB2OQgfB3Dh4QGgQiWSfWxsWsayutlX++hoiZFIpvJeDTMTNGaaZ7CYNEd9MpgLHw8AFSo9OSu3C3NHS4xTZ0bpOTWY12d09qSoiohLVxe/muh8O7schAcAFx45BQBJV0k6IKlb0h3TbF8v6QlJL0p6SlJbUP4+Sc9n/QxJui7YtlHS00Gd3wjSTboSeOv0CD2nBnPumumYnBGc3zhAItnHxfEG6muq8m7jQrNyWS2S3wG4cJk1AEiqAu4DrgbagZsltU/Z7R7gQTO7DNgF3A1gZnvMbJuZbQN2AmeAx4NjPgd8wcwuBt4CPlaC83FA19HcBoAztqyOEVEhAaAyBoABqqsirFxW63cALlRyuQO4Aug2s0NmNgI8BFw7ZZ924Mng9Z5ptgPcCHzPzM4EieB3cjaN5NdIJ4Z3JZDv5KwltVVcGG+gK4+B4OP9QxzvH568e6gETQ119PpkMBciuQSAVuBw1vsjnJvj9wXghuD19UBU0sop+9wE/EPweiVwKkg4P1OdAEi6VdJeSXt7e3tzaK7r7EnR0ljPimW596p1tMTyWhMoc7dQKXcAAM2xeu8CcqFSqkHg24Edkp4DdgA9wOSMGklrgLcBj+VbsZndb2bbzWx7PB4vUXMrWyLZR3ueT+ZsbWlMTx4byO0C2BUEgJkWmluMmn02sAuZXAJAD7A2631bUDbJzJJmdoOZXQ58Oig7lbXLB4Fvmdlo8P4ksFxS5hnFc+p0hTkzMsahE6fz/mae2T/XcYBEso91K5ZWVArFeJAcfqLAdZGcW2xyCQDPAJuCp3ZqSXflPJq9g6QmSZm67gQemFLHzZzt/sHSD5zvIT0uAPBh4Dv5N99Nte9oP2Zn1/rPVXveAWD2dYYWm+ZoHWMTxqnB0dl3dq4CzBoAgn7620h33+wDHjazhKRdkq4JdrsSOCDpZWAVcFfmeEkbSN9B/GBK1Z8CPiGpm/SYwJeLOhMHZA8A53dxXr60lrYLltCZw0BwamiU106eWfQrgE6VmQzmq4K6sMgpKbyZ7QZ2Tyn7TNbrRzj7RM/UY3/KNAO8ZnaI9BNGroQSPSkuWFrDmsb6vI/taIlN9u2fTyX2/8PZ5SB6+4fZvHqeG+PcHPCZwBUmcbSPra2NBaVn7Ghp5NUTp+kfOn8XSKabqBKWgMjWPLkekA8Eu3DwAFBBRsYmOHCsv+Bv5pk+/X1H+8+7X6Knj+Zo3eQ35koxuSCcPwnkQsIDQAV55Xg/o+NWcN98rrkBKmkGcLZlddUsq63yuQAuNDwAVJBiJ2c1R+toaqg975NAQ6PjdPcOVNwAcEZzrN4HgV1oeACoIF3JFMtqq9i4srD0jJJob2k8bwA4cCydP7jSHgHN8NSQLkw8AFSQzp4+tqyJEYnkPwCcsbUlxitv9M+YGrGzQpLAzyQereOEBwAXEh4AKsTEhLHvaPF98x0tjYxNGC8fG5h2eyKZIlZfTdsFS4r6nIXKl4NwYeIBoEL89ORpTo+MF/3N/OySENMPBCeSKdpbYgU9ZroYxKN1DAyPcWZkbPadnVvkPABUiMkB4CL75tetWEq0rnracYCx8Qn2H01V3PP/2Tw1pAuTnGYCu9kd7x/ii//4CiNjE/Py+fuOpaipEpuai0vPGImILS0xHu86xtDoz44DnBkdZ3hsouggs5BlJoN99rtdXLB0fpLUXdTcwO/uuGhePtuFiweAEvnfLx7l60+/zprGeuarc+S6ba3UVhd/U3ftthbue7KbH3WfOGfbpuYG3n1hU9GfsVC1t8S4ZFVDTktilMPA8BipZ8f48Ls3sKR28afadAubB4ASSSRTNDXU8eM7di76/vFb3rWeW961fr6bMS+aGup4/D/umLfPf3jvYf7gkRfp7R9m3cql89YOFw4+BlAimdmxi/3i7+bX5HpEPhnNzQEPACUwPDbOK2/0V+TyCG5u+SC0m0seAErg5WMDjE0UvgaPcxm+IJ2bSzkFAElXSTogqVvSHdNsXy/pCUkvSnpKUlvWtnWSHpe0T1JXkCAGSV+V9Kqk54OfbaU6qbmWeWa+UpdHcHNn5bJaqiLyLiA3J2YNAJKqgPuAq4F24GZJ7VN2uwd40MwuA3YBd2dtexD4vJltIZ0A5njWtk+a2bbg5/kizmNedSb7iNZVs/YCH7RzxYlERFNDrXcBuTmRyx3AFUC3mR0ysxHgIeDaKfu0A08Gr/dktgeBotrMvg9gZgNmdqYkLV9AEskUW1qKW4PHuQxfkM7NlVwCQCtwOOv9Ec5N8fgCcEPw+nogKmklcAlwStI3JT0n6fPBHUXGXUG30RckTZtdRNKtkvZK2tvb25vTSc2l8WANnkqeHevmVnO03rOSuTlRqkHg24Edkp4DdgA9wDjpeQbvDba/E7gQ+EhwzJ3A5qB8Bekk8ecws/vNbLuZbY/H4yVqbukc6h1gaHTCnwByJdMcraN3wAOAK79cAkAPsDbrfVtQNsnMkmZ2g5ldDnw6KDtF+m7h+aD7aAz4NvBzwfajljYMfIVFmiC+VGvwOJcRj9ZxcmCY8Qmb76a4CpdLAHgG2CRpo6Ra4Cbg0ewdJDVJytR1J/BA1rHLJWW+uu8EuoJj1gS/BVwHdBZzIvMlkeyjtjrCRfGG+W6KqxDN0TomDE6e9rsAV16zBoDgm/ttwGPAPuBhM0tI2iXpmmC3K4EDkl4GVgF3BceOk+7+eULSS4CAvwmO+XpQ9hLQBPxxyc5qDiWSKbasjlJT5VMqXGlMzgXwcQBXZjmtBWRmu4HdU8o+k/X6EeCRGY79PnDZNOU782rpAmRmdPb08WuXtcx3U1wFiftsYDdH/GtrEY68NUhqaMwHgF1JZdYD8gDgys0DQBEyA8BbW/0RUFc6cV8Qzs0RDwBFSCT7qIqIzauLS8LiXLb6mipi9dU+GcyVnQeAIiSSKS6KL6O+xhN3uNJqjtV7F5ArOw8ARUgk+3wFUFcW8QZfDsKVnweAAvX2D/NGatgHgF1ZNMfq/A7AlZ0HgAJlloD2OwBXDs3ROo73D2Hms4Fd+XgAKFDmCaB2vwNwZRCP1jE0OkH/8Nh8N8VVMA8ABepKpli3YimNS2rmuymuAnlqSDcXPAAUqDPZ5/3/rmyafTkINwc8ABQgNTTKayfPeABwZeOTwdxc8ABQgH2TS0D7ALArD+8CcnPBA0ABOjMBwO8AXJnEllRTWx3xAODKygNAARLJPuLRuslvac6VmiTiDT4XwJWXB4ACdCVT/u3flV1zzGcDu/LyAJCnodFxXjk+4EngXdmll4PwQWBXPjkFAElXSTogqVvSHdNsXy/pCUkvSnpKUlvWtnWSHpe0T1KXpA1B+UZJTwd1fiNIN7ngHTjWz/iE+R2AKztfDsKV26wBQFIVcB9wNdAO3Cypfcpu9wAPmtllwC7g7qxtDwKfN7MtpBO/Hw/KPwd8wcwuBt4CPlbMicyVySTwfgfgyqw5Ws9bZ0YZGZuY76a4CpVLSsgrgG4zOwQg6SHgWoLk7oF24BPB6z3At4N924HqIC0kZjYQlIt0gvgPBcd8DfgvwJeKOJcZ3benm86evpLUdeCNfqL11axdsaQk9Tk3k8xcgN6BYVqX+9+bK71cAkArcDjr/RHgXVP2eQG4AfgicD0QlbQSuAQ4JembwEbgH4E7gAuAU0HC+UydrdN9uKRbgVsB1q1bl0Nzz3W0b5CDvQMFHTtVdUTc8q71pGOYc+WTnRrSA4Arh5ySwufgduBeSR8Bfgj0AONB/e8FLgdeB74BfAT4Tq4Vm9n9wP0A27dvL2hpxD++7m2FHObcvMo8Znw85QPBrjxyGQTuAdZmvW8LyiaZWdLMbjCzy4FPB2WnSH+zf97MDgXf9r8N/BxwElguqXqmOp0Lu7PLQfhAsCuPXALAM8Cm4KmdWuAm4NHsHSQ1ScrUdSfwQNaxyyXFg/c7gS5LL3K+B7gxKP8wedwVOBcGKxtqkXw5CFc+swaA4Jv7bcBjwD7gYTNLSNol6ZpgtyuBA5JeBlYBdwXHjpPuHnpC0kuAgL8JjvkU8AlJ3cBK4MslOyvnKkBNVYQVS2v9DsCVTU5jAGa2G9g9pewzWa8fAR6Z4djvA5dNU36I9BNGzrkZxKM+F8CVj88Edm4Ba47V0+uzgV2ZeABwbgFLLwfhdwCuPDwAOLeANcfqODEwzMSEJ4d3pecBwLkFrDlax+i4cWpwdL6b4iqQBwDnFjBPDenKyQOAcwuYp4Z05eQBwLkFLLMe0PGUBwBXeh4AnFvAslcEda7UPAA4t4Atq6tmWW2V3wG4svAA4NwC1xyr90FgVxYeAJxb4OINvhyEKw8PAM4tcHHPDezKxAOAcwucLwfhysUDgHMLXHOsjoHhMc6MjM2+s3N58ADg3ALnk8FcuXgAcG6Bi2clh3eulHIKAJKuknRAUrekO6bZvl7SE5JelPSUpLasbeOSng9+Hs0q/6qkV7O2bSvNKTlXWZo9N7Ark1kzgkmqAu4Dfol0kvdnJD1qZl1Zu90DPGhmX5O0E7gb+M1g26CZzXRx/2SQTcw5N4Ozy0H4XABXWrncAVwBdJvZITMbAR4Crp2yTzvwZPB6zzTbnXMFumBpLdUR+XIQruRyCQCtwOGs90eCsmwvADcEr68HopJWBu/rJe2V9BNJ10057q6g2+gLkuqm+3BJtwbH7+3t7c2huc5VlkhENDXU+XIQruRKNQh8O7BD0nPADqAHGA+2rTez7cCHgL+QdFFQfiewGXgnsAL41HQVm9n9ZrbdzLbH4/ESNde5xaU55nMBXOnlEgB6gLVZ79uCsklmljSzG8zscuDTQdmp4HdP8PsQ8BRwefD+qKUNA18h3dXknJuGLwfhyiGXAPAMsEnSRkm1wE3Ao9k7SGqSlKnrTuCBoPyCTNeOpCbgPUBX8H5N8FvAdUBn8afjXGXyOwBXDrM+BWRmY5JuAx4DqoAHzCwhaRew18weBa4E7pZkwA+B3wsO3wL8taQJ0sHmT7KeHvq6pDgg4Hngd0t4Xs5VlHi0njdPDzM+YVRFNN/NcRVi1gAAYGa7gd1Tyj6T9foR4JzHOc3sx8DbZqhzZ14tdS7E4tE6JgxODgzTHKuf7+a4CuEzgZ1bBHwymCuHnO4AnHPzK7McxJ3ffInlS2vO2X7jO9q4dtvUp7Pz95UfvcqT+48XXU/Gr7+9hQ9uXzv7jrP4+6df53udR6fd1hyt53MfeBvVVf59Nl8eAJxbBDavjvK+S+OcGhxlYPhnVwU91Hua1NBY0QHAzLhvTzeSaLtgSVF1Abx28gxvpIZKEgD++ocHOT08xtoVS3+mvH9ojH965QQffc8GtrY2Fv05YeMBwLlFYGltNV/56PRPSn/2u138j5+8xtj4RFHfgo/3D3NiYIQ/+vV2PvqejQXXk/Hnjx/g3j3dDI6Ms6S2quB6UkOjvHbyDJ/8lUv5vfdd/DPbXj1xmvfd8xSJZJ8HgAL4PZNzi1xHS4zhsQkO9p4uqp5Esi+orzQX0vaWRiYM9h9LFVVPVzIV1Bc7Z9v6FUtpqKsmkSzuM8LKA4Bzi1zmgp25gBcq0ZO+iG5ZEy26TZAOTEDRF+fM8R3TBIBIRGxZE/UAUCAPAM4tchfFl1FXHSnJhXZj0zKi9ecOMhei7YIlNC6pKUG7+miO1k0mxpmqo6WRfUdTjE9YUZ8TRh4AnFvkqqsibF4To7OnuDuAzmTftN0shZJER0usJHcm0337z+hoiXFmZJxXTxTXBRZGHgCcqwAdLTG6jqYwK+xbcN+ZUY68NXjeC22h7dp/rJ/R8YmCjh8aHae7d+C84xKl6gILIw8AzlWArS2N9A+NcfjNwYKOTxwt7QBwRkdLIyNjExzsHSjo+APH+hmfsPMGpk2rGqitikwOFrvceQBwrgKcHXAt7Ftw13kGWouxtTVoV09hF+fM+MH5HvGsqYpw6eoonX4HkDcPAM5VgEtXR6mKqOCLYGdPH6tj9TQ1TJuXqWAbmxpYUlNVeLuSfcTqq2edmJYeayi8CyysPAA4VwHqa6q4ON5Q8BM3ieT5B1oLVRURm4t4TDORTNHeEiO9avzMOlpinDozSrLP8ybnwwOAcxWiozVW0IV2cGScg70DZQkAkL4470ummMjzMc2x8Qn2H03lNC7RnhkILvJJqLDxAOBchehoaaS3f5jjqfy+Be8/lmLCoKNMSylsbWmkf3iMw2+dyeu4QydOMzw2MTmOcD5b1kSJCDp9IDgvOQUASVdJOiCpW9Id02xfL+mJIMH7U5LasraNS3o++Hk0q3yjpKeDOr8RZBtzzhWo0Jm3nWUaAM7IfIPvzHMgODOvIZc7gKW11VwYb6DLB4LzMmsAkFQF3AdcDbQDN0tqn7LbPcCDZnYZsAu4O2vboJltC36uySr/HPAFM7sYeAv4WBHn4VzotRf4JFBXso/GJTW0Li9+BdDpXLK6geqI8m5XIpmirjrChU3Lcto/MxDscpfLHcAVQLeZHTKzEeAh4Nop+7QDTwav90yz/WcEeYB3cjaL2NdI5wV2zhUoVl/D+pVL874IZgaAZxtoLVRddRUXN+c/QJ1I9rF5TSznFU47WmIc7Rvi5IAnzclVLv9lW4HDWe+PBGXZXgBuCF5fD0QlrQze10vaK+knkjIX+ZXAKTPLLGw+XZ0ASLo1OH5vb29vDs11Lrzy/RY8Oj7B/mP9ZV9KeWtrI4lkX86PaZoZiWSKrXl0S22dnBHsdwG5KtUg8O3ADknPATuAHmA82LbezLYDHwL+QtJF+VRsZveb2XYz2x6Px0vUXOcqU0dLI6+/eYa+wdGc9u8+PsDI2ETZ+v/PtivGiYGRnFNaHn5zkP6hsbxmJreXaPXRMMklAPQA2Sl92oKySWaWNLMbzOxy4NNB2angd0/w+xDwFHA5cBJYLql6pjqdc/nLXMhzXRbhfEstl1K+6/WczU2Qe7uWL62ldfkSXxMoD7kEgGeATcFTO7XATcCj2TtIapKUqetO4IGg/AJJdZl9gPcAXZa+D9wD3Bgc82HgO8WejHNhV8iFdklNFRubGsrZrMkcA7kuCZFIpqiKiEtX55ebwAeC8zNrAAj66W8DHgP2AQ+bWULSLkmZp3quBA5IehlYBdwVlG8B9kp6gfQF/0/MrCvY9ingE5K6SY8JfLlE5+RcaMWjdTRH6/K6A9iyJr2MRDlF62vY2LQs54tzItnHpuYG6mvySyW5tbWRV0+cPidvspteTjmBzWw3sHtK2WeyXj/C2Sd6svf5MfC2Geo8RPoJI+dcCW1tbcxp7Z2JCaMrmeL6y4tLJp+r9pYYLxw+ldO+nckU793UlPdnZLqM9h1N8c4NK/I+Pmx8JrBzFaajJcbB3tMMjY6fd7/X3zzDwPBY2fv/s9t15K1B+s6cf4D6eP8Qvf3DBS1NfXbSmY8D5MIDgHMVpqMlxviEsf9Y/3n3y2Wp5VKafEzz6PkvzpPtKiAwrYrV0dRQ6+MAOfIA4FyFyXUgOJHsozoiNq0q7wBwRq5PKGW2F5KeUhLtLY0eAHLkAcC5CpNJxj7b2judyRSbVkWpq85voLVQKxvqWB2rn7V7prOnj/UrlxacnL6jJcYrb/QzPHb+LjDnAcC5iiOJ9jWx8y6MZmZ0JfvmrIZlMTcAAA0CSURBVP8/I5fHNIvNTdDREmNswnj5WGFpKMPEA4BzFSiTjH1shmTsx/uHOTEwUlA/e1Htam3kYO8AgyPTfztPDY3y+ptnispNvNWTxOfMA4BzFWhrayPDYxMc7D097fbJmbZzNACc0dESY8LSOQimU4rcxOtWLKWhrtrHAXLgAcC5CpS5gM7U397Zk0KCLWvmvgsIZk7ckk8OgJlEIukuME8SPzsPAM5VoAvjDdTXRGb8FpxI9rFh5TIa6nKaC1oyrcvTA9QzjU90JVM0R+uIR4tLTt/eEmP/0X7G80xDGTYeAJyrQFURsWVNbMZ+8HIlgZ+NJLaeJ3dxIpkqybyEra2NDI6O8+oJHwg+n7kN/865OdPREuPhZ45w/X//0c+Um8GRtwa55V3r56ldjTzwz6+e0y6AV47388sdq0rwGeng9jt/9yyxJec+TvqrW9fw2//6wqI/5+tPv8Yjzx4pup6MnZc28+9/cVPJ6puNBwDnKtSN71jLkbcGp+0G+cXNzVy9dfU8tAqu29bKK2/0MzZNu668tJlff3tL0Z9xyaooH9zextG+oXO2HTw+wAM/erUkAeDBH7/Gm2dG2JznqqXTefXEaf72n1/ltp0Xly0721QeAJyrUNvWLuerH1146y22t8T4SpnbVRURf3rj26fddv8PD/Lfdu/nzdMjrFhWW/BnDI2O0907wL/bcRG3/8qlBdeT8Xc/eY3//O1Oek4N0nbB0qLry4WPATjnQqVU8wT2H0sPMm9tLc1YytbJJ7fm7vFVDwDOuVBpL9GF9mzWstLMpdi8OkZEnHcGd6l5AHDOhUqpUkcmkili9dW0XbCkJO1aUlvFRfGGOZ3AllMAkHSVpAOSuiXdMc329ZKekPSipKcktU3ZHpN0RNK9WWVPBXU+H/w0F386zjk3u46WWM5Z02aSfpS2saQDtltb53Yl01kDgKQq4D7gaqAduFlS+5Td7gEeNLPLgF3A3VO2fxb44TTV32Jm24Kf43m33jnnCrC1tZFDRaSOHBufYP/R0s+l6GiJcSw1xImB4ZLWO5Nc7gCuALrN7JCZjQAPAddO2acdeDJ4vSd7u6R3kM4T/HjxzXXOueJlp44sxMHe0wyPTdBRogHgjMz4xFzdBeQSAFqBw1nvjwRl2V4AbgheXw9EJa2UFAH+DLh9hrq/EnT//GfNcB8l6VZJeyXt7e3tzaG5zjl3fpNJcwpMHZkZP9haogHgjI41c7uSaakGgW8Hdkh6DtgB9ADjwMeB3WY23VS5W8zsbcB7g5/fnK5iM7vfzLab2fZ4PF6i5jrnwqzY1JGdPSnqayJcGC9tNrXGpTWsXbGExBw9CprLRLAeYG3W+7agbJKZJQnuACQ1AB8ws1OS3g28V9LHgQagVtKAmd1hZj3Bsf2S/p50V9ODRZ+Rc87NIpM6cqZVSWeTSPaxeXWMqkjpZ+x2rGlcUHcAzwCbJG2UVAvcBDyavYOkpqC7B+BO4AEAM7vFzNaZ2QbSdwkPmtkdkqolNQXH1gDvBzpLckbOOZeDQlNHmhldZRgAzm7XT0+eoX9otCz1Z5s1AJjZGHAb8BiwD3jYzBKSdkm6JtjtSuCApJdJD/jeNUu1dcBjkl4Enid9R/E3hZ2Cc87lL5M68pU38lsx9PCbg/QPjZVk1dLpZOrdd7S/LPVny2ktIDPbDeyeUvaZrNePAI/MUsdXga8Gr08D78ivqc45VzrZS0LkczHvnJwBXL47AEgnx7li44qyfEaGzwR2zoVSJnVkvktCJJJ9VEXEJauKXwF0Os2xepoa6ubkUVAPAM65UMqkjsx3wDWRTLGpuYH6mqoytYwgaU75B4I9ADjnQqu9Jca+PFNHdvakSrYA3Ew6WmJ0Hx9gaDS/Aep8eQBwzoXW2dSRp3Pa/3iwTEO502l2tDQyNmG8/EZ5B4I9ADjnQqtjcumF3LpbMv3y5Q8Ac7MkhAcA51xoXdzcQG11JOcLbSZQtJc5AKxbsZRofXXZxwE8ADjnQqumKsKlq6I5X2g7e1JsWLmUaP25ieZLSUoPUJc7O5gHAOdcqKWfuElhNvtAcOJoX9kHgDM6WhrZfyyV1wB1vjwAOOdCrb2lkVNnRuk5NXje/frOjHL4zcGSLwE9k62tMYZGJzjUm99M5Xx4AHDOhVquA66Jo6XNATybySWryzgQ7AHAORdqW4Jk7LNdaLvm6AmgjIviy6irjtBZYM6CXHgAcM6FWiYZe9csA8GJZIrVwTINc6G6KsLm1VG/A3DOuXLqaJn9iZtEsm/Ovv1ndLSmcwPkMkBdCA8AzrnQ62hp5FhqiJMzJGMfHBmn+/jA3AeAlhipoTGOvHX+AepCeQBwzoVe5smembpb9h9LMWHpJ4bmUkdLeXMEewBwzoXe2WTs0weATPnWOXoENGPz6ihVEZVtHCCnACDpKkkHJHVLumOa7eslPSHpRUlPSWqbsj0m6Yike7PK3iHppaDOv5RU+uSazjmXg8alNbRdsGQy2ctUiWQfjUtqaF2+ZE7bVV9TxcXxhvkLAJKqgPuAq4F24GZJ7VN2u4d0vt/LgF3A3VO2fxb44ZSyLwG/DWwKfq7Ku/XOOVciHS2xyUc9p0ok0zmA5+N7anqAujxdQLmkhLwC6DazQwCSHgKuBbqy9mkHPhG83gN8O7NB0jtI5wn+P8D2oGwNEDOznwTvHwSuA75XzMk451yhtrY08ljiDX7pz39wzrZDJ07zsV/YOA+tSi88983neujtHyYeLe0jqLkEgFbgcNb7I8C7puzzAnAD8EXgeiAqaSXwFvBnwG8A/2ZKnUem1Nk63YdLuhW4FWDdunU5NNc55/J37bZWunsHGB2fOGfb5jUxbnxH2zRHld87N6zg1y5bU5bkMDklhc/B7cC9kj5CuqunBxgHPg7sNrMjhd46mdn9wP0A27dvL9+qSM65UFu3cilfvOny+W7GOd6+djn3fejnylJ3LgGgB1ib9b4tKJtkZknSdwBIagA+YGanJL0beK+kjwMNQK2kAdJ3Cm3nq9M551x55RIAngE2SdpI+iJ9E/Ch7B0kNQFvmtkEcCfwAICZ3ZK1z0eA7WZ2R/A+JenngaeB3wL+quizcc45l7NZnwIyszHgNuAxYB/wsJklJO2SdE2w25XAAUkvkx7wvSuHz/448LdAN3AQHwB2zrk5pXKtMVEO27dvt7179853M5xzblGR9KyZbZ9a7jOBnXMupDwAOOdcSHkAcM65kPIA4JxzIbWoBoEl9QKvzbJbE3BiDpqzEIX53CHc5+/nHl65nP96M4tPLVxUASAXkvZON9odBmE+dwj3+fu5h/Pcobjz9y4g55wLKQ8AzjkXUpUYAO6f7wbMozCfO4T7/P3cw6vg86+4MQDnnHO5qcQ7AOeccznwAOCccyFVMQFgtsT1lUbSA5KOS+rMKlsh6fuSXgl+XzCfbSwXSWsl7ZHUJSkh6feD8oo/f0n1kv6fpBeCc/+vQflGSU8Hf//fkFQ7320tJ0lVkp6T9N3gfSjOX9JPJb0k6XlJe4Oygv/uKyIA5Ji4vtJ8FbhqStkdwBNmtgl4InhficaA/2Rm7cDPA78X/P8Ow/kPAzvN7O3ANuCqIK/G54AvmNnFpFOxfmwe2zgXfp/08vQZYTr/95nZtqxn/wv+u6+IAEBW4nozGwEyiesrlpn9EHhzSvG1wNeC118DrpvTRs0RMztqZv8SvO4nfSFoJQTnb2kDwdua4MeAncAjQXlFnnuGpDbg10jnE0HpfLOhOf9pFPx3XykBYLrE9dMmma9wq8zsaPD6GOnkPBVN0gbgctKZ5UJx/kH3x/PAceD7pBMqnQqSN0Hl//3/BfAHQCZ7+0rCc/4GPC7pWUm3BmUF/92XKim8W2DMzCRV9DO+Qf7p/wn8BzNLpb8IplXy+ZvZOLBN0nLgW8DmeW7SnJH0fuC4mT0r6cr5bs88+AUz65HUDHxf0v7sjfn+3VfKHcCsietD4g1JawCC38fnuT1lI6mG9MX/62b2zaA4NOcPYGangD3Au4HlkjJf6Cr57/89wDWSfkq6q3cn8EVCcv5m1hP8Pk46+F9BEX/3lRIAJhPXB6P/NwGPznOb5sOjwIeD1x8GvjOPbSmboM/3y8A+M/vzrE0Vf/6S4sE3fyQtAX6J9BjIHuDGYLeKPHcAM7vTzNrMbAPpf+dPmtkthOD8JS2TFM28Bn4Z6KSIv/uKmQks6VdJ9w1WAQ+YWS6J6RctSf8AXEl6Kdg3gD8Cvg08DKwjvWz2B81s6kDxoifpF4B/Al7ibD/wH5IeB6jo85d0GemBvirSX+AeNrNdki4k/Y14BfAc8BtmNjx/LS2/oAvodjN7fxjOPzjHbwVvq4G/N7O7JK2kwL/7igkAzjnn8lMpXUDOOefy5AHAOedCygOAc86FlAcA55wLKQ8AzjkXUh4AnHMupDwAOOdcSP1//UQY5fcbNzkAAAAASUVORK5CYII=\n"
392+
},
393+
"metadata": {
394+
"needs_background": "light"
395+
}
396+
}
397+
]
398+
},
399+
{
400+
"cell_type": "markdown",
401+
"source": [
402+
"# PDF 보고 학습한 부분"
403+
],
404+
"metadata": {
405+
"id": "2F9EEsFynhh3"
406+
}
407+
},
408+
{
409+
"cell_type": "code",
410+
"source": [
411+
"data = []\n",
412+
"with open('iris.data', 'r') as f:\n",
413+
" for line in f:\n",
414+
" if line.strip():\n",
415+
" item = line.strip().split(\",\")\n",
416+
" data.append( ([float(val) for val in item[:-1]], item[-1]) )\n",
417+
"\n",
418+
"species = {s: i for i, s in enumerate(set(d[1] for d in data))}\n",
419+
"\n",
420+
"data = [(d[0], species[d[1]]) for d in data]"
421+
],
422+
"metadata": {
423+
"id": "r-1xm9pUnA81"
424+
},
425+
"execution_count": 10,
426+
"outputs": []
427+
},
428+
{
429+
"cell_type": "code",
430+
"source": [
431+
"data"
432+
],
433+
"metadata": {
434+
"colab": {
435+
"base_uri": "https://localhost:8080/"
436+
},
437+
"id": "ruvcb8rwnqH9",
438+
"outputId": "279d744f-fcff-4fe1-b80a-7d19cca26e02"
439+
},
440+
"execution_count": 11,
441+
"outputs": [
442+
{
443+
"output_type": "execute_result",
444+
"data": {
445+
"text/plain": [
446+
"[([5.1, 3.5, 1.4, 0.2], 1),\n",
447+
" ([4.9, 3.0, 1.4, 0.2], 1),\n",
448+
" ([4.7, 3.2, 1.3, 0.2], 1),\n",
449+
" ([4.6, 3.1, 1.5, 0.2], 1),\n",
450+
" ([5.0, 3.6, 1.4, 0.2], 1),\n",
451+
" ([5.4, 3.9, 1.7, 0.4], 1),\n",
452+
" ([4.6, 3.4, 1.4, 0.3], 1),\n",
453+
" ([5.0, 3.4, 1.5, 0.2], 1),\n",
454+
" ([4.4, 2.9, 1.4, 0.2], 1),\n",
455+
" ([4.9, 3.1, 1.5, 0.1], 1),\n",
456+
" ([5.4, 3.7, 1.5, 0.2], 1),\n",
457+
" ([4.8, 3.4, 1.6, 0.2], 1),\n",
458+
" ([4.8, 3.0, 1.4, 0.1], 1),\n",
459+
" ([4.3, 3.0, 1.1, 0.1], 1),\n",
460+
" ([5.8, 4.0, 1.2, 0.2], 1),\n",
461+
" ([5.7, 4.4, 1.5, 0.4], 1),\n",
462+
" ([5.4, 3.9, 1.3, 0.4], 1),\n",
463+
" ([5.1, 3.5, 1.4, 0.3], 1),\n",
464+
" ([5.7, 3.8, 1.7, 0.3], 1),\n",
465+
" ([5.1, 3.8, 1.5, 0.3], 1),\n",
466+
" ([5.4, 3.4, 1.7, 0.2], 1),\n",
467+
" ([5.1, 3.7, 1.5, 0.4], 1),\n",
468+
" ([4.6, 3.6, 1.0, 0.2], 1),\n",
469+
" ([5.1, 3.3, 1.7, 0.5], 1),\n",
470+
" ([4.8, 3.4, 1.9, 0.2], 1),\n",
471+
" ([5.0, 3.0, 1.6, 0.2], 1),\n",
472+
" ([5.0, 3.4, 1.6, 0.4], 1),\n",
473+
" ([5.2, 3.5, 1.5, 0.2], 1),\n",
474+
" ([5.2, 3.4, 1.4, 0.2], 1),\n",
475+
" ([4.7, 3.2, 1.6, 0.2], 1),\n",
476+
" ([4.8, 3.1, 1.6, 0.2], 1),\n",
477+
" ([5.4, 3.4, 1.5, 0.4], 1),\n",
478+
" ([5.2, 4.1, 1.5, 0.1], 1),\n",
479+
" ([5.5, 4.2, 1.4, 0.2], 1),\n",
480+
" ([4.9, 3.1, 1.5, 0.1], 1),\n",
481+
" ([5.0, 3.2, 1.2, 0.2], 1),\n",
482+
" ([5.5, 3.5, 1.3, 0.2], 1),\n",
483+
" ([4.9, 3.1, 1.5, 0.1], 1),\n",
484+
" ([4.4, 3.0, 1.3, 0.2], 1),\n",
485+
" ([5.1, 3.4, 1.5, 0.2], 1),\n",
486+
" ([5.0, 3.5, 1.3, 0.3], 1),\n",
487+
" ([4.5, 2.3, 1.3, 0.3], 1),\n",
488+
" ([4.4, 3.2, 1.3, 0.2], 1),\n",
489+
" ([5.0, 3.5, 1.6, 0.6], 1),\n",
490+
" ([5.1, 3.8, 1.9, 0.4], 1),\n",
491+
" ([4.8, 3.0, 1.4, 0.3], 1),\n",
492+
" ([5.1, 3.8, 1.6, 0.2], 1),\n",
493+
" ([4.6, 3.2, 1.4, 0.2], 1),\n",
494+
" ([5.3, 3.7, 1.5, 0.2], 1),\n",
495+
" ([5.0, 3.3, 1.4, 0.2], 1),\n",
496+
" ([7.0, 3.2, 4.7, 1.4], 2),\n",
497+
" ([6.4, 3.2, 4.5, 1.5], 2),\n",
498+
" ([6.9, 3.1, 4.9, 1.5], 2),\n",
499+
" ([5.5, 2.3, 4.0, 1.3], 2),\n",
500+
" ([6.5, 2.8, 4.6, 1.5], 2),\n",
501+
" ([5.7, 2.8, 4.5, 1.3], 2),\n",
502+
" ([6.3, 3.3, 4.7, 1.6], 2),\n",
503+
" ([4.9, 2.4, 3.3, 1.0], 2),\n",
504+
" ([6.6, 2.9, 4.6, 1.3], 2),\n",
505+
" ([5.2, 2.7, 3.9, 1.4], 2),\n",
506+
" ([5.0, 2.0, 3.5, 1.0], 2),\n",
507+
" ([5.9, 3.0, 4.2, 1.5], 2),\n",
508+
" ([6.0, 2.2, 4.0, 1.0], 2),\n",
509+
" ([6.1, 2.9, 4.7, 1.4], 2),\n",
510+
" ([5.6, 2.9, 3.6, 1.3], 2),\n",
511+
" ([6.7, 3.1, 4.4, 1.4], 2),\n",
512+
" ([5.6, 3.0, 4.5, 1.5], 2),\n",
513+
" ([5.8, 2.7, 4.1, 1.0], 2),\n",
514+
" ([6.2, 2.2, 4.5, 1.5], 2),\n",
515+
" ([5.6, 2.5, 3.9, 1.1], 2),\n",
516+
" ([5.9, 3.2, 4.8, 1.8], 2),\n",
517+
" ([6.1, 2.8, 4.0, 1.3], 2),\n",
518+
" ([6.3, 2.5, 4.9, 1.5], 2),\n",
519+
" ([6.1, 2.8, 4.7, 1.2], 2),\n",
520+
" ([6.4, 2.9, 4.3, 1.3], 2),\n",
521+
" ([6.6, 3.0, 4.4, 1.4], 2),\n",
522+
" ([6.8, 2.8, 4.8, 1.4], 2),\n",
523+
" ([6.7, 3.0, 5.0, 1.7], 2),\n",
524+
" ([6.0, 2.9, 4.5, 1.5], 2),\n",
525+
" ([5.7, 2.6, 3.5, 1.0], 2),\n",
526+
" ([5.5, 2.4, 3.8, 1.1], 2),\n",
527+
" ([5.5, 2.4, 3.7, 1.0], 2),\n",
528+
" ([5.8, 2.7, 3.9, 1.2], 2),\n",
529+
" ([6.0, 2.7, 5.1, 1.6], 2),\n",
530+
" ([5.4, 3.0, 4.5, 1.5], 2),\n",
531+
" ([6.0, 3.4, 4.5, 1.6], 2),\n",
532+
" ([6.7, 3.1, 4.7, 1.5], 2),\n",
533+
" ([6.3, 2.3, 4.4, 1.3], 2),\n",
534+
" ([5.6, 3.0, 4.1, 1.3], 2),\n",
535+
" ([5.5, 2.5, 4.0, 1.3], 2),\n",
536+
" ([5.5, 2.6, 4.4, 1.2], 2),\n",
537+
" ([6.1, 3.0, 4.6, 1.4], 2),\n",
538+
" ([5.8, 2.6, 4.0, 1.2], 2),\n",
539+
" ([5.0, 2.3, 3.3, 1.0], 2),\n",
540+
" ([5.6, 2.7, 4.2, 1.3], 2),\n",
541+
" ([5.7, 3.0, 4.2, 1.2], 2),\n",
542+
" ([5.7, 2.9, 4.2, 1.3], 2),\n",
543+
" ([6.2, 2.9, 4.3, 1.3], 2),\n",
544+
" ([5.1, 2.5, 3.0, 1.1], 2),\n",
545+
" ([5.7, 2.8, 4.1, 1.3], 2),\n",
546+
" ([6.3, 3.3, 6.0, 2.5], 0),\n",
547+
" ([5.8, 2.7, 5.1, 1.9], 0),\n",
548+
" ([7.1, 3.0, 5.9, 2.1], 0),\n",
549+
" ([6.3, 2.9, 5.6, 1.8], 0),\n",
550+
" ([6.5, 3.0, 5.8, 2.2], 0),\n",
551+
" ([7.6, 3.0, 6.6, 2.1], 0),\n",
552+
" ([4.9, 2.5, 4.5, 1.7], 0),\n",
553+
" ([7.3, 2.9, 6.3, 1.8], 0),\n",
554+
" ([6.7, 2.5, 5.8, 1.8], 0),\n",
555+
" ([7.2, 3.6, 6.1, 2.5], 0),\n",
556+
" ([6.5, 3.2, 5.1, 2.0], 0),\n",
557+
" ([6.4, 2.7, 5.3, 1.9], 0),\n",
558+
" ([6.8, 3.0, 5.5, 2.1], 0),\n",
559+
" ([5.7, 2.5, 5.0, 2.0], 0),\n",
560+
" ([5.8, 2.8, 5.1, 2.4], 0),\n",
561+
" ([6.4, 3.2, 5.3, 2.3], 0),\n",
562+
" ([6.5, 3.0, 5.5, 1.8], 0),\n",
563+
" ([7.7, 3.8, 6.7, 2.2], 0),\n",
564+
" ([7.7, 2.6, 6.9, 2.3], 0),\n",
565+
" ([6.0, 2.2, 5.0, 1.5], 0),\n",
566+
" ([6.9, 3.2, 5.7, 2.3], 0),\n",
567+
" ([5.6, 2.8, 4.9, 2.0], 0),\n",
568+
" ([7.7, 2.8, 6.7, 2.0], 0),\n",
569+
" ([6.3, 2.7, 4.9, 1.8], 0),\n",
570+
" ([6.7, 3.3, 5.7, 2.1], 0),\n",
571+
" ([7.2, 3.2, 6.0, 1.8], 0),\n",
572+
" ([6.2, 2.8, 4.8, 1.8], 0),\n",
573+
" ([6.1, 3.0, 4.9, 1.8], 0),\n",
574+
" ([6.4, 2.8, 5.6, 2.1], 0),\n",
575+
" ([7.2, 3.0, 5.8, 1.6], 0),\n",
576+
" ([7.4, 2.8, 6.1, 1.9], 0),\n",
577+
" ([7.9, 3.8, 6.4, 2.0], 0),\n",
578+
" ([6.4, 2.8, 5.6, 2.2], 0),\n",
579+
" ([6.3, 2.8, 5.1, 1.5], 0),\n",
580+
" ([6.1, 2.6, 5.6, 1.4], 0),\n",
581+
" ([7.7, 3.0, 6.1, 2.3], 0),\n",
582+
" ([6.3, 3.4, 5.6, 2.4], 0),\n",
583+
" ([6.4, 3.1, 5.5, 1.8], 0),\n",
584+
" ([6.0, 3.0, 4.8, 1.8], 0),\n",
585+
" ([6.9, 3.1, 5.4, 2.1], 0),\n",
586+
" ([6.7, 3.1, 5.6, 2.4], 0),\n",
587+
" ([6.9, 3.1, 5.1, 2.3], 0),\n",
588+
" ([5.8, 2.7, 5.1, 1.9], 0),\n",
589+
" ([6.8, 3.2, 5.9, 2.3], 0),\n",
590+
" ([6.7, 3.3, 5.7, 2.5], 0),\n",
591+
" ([6.7, 3.0, 5.2, 2.3], 0),\n",
592+
" ([6.3, 2.5, 5.0, 1.9], 0),\n",
593+
" ([6.5, 3.0, 5.2, 2.0], 0),\n",
594+
" ([6.2, 3.4, 5.4, 2.3], 0),\n",
595+
" ([5.9, 3.0, 5.1, 1.8], 0)]"
596+
]
597+
},
598+
"metadata": {},
599+
"execution_count": 11
600+
}
601+
]
602+
},
603+
{
604+
"cell_type": "code",
605+
"source": [
606+
"plt.scatter([d[0][0] for d in data], [d[0][1] for d in data], c = [d[1] for d in data], alpha = 0.3)\n",
607+
"plt.show()"
608+
],
609+
"metadata": {
610+
"colab": {
611+
"base_uri": "https://localhost:8080/",
612+
"height": 268
613+
},
614+
"id": "xrNJcYmknrnT",
615+
"outputId": "4acb386d-aa6d-4c59-93df-fbeff298403f"
616+
},
617+
"execution_count": 12,
618+
"outputs": [
619+
{
620+
"output_type": "display_data",
621+
"data": {
622+
"text/plain": [
623+
"<Figure size 432x288 with 1 Axes>"
624+
],
625+
"image/png": "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\n"
626+
},
627+
"metadata": {
628+
"needs_background": "light"
629+
}
630+
}
631+
]
632+
},
633+
{
634+
"cell_type": "code",
635+
"source": [
636+
"# train data와 test data로 분리\n",
637+
"\n",
638+
"random.shuffle(data)\n",
639+
"\n",
640+
"train = data[:-30]\n",
641+
"test = data[-30:]"
642+
],
643+
"metadata": {
644+
"id": "fGg4FZMGn9nJ"
645+
},
646+
"execution_count": 13,
647+
"outputs": []
648+
},
649+
{
650+
"cell_type": "code",
651+
"source": [
652+
"print(train)\n",
653+
"print(test)"
654+
],
655+
"metadata": {
656+
"colab": {
657+
"base_uri": "https://localhost:8080/"
658+
},
659+
"id": "LiSBw3FxoCuV",
660+
"outputId": "9fde4643-bb42-490f-b629-7eb370233c51"
661+
},
662+
"execution_count": 14,
663+
"outputs": [
664+
{
665+
"output_type": "stream",
666+
"name": "stdout",
667+
"text": [
668+
"[([4.8, 3.1, 1.6, 0.2], 1), ([6.4, 2.7, 5.3, 1.9], 0), ([5.4, 3.4, 1.5, 0.4], 1), ([5.1, 3.5, 1.4, 0.2], 1), ([6.2, 2.9, 4.3, 1.3], 2), ([4.3, 3.0, 1.1, 0.1], 1), ([6.0, 3.0, 4.8, 1.8], 0), ([6.4, 2.9, 4.3, 1.3], 2), ([5.8, 2.7, 3.9, 1.2], 2), ([4.9, 3.1, 1.5, 0.1], 1), ([4.4, 2.9, 1.4, 0.2], 1), ([4.6, 3.6, 1.0, 0.2], 1), ([6.0, 2.7, 5.1, 1.6], 2), ([4.8, 3.0, 1.4, 0.3], 1), ([7.9, 3.8, 6.4, 2.0], 0), ([6.7, 3.1, 5.6, 2.4], 0), ([6.7, 3.3, 5.7, 2.1], 0), ([6.5, 3.0, 5.5, 1.8], 0), ([6.7, 3.0, 5.2, 2.3], 0), ([5.5, 2.4, 3.8, 1.1], 2), ([6.4, 3.2, 4.5, 1.5], 2), ([5.0, 3.3, 1.4, 0.2], 1), ([6.3, 2.5, 4.9, 1.5], 2), ([5.7, 2.6, 3.5, 1.0], 2), ([7.7, 2.8, 6.7, 2.0], 0), ([5.9, 3.0, 4.2, 1.5], 2), ([5.2, 2.7, 3.9, 1.4], 2), ([5.7, 2.8, 4.1, 1.3], 2), ([6.8, 2.8, 4.8, 1.4], 2), ([6.3, 2.5, 5.0, 1.9], 0), ([4.8, 3.0, 1.4, 0.1], 1), ([7.4, 2.8, 6.1, 1.9], 0), ([5.2, 4.1, 1.5, 0.1], 1), ([6.5, 2.8, 4.6, 1.5], 2), ([5.4, 3.9, 1.7, 0.4], 1), ([5.7, 2.5, 5.0, 2.0], 0), ([5.8, 2.7, 4.1, 1.0], 2), ([6.2, 2.2, 4.5, 1.5], 2), ([6.9, 3.2, 5.7, 2.3], 0), ([6.3, 2.3, 4.4, 1.3], 2), ([6.2, 3.4, 5.4, 2.3], 0), ([6.9, 3.1, 5.4, 2.1], 0), ([6.5, 3.2, 5.1, 2.0], 0), ([7.7, 3.8, 6.7, 2.2], 0), ([5.0, 3.0, 1.6, 0.2], 1), ([6.0, 2.2, 4.0, 1.0], 2), ([5.9, 3.2, 4.8, 1.8], 2), ([5.4, 3.4, 1.7, 0.2], 1), ([6.2, 2.8, 4.8, 1.8], 0), ([6.8, 3.0, 5.5, 2.1], 0), ([6.0, 2.2, 5.0, 1.5], 0), ([5.1, 3.4, 1.5, 0.2], 1), ([5.5, 2.3, 4.0, 1.3], 2), ([5.6, 3.0, 4.5, 1.5], 2), ([6.6, 2.9, 4.6, 1.3], 2), ([6.3, 3.3, 6.0, 2.5], 0), ([5.5, 2.5, 4.0, 1.3], 2), ([6.1, 3.0, 4.6, 1.4], 2), ([7.3, 2.9, 6.3, 1.8], 0), ([5.1, 2.5, 3.0, 1.1], 2), ([6.3, 3.3, 4.7, 1.6], 2), ([6.1, 2.8, 4.7, 1.2], 2), ([5.0, 3.5, 1.6, 0.6], 1), ([5.9, 3.0, 5.1, 1.8], 0), ([5.0, 2.0, 3.5, 1.0], 2), ([6.9, 3.1, 5.1, 2.3], 0), ([5.1, 3.8, 1.6, 0.2], 1), ([5.7, 4.4, 1.5, 0.4], 1), ([5.4, 3.0, 4.5, 1.5], 2), ([4.9, 2.5, 4.5, 1.7], 0), ([6.8, 3.2, 5.9, 2.3], 0), ([6.1, 3.0, 4.9, 1.8], 0), ([5.0, 3.6, 1.4, 0.2], 1), ([7.7, 3.0, 6.1, 2.3], 0), ([5.6, 2.7, 4.2, 1.3], 2), ([6.5, 3.0, 5.2, 2.0], 0), ([4.6, 3.2, 1.4, 0.2], 1), ([6.1, 2.6, 5.6, 1.4], 0), ([6.1, 2.9, 4.7, 1.4], 2), ([5.6, 2.5, 3.9, 1.1], 2), ([5.7, 3.8, 1.7, 0.3], 1), ([6.0, 3.4, 4.5, 1.6], 2), ([4.8, 3.4, 1.6, 0.2], 1), ([5.7, 2.9, 4.2, 1.3], 2), ([7.0, 3.2, 4.7, 1.4], 2), ([6.4, 3.2, 5.3, 2.3], 0), ([5.8, 2.6, 4.0, 1.2], 2), ([5.1, 3.3, 1.7, 0.5], 1), ([5.0, 3.5, 1.3, 0.3], 1), ([6.7, 3.1, 4.7, 1.5], 2), ([5.5, 4.2, 1.4, 0.2], 1), ([4.9, 2.4, 3.3, 1.0], 2), ([5.8, 2.7, 5.1, 1.9], 0), ([4.4, 3.2, 1.3, 0.2], 1), ([6.3, 3.4, 5.6, 2.4], 0), ([5.3, 3.7, 1.5, 0.2], 1), ([5.1, 3.8, 1.9, 0.4], 1), ([7.1, 3.0, 5.9, 2.1], 0), ([4.7, 3.2, 1.3, 0.2], 1), ([6.5, 3.0, 5.8, 2.2], 0), ([7.2, 3.0, 5.8, 1.6], 0), ([6.4, 3.1, 5.5, 1.8], 0), ([6.7, 3.3, 5.7, 2.5], 0), ([5.1, 3.5, 1.4, 0.3], 1), ([5.4, 3.7, 1.5, 0.2], 1), ([4.6, 3.4, 1.4, 0.3], 1), ([5.6, 2.8, 4.9, 2.0], 0), ([5.7, 3.0, 4.2, 1.2], 2), ([6.7, 3.1, 4.4, 1.4], 2), ([5.5, 2.4, 3.7, 1.0], 2), ([6.0, 2.9, 4.5, 1.5], 2), ([5.5, 2.6, 4.4, 1.2], 2), ([6.4, 2.8, 5.6, 2.1], 0), ([5.0, 3.2, 1.2, 0.2], 1), ([5.8, 2.7, 5.1, 1.9], 0), ([4.8, 3.4, 1.9, 0.2], 1), ([6.1, 2.8, 4.0, 1.3], 2), ([4.4, 3.0, 1.3, 0.2], 1), ([5.0, 3.4, 1.6, 0.4], 1), ([4.6, 3.1, 1.5, 0.2], 1)]\n",
669+
"[([5.8, 2.8, 5.1, 2.4], 0), ([6.3, 2.8, 5.1, 1.5], 0), ([7.6, 3.0, 6.6, 2.1], 0), ([5.0, 2.3, 3.3, 1.0], 2), ([4.9, 3.1, 1.5, 0.1], 1), ([6.9, 3.1, 4.9, 1.5], 2), ([5.2, 3.4, 1.4, 0.2], 1), ([5.4, 3.9, 1.3, 0.4], 1), ([6.6, 3.0, 4.4, 1.4], 2), ([7.2, 3.6, 6.1, 2.5], 0), ([5.7, 2.8, 4.5, 1.3], 2), ([4.7, 3.2, 1.6, 0.2], 1), ([5.6, 3.0, 4.1, 1.3], 2), ([6.3, 2.7, 4.9, 1.8], 0), ([5.8, 4.0, 1.2, 0.2], 1), ([4.9, 3.1, 1.5, 0.1], 1), ([7.2, 3.2, 6.0, 1.8], 0), ([5.2, 3.5, 1.5, 0.2], 1), ([6.7, 3.0, 5.0, 1.7], 2), ([5.1, 3.8, 1.5, 0.3], 1), ([7.7, 2.6, 6.9, 2.3], 0), ([6.4, 2.8, 5.6, 2.2], 0), ([6.7, 2.5, 5.8, 1.8], 0), ([6.3, 2.9, 5.6, 1.8], 0), ([4.5, 2.3, 1.3, 0.3], 1), ([5.0, 3.4, 1.5, 0.2], 1), ([5.1, 3.7, 1.5, 0.4], 1), ([4.9, 3.0, 1.4, 0.2], 1), ([5.6, 2.9, 3.6, 1.3], 2), ([5.5, 3.5, 1.3, 0.2], 1)]\n"
670+
]
671+
}
672+
]
673+
},
674+
{
675+
"cell_type": "code",
676+
"source": [
677+
"def distance(a, b): \n",
678+
"\n",
679+
" s = 0\n",
680+
" for i in range(len(a[0])):\n",
681+
" s += (a[0][i] - b[0][i]) ** 2\n",
682+
"\n",
683+
" return s ** 0.5\n",
684+
"\n",
685+
"\n",
686+
"def knn_classify(k, query, train):\n",
687+
" knns = sorted((distance(point, query), point) for point in train)[:k]\n",
688+
"\n",
689+
" scores = {} # 거리에따라 가중치를 주어 점수 계산 \n",
690+
"\n",
691+
" for dist, point in knns:\n",
692+
" scores[point[1]] = scores.get(point[1], 0) + 1/(1+dist)\n",
693+
"\n",
694+
" resp, score = max(scores.items(), key=lambda x: x[1])\n",
695+
"\n",
696+
" return resp"
697+
],
698+
"metadata": {
699+
"id": "kfh8yMxIoFLq"
700+
},
701+
"execution_count": 16,
702+
"outputs": []
703+
},
704+
{
705+
"cell_type": "code",
706+
"source": [
707+
"k= 3\n",
708+
"correct = sum(1 for t in test if knn_classify(k, t, train) == t[1]) \n",
709+
"\n",
710+
"accuracy = correct/len(test)\n",
711+
"\n",
712+
"print(\"accuracy:\", accuracy)"
713+
],
714+
"metadata": {
715+
"colab": {
716+
"base_uri": "https://localhost:8080/"
717+
},
718+
"id": "pqjEyACCoLE_",
719+
"outputId": "0ba2cde7-2192-4501-e332-f09fd5782aa0"
720+
},
721+
"execution_count": 17,
722+
"outputs": [
723+
{
724+
"output_type": "stream",
725+
"name": "stdout",
726+
"text": [
727+
"accuracy: 0.9333333333333333\n"
728+
]
729+
}
730+
]
731+
},
732+
{
733+
"cell_type": "code",
734+
"source": [
735+
"# 최적의 k 찾기\n",
736+
"\n",
737+
"num_trials = 100\n",
738+
"train_size = int(len(data) * 0.8)\n",
739+
"test_size = len(data) - train_size\n",
740+
"corrects = [0] * 20\n",
741+
"\n",
742+
"for i in tqdm(range(num_trials)):\n",
743+
"\n",
744+
" random.shuffle(data)\n",
745+
" train = data[:train_size]\n",
746+
" test = data[train_size:]\n",
747+
"\n",
748+
" for k in range(1,20):\n",
749+
" corrects[k] += sum(1 for t in test if knn_classify(k, t, train) == t[1])\n",
750+
"\n",
751+
"for k in range(1, 20):\n",
752+
" corrects[k] /= num_trials * test_size\n",
753+
"\n",
754+
"plt.plot(range(1,20), corrects[1:], '-x')\n",
755+
"plt.show()"
756+
],
757+
"metadata": {
758+
"colab": {
759+
"base_uri": "https://localhost:8080/",
760+
"height": 283
761+
},
762+
"id": "rjGz1eZ7oZBA",
763+
"outputId": "c0444b7c-9740-4913-8cdf-820b112db24e"
764+
},
765+
"execution_count": 18,
766+
"outputs": [
767+
{
768+
"output_type": "stream",
769+
"name": "stderr",
770+
"text": [
771+
"100%|██████████| 100/100 [00:15<00:00, 6.62it/s]\n"
772+
]
773+
},
774+
{
775+
"output_type": "display_data",
776+
"data": {
777+
"text/plain": [
778+
"<Figure size 432x288 with 1 Axes>"
779+
],
780+
"image/png": "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\n"
781+
},
782+
"metadata": {
783+
"needs_background": "light"
784+
}
785+
}
786+
]
787+
},
788+
{
789+
"cell_type": "code",
790+
"source": [],
791+
"metadata": {
792+
"id": "6JX4zAZip7YP"
793+
},
794+
"execution_count": null,
795+
"outputs": []
796+
}
797+
]
798+
}

0 commit comments

Comments
 (0)
Please sign in to comment.