๐ถ ํ์ต ๋ฒ์
- ํ์ต๋ฐ ๊ณผ์ (ํ์ด์ฌ)
- AI ์ํ ๊ฐ์ข
- ๋จธ์ ๋ฌ๋ ํ์ต
๐ถ ๊ณต๋ถ ๋ด์ฉ
โจ ํ์ต๋ฐ ๊ณผ์ - ํ์ด์ฌ ๋ฌธ์ (ํจ์)
โ๏ธ # ์์ - 73
# 1000๊ฐ ์ด์์ ์ซ์๋ฅผ ๋ฐ์ ๋ํด์ฃผ๋ ํจ์ ๋ง๋์ธ์
def add(*args):
print(sum(args))
add(*range(1000))
# [Error Case]
# ---------------------
# def add(*args):
# print(sum(args))
#
# add(range(1000))
# ---------------------
# add() ํธ์ถ๋ถ์ add(range(1000)) ๋ค์๊ณผ ๊ฐ์ด ๋์ง ๊ฒฝ์ฐ,
# ๊ฐ๋ณ ์ธ์ ๊ฐ์ด ์๋ ๊ฐ์ฒด ์์ฒด๊ฐ ๋์ด๊ฐ๊ฒ ๋๋ค. (๊ทธ๋์ sum์์ ์๋ฌ ๋ฐ์)
# ์ด๋ฅผ ์์ *๋ฅผ ๋ถ์์ผ๋ก ์ธํจํน ํ, ์ฒ๋ฆฌํ๋ฉด ์๋ฌ๊ฐ ๋์ง ์๋๋ค.
#
# [๊ฒฐ๋ก ]
# *๋ Python์์ ๋งค์ฐ ๊ฐ๋ ฅํ ๋๊ตฌ๋ก, ๋ค์ํ ์ํฉ์์ ์ ์ฉํ๊ฒ ํ์ฉ
# Iterable(์: ๋ฆฌ์คํธ, ํํ, range)์ ์์๋ฅผ ํ์ด์ ํจ์์ ์ ๋ฌ
โ๏ธ ์์ - 78
# ๋ฌธ์์ด์์ ๋ชจ์์ ๊ฐ์๋ฅผ ์ธ์ด ๋ฐํํ๋ ํจ์
def count_vowels(s):
vowels = "aeiouAEIOU" # ๋์๋ฌธ์ ๋ชจ์ ์ ์
return sum(1 for char in s if char in vowels)
print(count_vowels("hello world"))
โ๏ธ ์์ - 88
# ์ ์๋ฅผ ๋ฐ์ ๊ทธ ์ ์์ ํฉํ ๋ฆฌ์ผ์ ๊ณ์ฐํ๋ ์ฌ๊ทํจ์
def factorial(n):
if n == 1:
return 1
return n * factorial(n-1)
factorial(3)
โ๏ธ ์์ - 91
# ์ซ์ ๋ฆฌ์คํธ๋ฅผ ๋ฐ์ ์ฌ๊ท์ ์ผ๋ก ์ต๋ ๊ฐ์ ์ฐพ๋ ํจ์
def lstMax(lst):
if len(lst) == 0:
return 0
return max(lst[0], lstMax(lst[1:]))
lstMax([1, 5, 4, 3, 4])
for v in data.values():
# isinstance :: ๊ฐ์ด ์ซ์์ธ์ง ํ์ธ
if isinstance(v, (int, float)): # ์ซ์์ด๋ฉด ๊ทธ๋๋ก ๋ํ๊ธฐ
answer += v
else:
answer += int(v) # ์ซ์๊ฐ ์๋๋ฉด ํ๋ณํ
print(answer)
โจ k-์ต๊ทผ์ ์ด์ ํ๊ท ์ค์ต
import matplotlib.pyplot as plt # ๋งทํ๋กฏ๋ฆฝ
import numpy as np # ๋ํ์ด
from sklearn.neighbors import KNeighborsRegressor # k-์ต๊ทผ์ ์ด์ ํ๊ท ๋ชจ๋ธ
from sklearn.model_selection import train_test_split # ํ๋ จ/ํ
์คํธ ๋ชจ๋ธ ์์ฑ
# ์ํ ๋ฐ์ดํฐ (๊ธธ์ด)
perch_length = np.array([8.4, 13.7, 15.0, 16.2, 17.4, 18.0, 18.7, 19.0, 19.6, 20.0, 21.0,
21.0, 21.0, 21.3, 22.0, 22.0, 22.0, 22.0, 22.0, 22.5, 22.5, 22.7,
23.0, 23.5, 24.0, 24.0, 24.6, 25.0, 25.6, 26.5, 27.3, 27.5, 27.5,
27.5, 28.0, 28.7, 30.0, 32.8, 34.5, 35.0, 36.5, 36.0, 37.0, 37.0,
39.0, 39.0, 39.0, 40.0, 40.0, 40.0, 40.0, 42.0, 43.0, 43.0, 43.5,
44.0])
# ์ํ ๋ฐ์ดํฐ (๋ฌด๊ฒ)
perch_weight = np.array([5.9, 32.0, 40.0, 51.5, 70.0, 100.0, 78.0, 80.0, 85.0, 85.0, 110.0,
115.0, 125.0, 130.0, 120.0, 120.0, 130.0, 135.0, 110.0, 130.0,
150.0, 145.0, 150.0, 170.0, 225.0, 145.0, 188.0, 180.0, 197.0,
218.0, 300.0, 260.0, 265.0, 250.0, 250.0, 300.0, 320.0, 514.0,
556.0, 840.0, 685.0, 700.0, 700.0, 690.0, 900.0, 650.0, 820.0,
850.0, 900.0, 1015.0, 820.0, 1100.0, 1000.0, 1100.0, 1000.0,
1000.0])
# ํ๋ จ/ํ
์คํธ ๋ฐ์ดํฐ ์์ฑ (ํ๊ฒ ํฌํจ)
train_input, test_input, train_target, test_target = train_test_split(perch_length, perch_weight, random_state=42)
print(train_input.shape, test_input.shape)
print(train_target.shape, test_target.shape)
# ํ๋ จ/ํ
์คํธ ๋ฐ์ดํฐ ๊ตฌ์กฐ ๋ณ๊ฒฝ (1์ฐจ์ → 2์ฐจ์)
train_input = train_input.reshape(-1, 1)
test_input = test_input.reshape(-1, 1)
print(train_input.shape, test_input.shape)
# k-์ต๊ทผ์ ์ด์ ๋ชจ๋ธ ์์ฑ (์ด์: 3์ผ๋ก ์ค์ )
knr = KNeighborsRegressor(n_neighbors=3)
# ํ๋ จ ๋ฐ์ดํฐ ํ์ต
knr.fit(train_input, train_target)
# ํ
์คํธ ๋ฐ์ดํฐ ํ๊ฐ
print(knr.score(test_input, test_target)) # 0.9746459963987609
# ๋ฐ์ดํฐ ์์ธก (50์ผ๋ก ์์ธก)
print(knr.predict([[50]])) # 1033.33333333
# ์ด์ ๊ฑฐ๋ฆฌ ๋ฐ ์ธ๋ฑ์ค ๊ตฌํ๊ธฐ (3์ผ๋ก ์ค์ ๋์ด ์์)
distances, indexes = knr.kneighbors([[50]])
print(distances) # [[6. 7. 7.]]
print(indexes) # [[34 8 14]]
# ์ด์ ์ํ์ ํ๊น์ ํ๊ท (์์ธก๊ฐ๊ณผ ๋์ผํจ์ ์ ์ ์๋ค.)
print(np.mean(train_target[indexes])) # 1033.3333333333333
# ์๊ฐํ (๊ธธ์ด๊ฐ ์ปค์ง์๋ก ๋ฌด๊ฒ๊ฐ ์ฆ๊ฐํ๋ ๊ฒฝํฅ ํ์ธ ๊ฐ๋ฅ)
plt.scatter(train_input, train_target)
plt.scatter(test_input, test_target)
plt.scatter(train_input[indexes], train_target[indexes], marker='D')
plt.scatter(50, 1033, marker='^')
plt.xlabel('length')
plt.ylabel('weight')
plt.show()
์ค์ต์ ํ๋ฉด์, ์ผ๋ฐ ๋ชจ๋ธ๊ณผ ํ๊ท ๋ชจ๋ธ์ ์ฐจ์ด์ ์ ์ ๋๋ก ์๊ฐํ์ง ์๋ค๊ฐ
์์ฒญ ๊ณ ์์ ํ๋ค. ๊ณต๋ถ๋ฅผ ์งํํ ๋, ์ด์ ์ ๋ด์ฉ์ ๋ถ๋ช
ํ ์ธ์งํ๋ฉด์ ์์ผ ๋๋
์ค์์ฑ์ ํ๋ฒ ๋ ๊นจ๋ฌ์ผ๋ฉฐ ์ค์ต์ ๋ง๋ฌด๋ฆฌ ํ๋ค.
๐ถ ๋๋์
1. ๊ฐ์ธ๊ณผ์ ๊ฐ ์์ํด๋ณผ๊น? (๐ฃ ๐ฃ )
2. ์ํ์ ๋ณธ๊ฒฉ์ ์ผ๋ก ์์ํด๋ด์ผ๊ฒ ๋ค.. (์ํฌ์์ ์
๋ณด.. ๐ฃ ๐ฃ ๐ฃ )
3. ์ ๋
๋จธ๋ฆฌ์ ์๋ค์ด์ค๋ ์ค๋.. (์๋ผ์ ์ ์ ์ ์ ์ ๐ฃ ๐ฃ ๐ฃ ๐ฃ ๐ฃ )