๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ต์œก/์ŠคํŒŒ๋ฅดํƒ€

[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. ์ปจ๋””์…˜ ๊ด€๋ฆฌ๋ฅผ ์ž˜ํ•˜์ž