๊ต์ก/์คํ๋ฅดํ
[TIL] ๋ด์ผ๋ฐฐ์์บ ํ AI 9๊ธฐ - 12ํ
by gomdeng
2024. 12. 13.
๐ถ ํ์ต ๋ฒ์
- ์๊ณ ๋ฆฌ์ฆ, SQL ์ฝ๋์นดํ
- ๋จธ์ ๋ฌ๋ ๊ฐ์ธ๊ณต๋ถ
๐ถ ๊ณต๋ถ ๋ด์ฉ
โจ ์ฝ๋์นดํ
๐ฉ ๋ฌธ์
# https://school.programmers.co.kr/learn/courses/30/lessons/120583 (์ค๋ณต๋ ์ซ์ ๊ฐ์)
๐ฉ ๋ต์
# 1. for๋ฌธ ์ฌ์ฉ
def solution(array, n):
answer = 0
for i in array:
if i == n:
answer += 1
return answer
# 2. count() ํจ์ ์ฌ์ฉ
def solution(array, n):
return array.count(n)
๐ฉ ์ถ๊ฐ
# count() ํจ์ ๊ตฌํ๋ถ
static PyObject *
list_count(PyListObject *self, PyObject *value)
{
Py_ssize_t count = 0;
Py_ssize_t i;
for (i = 0; i < PyList_GET_SIZE(self); i++) {
if (PyObject_RichCompareBool(PyList_GET_ITEM(self, i), value, Py_EQ) > 0) {
count++;
}
}
return PyLong_FromSsize_t(count);
}
โจ ๋จธ์ ๋ฌ๋
โ๏ธ k-์ต๊ทผ์ ์ด์(k-Nearest Neighbors) ์๊ณ ๋ฆฌ์ฆ
๐ฉ ๊ฐ๋
> ์ด๋ค ๋ฐ์ดํฐ์ ๋ต์ ๊ตฌํ ๋ ์ฃผ์์ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ณ ๋ค์๋ฅผ ์ฐจ์งํ๋ ๊ฒ์ ์ ๋ต์ผ๋ก ์ฌ์ฉ
> ๊ฐ์ฅ ๊ฐ๊น์ด ์ง์ ๊ฑฐ๋ฆฌ์ ์ด๋ค ๋ฐ์ดํฐ๊ฐ ์๋์ง ํ์ธ
• ์กฐ๊ฑด
- ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ํ์
• ๋จ์
- ๋ฐ์ดํฐ๊ฐ ์์ฃผ ๋ง์ ๊ฒฝ์ฐ, ์ฌ์ฉํ๊ธฐ ์ด๋ ค์
- ๋ฐ์ดํฐ ํฌ๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ง์ด ํ์
- ์ง์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํ๋๋ฐ ๋ง์ ์๊ฐ์ด ํ์
๐ฉ ํจ์
> KNeighborsClassifier
> fit() : ๋ชจ๋ธ ํ์ต
> score() : ๋ชจ๋ธ ํ๊ฐ
- 0๊ณผ 1์ฌ์ด์ ๊ฐ์ ๋ฐํ => ํด๋น ๊ฐ์ ์ ํ๋(accuracy)
- 1์ผ ์๋ก ์ ํ > predict() : ์๋ก์ด ๋ฐ์ดํฐ์ ์ ๋ต์ ์์ธก
import matplotlib.pyplot as plt # ๋งทํ๋กฏ๋ฆฝ
import numpy as np # ๋ํ์ด
from sklearn.neighbors import KNeighborsClassifier # k-์ต๊ทผ์ ์ด์ ๋ชจ๋ธ
# ๋ฐ์ดํฐ (ex. ์์ ๊ธธ์ด, ๋ฌด๊ฒ)
fish_data = [[l, w] for l, w in zip(fish_length, fish_weight)]
fish_target = [1] * 35 + [0] * 14
# NumPy๋ก Input, Target ๋ฐฐ์ด ์์ฑ
input_arr = np.array(fish_data)
target_arr = np.array(fish_target)
# ๋ฐ์ดํฐ ์๊ธฐ (์ํ๋ง ํธํฅ ๋ฐฉ์ง)
np.random.seed(42)
index = np.arange(49)
np.random.shuffle(index)
# ํ๋ จ ๋ฐ์ดํฐ ์์ฑ
input_data = input_arr[index[:35]]
input_target = target_arr[index[:35]]
# ํ๊ฐ ๋ฐ์ดํฐ ์์ฑ
test_data = input_arr[index[35:]]
test_target = target_arr[index[35:]]
# KNeighborsClassifier ํ์ต ๋ฐ ํ๊ฐ
kn = KNeighborsClassifier()
kn.fit(input_data, input_target)
kn.score(test_data, test_target)
# ์ฐ์ ๋ ์๊ฐํ
plt.scatter(input_data[:,0], input_data[:,1])
plt.scatter(test_data[:,0], test_data[:,1])
plt.xlabel('length')
plt.ylabel('weight')
plt.show()
๐ถ ๋๋์
1. ๊ณต๋ถ ๋ฐ์๋ฐ, ์๊พธ ๋๋ฌ์ค๋ผ๋ ๋ถ์ด ๊ณ์ ๋ค. ๋๋ฌ๊ฐ์ผ๊ฒ ๋ค.
2. 12์๊ฐ์ด ์งง๊ณ ๋ ๊ธธ๋ค.
3. ์ปจ๋์
๊ด๋ฆฌ๋ฅผ ์ํ์