๋ฐ์ํ
K-์ต๊ทผ์ ์ด์์ ํ๊ณ
K-์ต๊ทผ์ ์ด์ ๋ชจ๋ธ์ ํ๊ณ๋ ๋ง์ฝ ์๋ก์ด ์ํ์ ๊ฐ์ด Training_set์ ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ฉด ์๋ฑํ ๊ฐ์ ์์ธกํ ์ ์์ต๋๋ค.
- ํ๋ฒ ์์๋ณด๊ธฐ ์ํ์ฌ ์ ์ ์ฌ์ฉํ ๋ฐ์ดํฐ๋ ๋ชจ๋ธ์ ์ค๋นํด์ ํ๋ฒ ๋๋ ค๋ณด๊ฒ ์ต๋๋ค.
import numpy as np
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])
- ์ ์ด๋ ๋๊ฐ์ด ๋ฐ์ดํฐ๋ฅผ Training_set, Test_set๋ก ๋๋๊ณ , ํน์ฑ ๋ฐ์ดํฐ๋ 2์ฐจ์ ๋ฐฐ์ด๋ก ๋ณํํด์ ํ์ต์์ผ๋ณด๊ฒ ์ต๋๋ค.
# Scikit-learn ํ๋ จ์ธํธ๋ 2์ฐจ์ ๋ฐฐ์ด์ด์ฌ์ผ ํจ์ผ๋ก, Numpy์ reshape method๋ฅผ ์ฌ์ฉํด์ 2์ฐจ์์ผ๋ก ๋ด๊ฟ์ค
from sklearn.model_selection import train_test_split
train_input, test_input, train_target, test_target = train_test_split(perch_length, perch_weight, random_state=42)
train_input = train_input.reshape(-1, 1) # ์ด์ด ํ๋, ๋จ์ ์ฐจ์์ ๊ฐ์๋ ํ๋๊ฐ ๋๋ค.
test_input = test_input.reshape(-1, 1)
print(train_input.shape, test_input.shape)
(42, 1) (14, 1) #(42,1) - Training_set ๋ฐฐ์ด, #(14,1) - Test_set ๋ฐฐ์ด
from sklearn.neighbors import KNeighborsRegressor
knr = KNeighborsRegressor(n_neighbors=3) # class ๊ฐ์ฒด ํ ๋น
# k-์ต๊ทผ์ ์ด์ ํ๊ท ๋ชจ๋ธ์ ํ๋ จํฉ๋๋ค.
knr.fit(train_input, train_target) # train, target ๋ฐ์ดํฐ ์ ๋ฌ & ํ๋ จ
# ํ์ต์ํจ ๋ชจ๋ธ์ ์ฌ์ฉํด์ ๊ธธ์ด๊ฐ 50cm์ธ ๋์ด์ ๋ฌด๊ฒ ์์ธก
print(knr.predict([[50]]))
[1033.33333333]
- ์ด ๋ชจ๋ธ์ 50cm์ ๋์ด์ ๋ฌด๊ฒ๋ฅผ 1033g ์ ๋๋ก ์์ธก ํ๋ค๊ณ ํ์ง๋ฉด, ์ค์ ๋ก๋ ๋ฌด๊ฒ๊ฐ ๋ ๋๊ฐ๋ค๊ณ ํฉ๋๋ค.
- ๊ทธ๋์ ํ๋ฒ ์ฐ์ ๋ ๊ทธ๋ํ๋ฅผ ๋ง๋ค์ด์ ๋ณด๊ฒ ์ต๋๋ค.
import matplotlib.pyplot as plt
# 50cm ๋์ด์ ์ด์์ ๊ตฌํฉ๋๋ค.
distances, indexes = knr.kneighbors([[50]])
# ํ๋ จ ์ธํธ์ ์ฐ์ ๋๋ฅผ ๊ทธ๋ฆฝ๋๋ค.
plt.scatter(train_input, train_target)
# ํ๋ จ ์ธํธ ์ค์์ ์ด์ ์ํ๋ง ๋ค์ ๊ทธ๋ฆฝ๋๋ค.
plt.scatter(train_input[indexes], train_target[indexes], marker='D')
# 50cm ๋์ด ๋ฐ์ดํฐ
plt.scatter(50, 1033, marker='^')
plt.xlabel('length')
plt.ylabel('weight')
plt.show()
- ์ฌ๊ธฐ์ ๊ธธ์ด๊ฐ 50cm์ด๊ณ , ๋ฌด๊ฒ๊ฐ 1,033์ธ ๋์ด๋ ์ธ๋ชจ ๋ชจ์์ marker๋ก ํ์๋์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทผ์ฒ์ ์๋ ์ํ๋ค์ ๋ค์ด์๋ชฌ๋ ๋ชจ์์ marker๋ก ํ์๋์์ต๋๋ค.
- ์ฐ์ ๋ ๊ทธ๋ํ๋ฅผ ๋ณด๋ฉด์ ์ ์ ์๋๊ฒ์ ๋์ด์ ๊ธธ์ด๊ฐ ๋์ด๋ ์๋ก, ๋ฌด๊ฒ๊ฐ ์ฆ๊ฐํ๋ ๊ฒฝํฅ์ด ์์ต๋๋ค.
- ๊ทธ๋ ์ง๋ง ์ฌ๊ธฐ์ ์ฌ์ฉํ k-์ต๊ทผ์ ์๊ณ ๋ฆฌ์ฆ์ ์์ธกํ ์ํ ๊ทผ์ฒ ์ํ๋ค์ ๋ฌด๊ฒ๋ฅผ ํ๊ท ํ์ฌ ๊ณ์ฐํฉ๋๋ค. ํ๋ฒ ๊ตฌํด๋ณด๊ฒ ์ต๋๋ค.
print(np.mean(train_target[indexes]))
1033.3333333333333
print(knr.predict([[100]]))
1033.3333333333333
- ๋ณด์ด์๋๊ฒ๊ณผ ๊ฐ์ด 100cm์ธ ๋์ด๋ฅผ ์ ๋ ฅํด๋ ๋ฌด๊ฒ๋ ๊ฐ๊ฒ ๋์ค๋๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ์ด๊ฒ์ ์๋ก์ด ์ํ์ด ํ๋ จ ์ธํธ์ ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ฉด ์๋ฑํ ๊ฐ์ ์์ธกํ ์ ์๋ค๋๊ฒ์ ๋ณด์ฌ์ค๋๋ค.
- ํ๋ฒ ๋ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ ค์ ํ์ธํด ๋ณด๊ฒ ์ต๋๋ค.
# 100cm ๋์ด์ ์ด์ example
distances, indexes = knr.kneighbors([[100]])
# ํ๋ จ ์ธํธ์ ์ฐ์ ๋๋ฅผ ๊ทธ๋ฆฝ๋๋ค.
plt.scatter(train_input, train_target)
# ํ๋ จ ์ธํธ ์ค์์ ์ด์ ์ํ๋ง ๋ค์ ๊ทธ๋ฆฝ๋๋ค.
plt.scatter(train_input[indexes], train_target[indexes], marker='D')
# 100cm ๋์ด ๋ฐ์ดํฐ
plt.scatter(100, 1033, marker='^')
plt.xlabel('length')
plt.ylabel('weight')
plt.show()
- ์ด๋ฐ ๊ทธ๋ํ๋ฉด.. ๊ธธ์ด๊ฐ ๋ ํฐ ๋์ด๊ฐ ์๋ ๋ฌด๊ฒ๋ ๋ ๋์ด๋์ง ์๋๋ก ์์ธก์ ํ ๊ฒ์ ๋๋ค.
- ๊ทธ๋ฌ๋ฉด, K-์ต๊ทผ์ ์ด์ ์๊ณ ๋ฆฌ์ฆ ๋ง๊ณ ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํด์ ๋ชจ๋ธ์ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค.
์ ํ ํ๊ท(Linear Regression)
์ ํํ๊ท(Linear Regression) ์๊ณ ๋ฆฌ์ฆ์ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ํ์ ์ธ ํ๊ท ์๊ณ ๋ฆฌ์ฆ ์ ๋๋ค.
๋น๊ต์ ๊ฐ๋จํ๊ณ , ์ฑ๋ฅ๋ ์ข๊ธฐ ๋๋ฌธ์ ๋ณดํต ์ฒ์ ์ ํ๋ ๋จธ์ ๋ฌ๋ ์๊ณ ๋ฆฌ์ฆ์ค ํ๋์ ๋๋ค.
- ํน์ง์ ํน์ฑ์ด ํ๋์ธ๊ฒฝ์ฐ ์ด๋ค ์ง์ ์ ํ์ตํ๋ ์๊ณ ๋ฆฌ์ฆ ์ ๋๋ค. ํ๋ฒ Scikit-learn ์ ์ด์ฉํด์ ๊ตฌํํด ๋ณด๊ฒ ์ต๋๋ค.
- Scikit-learn์ sklearn.linear_model ํจํค์ง ์๋์ Linear Regression ํด๋์ค๋ก ์ ํํ๊ท ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํด ๋์์ต๋๋ค.
- Scikit-learn์ ๋ชจ๋ธ Class๋ค์ ํ๋ จ, ํ๊ฐ, ์์ธกํ๋ Method ์ด๋ฆ์ด ๋ชจ๋ ๋์ผํฉ๋๋ค.
- ์ฆ, Linear Regression ํด๋์ค์๋ fit(), score(), predict() Method๊ฐ ์์ต๋๋ค.
from sklearn.linear_model import LinearRegression
lr = LinearRegression()
# ์ ํ ํ๊ท ๋ชจ๋ธ ํ๋ จ
lr.fit(train_input, train_target)
# 50cm ๋์ด์ ๋ํ ์์ธก
print(lr.predict([[50]]))
[1241.83860323]
- K-์ต๊ทผ์ ์ด์ ํ๊ท๋ฅผ ์ฌ์ฉํ์๋๋ณด๋ค 50cm ๋์ด์ ๋ฌด๊ฒ๋ฅผ ๋ ๋์ด ์์ธกํ์ต๋๋ค. ์ ์ด๋ ๊ฒ ๋์๋์ง ์์๋ณด๊ฒ ์ต๋๋ค.
- ํ๋์ ์ง์ ์ ๊ทธ๋ฆด๋ ค๋ฉด, ๊ธฐ์ธ๊ธฐ์ ์ ํธ์ด ์์ด์ผ ํฉ๋๋ค. y = a * x + b ์ฒ๋ผ ์ธ ์ ์์ต๋๋ค.
- ์ฌ๊ธฐ์๋ x๋ ๋์ด์ ๊ธธ์ด, y๋ฅผ ๋์ด์ ๋ฌด๊ฒ๋ก ๋ด๊ฟ์ ํด์ผํฉ๋๋ค.
y = a * x + b, ๋์ด๋ฌด๊ฒ(y) = a(๊ธฐ์ธ๊ธฐ) * ๋์ด๊ธธ์ด(x) + b(y์ ์ ํธ, y์ ์ถ๊ณผ ๋ง๋๋ ๊ฐ)
- ๊ทธ๋ฌ๋ฉด, ๊ณผ์ฐ ๋ฐ์ดํฐ์ ์๋ง๋ a์ b๊ฐ ๋ญ๊น์? Linear Regression ํด๋์ค๊ฐ ์ฐพ์ a์ b๋ lr ๊ฐ์ฒด์ coef_ ์ intercept_ ์์ฑ์ ์ ์ฅ๋์ด ์์ต๋๋ค.
#scikit-learn ๋ชจ๋ธ๋ค์ ๋ฐ์ดํฐ์์ ํ์ตํ ๊ฐ๋ค์ ์ ์ฅํ ๋, ๋ค๋ฅธ ์์ฑ๊ณผ ๊ตฌ๋ถํ๊ธฐ ์ํ์ฌ '_' ์ถ๊ฐ
print(lr.coef_, lr.intercept_) # ๋ชจ๋ธ parameter๋ค
[39.01714496] -709.0186449535474
- ํ๋ฒ ๋์ด์ ๊ธธ์ด์ธ 15cm๋ถํฐ 50cm ๊น์ง ์ง์ ์ผ๋ก ๊ทธ๋ ค๋ณด๊ฒ ์ต๋๋ค.
- ์ง์ ์ ๊ทธ๋ ค๋ณด๋ ค๋ฉด, ์์์ ๊ตฌํ ๊ธฐ์ธ๊ธฐ & ์ ํธ์ ์ฌ์ฉํ์ฌ (15, 15 X 39 -709), (50, 50 X 39 -709) ๋ ์ ์ ์ด์ผ๋ฉด ๋ฉ๋๋ค.
# ํ๋ จ ์ธํธ์ ์ฐ์ ๋๋ฅผ ๊ทธ๋ฆฝ๋๋ค.
plt.scatter(train_input, train_target)
# 15~50๊น์ง 1์ฐจ ๋ฐฉ์ ์ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆฝ๋๋ค. [lr.coef_+lr.intercept_: ๊ธฐ์ธ๊ธฐ + ์ ํธ]
plt.plot([15, 50], [15*lr.coef_+lr.intercept_, 50*lr.coef_+lr.intercept_])
# 50cm ํ์ด ๋ฐ์ดํฐ
plt.scatter(50, 1241.8, marker='^')
plt.xlabel('length')
plt.ylabel('weight')
plt.show()
- ํ๋ฒ Training_set์ Test_set์ ๋ํ R^2 ์ ์๋ฅผ ํ์ธํด ๋ณด๊ฒ ์ต๋๋ค.
# training์ด ์ต๊ทผ์ ์ด์์ผ๋ก ํ๋ ์ ์๋ณด๋ค ๋ฎ์์ ๊ณผ์์ ํฉ?
print(lr.score(train_input, train_target))
# training์ ๊ณผ๋ ์ ํฉ์ผ์๋
print(lr.score(test_input, test_target))
0.9398463339976041
0.824750312331356
- Training_set์ Test_set์ ์ ์๊ฐ ์กฐ๊ธ ์ฐจ์ด๊ฐ ๋๋๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ๊ทธ๋ ๋ค๊ณ ๊ณผ๋์ ํฉ์ด ๋๊ฒ๋ ์๋๊ณ , ์ ์ฒด์ ์ผ๋ก ๋ชจ๋ธ์ด ๊ณผ์์ ํฉ์ด ๋์๋ค๊ณ ๋ณผ ์ ์์๊ฒ ๊ฐ์ต๋๋ค. ๊ทผ๋ฐ ๊ทธ๊ฒ๋ง ๋ฌธ์ ๊ฐ ์๋๋๋ค. ๊ทธ๋ํ์ ์ผ์ชฝ ํ๋จ์ ๋ณด๋ฉด ๋ฌด์ธ๊ฐ ์ด์ํ๊ฒ์ ์ ์ ์์ต๋๋ค.
- ๊ทธ๋ํ์ ์ง์ ์ ๋ณด๋ฉด ์ผ์ชฝ ์๋๋ก ๋ด๋ ค๊ฐ ์์ต๋๋ค. ์ฐ์ ๋ ๊ทธ๋ํ์์ ๋ณด์ด๋ ๋ฐ์ดํฐ์ ์ ๋ถํฌ๋ ๋น์ทํ์ง๊ฐ ์์ฃ . ์ด๊ฑด ๊ฐ์ด ์์๋ก ๋จ์ด ์ง์๋ ์๋ค๋๊ฒ์ ์๋ฏธํฉ๋๋ค.
๋คํญ ํ๊ท
๋คํญ ํ๊ท๋ x์ ๋คํญ์์ผ๋ก ๋ง๋ค์ด์ ํ๋ ์ ํํ๊ท ๋ฐฉ์์ ๋คํญ ํ๊ท๋ผ๊ณ ํฉ๋๋ค.
- ์ ์ ์ ํํ๊ท์์ ์ฌ์ฉํ๋ ์ง์ ๋ณด๋ค๋, ์ด ๋ฐ์ดํฐ์ ๋ค์ ๋ณด๋ฉด ์ต์ ์ ๊ณก์ ์ ๋ง๋ค์ด์ ๋ด์ผ ํ ๊ฒ ๊ฐ์ต๋๋ค.
- ์ด๋ฐ ๊ณก์ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆฌ๋ ค๋ฉด, ๊ธธ์ด๋ฅผ ์ ๊ณฑํ ํญ์ด Training_set์ ์ถ๊ฐ๊ฐ ๋์ด์ผ ํฉ๋๋ค.
- ์ด๋ด๋, Numpy๋ฅผ ์ฌ์ฉํด์ ๊ฐ๋จํ ๋ง๋ค ์ ์์ต๋๋ค. ํ๋ฒ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค.
# 2์ฐจ ๋ฐฉ์ ์์ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆฌ๊ธฐ ์ํ์ฌ ๊ธธ์ด๋ฅผ ์ ๊ณฑํ ํญ์ training_set์ ์ถ๊ฐ
# Numpy Broadcasting ์ ์ฉ
train_poly = np.column_stack((train_input ** 2, train_input))
test_poly = np.column_stack((test_input ** 2, test_input))
# ์๋กญ๊ฒ ๋ง๋ dataset ํฌ๊ธฐ ํ์ธ
print(train_poly.shape, test_poly.shape)
(42, 2) (14, 2)
- Train_input ** 2 ์์๋ Numpy Broadcasting์ด ์ ์ฉ๋ฉ๋๋ค. ์ฆ, train_input์ ์๋ ๋ชจ๋ ์์๋ฅผ ์ ๊ณฑํฉ๋๋ค.
- ์๋ ํน์ฑ์ธ ๊ธธ์ด๋ฅผ ์ ๊ณฑํ์ฌ ์ผ์ชฝ ์ด์ ์ถ๊ฐ๋ฅผ ํด์ Training_set, Test_set ๋ชจ๋ ์ด์ด 2๊ฐ๋ก ๋์ด๋ฌ์ต๋๋ค.
- ์ด์ train_poly๋ฅผ ์ฌ์ฉํด์ ์ ํ ํ๊ท ๋ชจ๋ธ์ ํ๋ จํ๊ฒ ์ต๋๋ค. ์ฌ๊ธฐ์๋ ํ๋ จ์ธํธ์์ ํ๋๊ฒ ์ฒ๋ผ ํ ์คํธ ํ ๋๋ ์ด ๋ชจ๋ธ์ ๋์ด ๊ธธ์ด์ ์ ๊ณฑ๊ณผ ์๋ ๊ธธ์ด๋ฅผ ๋ฃ์ด์ผ ํฉ๋๋ค.
# Model ๋ค์ training
lr = LinearRegression()
lr.fit(train_poly, train_target) # train_target - ์์ธกํ๊ณ ์ ํ๋ ๋์ด์ ๋ฌด๊ฒ (๋ณ๋ ์์)
print(lr.predict([[50**2, 50]]))
[1573.98423528]
- ์์์ ํ๋ จํ ๋ชจ๋ธ๋ณด๋ค ๋ ๋์ ๊ฐ์ ์์ธกํ์ต๋๋ค. ์ด ๋ชจ๋ธ์ด ํ๋ จํ ๊ณ์ & ์ ํธ์ ์ถ๋ ฅํด ๋ณด๊ฒ ์ต๋๋ค.
print(lr.coef_, lr.intercept_)
# ์ ๊ณฑํญ์ 2๊ฐ ๋ฃ์๊ธฐ ๋๋ฌธ์, ๊ณ์๊ฐ 2๊ฐ๊ฐ ์ถ๋ ฅ.[1.01433211 -21.55792498], ์ ํธ: 116.05021078278338
[ 1.01433211 -21.55792498] 116.05021078278338
๋ฌด๊ฒ = a* ๊ธธ์ด^2(x^2) + b * ๊ธธ์ด(x) + c
๋ชจ๋ธ์ ์ด ๊ทธ๋ํ๋ฅผ ํ์ตํ์ต๋๋ค.
๋ฌด๊ณ = 1.01 x ๊ธธ์ด**2 - 21.6 x ๊ธธ์ด + 116.05
- ์ด๋ฐ ๋ฐฉ์ ์์ ๋คํญ์์ด๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ, ๋คํญ์์ ์ฌ์ฉํ ์ ํ ํ๊ท๋ฅผ ๋คํญ ํ๊ท(Polynomial regression)์ด๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
- ํ๋ฒ ๋คํญํ๊ท๋ฅผ ์ ์ฉํ ์ฐ์ ๋ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฌ๋ณด๊ฒ ์ต๋๋ค.
# ๊ตฌ๊ฐ๋ณ ์ง์ ์ ๊ทธ๋ฆฌ๊ธฐ ์ํด 15~50 ๊น์ง ์ ์ ๋ฐฐ์ด์ ๋ง๋ญ๋๋ค.
point = np.arange(15,50)
# ํ๋ จ ์ธํธ์ ์ฐ์ ๋๋ฅผ ๊ทธ๋ฆฝ๋๋ค.
plt.scatter(train_input, train_target)
# 15์์ 50๊น์ง 2์ฐจ ๋ฐฉ์ ์ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆฝ๋๋ค.
plt.plot(point, 1.01*point**2 - 21.6*point + 116.05)
# 50cm ๋์ด ๋ฐ์ดํฐ
plt.scatter([50], [1574], marker='^')
plt.xlabel('length')
plt.ylabel('weight')
plt.show()
- ์์, ๋จ์ ์ ํ ํ๊ท๋ชจ๋ธ ๋ณด๋ค ํ ์ฌ ๋์ ๊ทธ๋ํ๊ฐ ๊ทธ๋ ค์ก์ต๋๋ค. ๊ทธ๋ฌ๋ฉด Training_set์ Test_set ์ R**2 ์ ์๋ฅผ ํ๊ฐํ๊ฒ ์ต๋๋ค.
print(lr.score(train_poly, train_target
print(lr.score(test_poly, test_target))
0.9706807451768623
0.9775935108325122
- Training_set์ Test_set์ ์ ์๊ฐ ํฌ๊ฒ ๋์์ก์ต๋๋ค. ๊ทธ๋ ์ง๋ง ์ฌ์ ํ Test_set์ ์๊ฐ Training_set ๋ณด๋ค ์ ์๊ฐ ๋ ๋์ต๋๋ค. ๊ณผ์์ ํฉ์ด ์์ง ๋จ์์๋๊ฑฐ ๊ฐ์ต๋๋ค.
Keywords
- ์ ํ ํ๊ท ๋ ํน์ฑ๊ณผ ํ๊น ์ฌ์ด์ ๊ด๊ณ๋ฅผ ๊ฐ์ฅ ์ ๋ํ๋ด๋ ์ ํ ๋ฐฉ์ ์์ ์ฐพ์ต๋๋ค. ํน์ฑ์ด ํ๋๋ฉด ์ง์ ๋ฐฉ์ ์์ด ๋ฉ๋๋ค.
- ์ ํ ํ๊ท ๊ฐ ์ฐพ์ ํน์ฑ๊ณผ ํ๊น ์ฌ์ด์ ๊ด๊ณ๋ ์ ํ ๋ฐฉ์ ์์ ๊ณ์ ๋๋ ๊ฐ์ค์น์ ์ ์ฅ๋ฉ๋๋ค. ๋จธ์ ๋ฌ๋์์ ์ข ์ข ๊ธฐ์ค์น๋ ๋ฐฉ์ ์์ ๊ธฐ์ธ๊ธฐ์ ์ ํธ์ ๋ชจ๋ ์๋ฏธํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
- ๋ชจ๋ธ ํ๋ผ๋ฏธํฐ๋ ์ ํ ํ๊ท๊ฐ ์ฐพ์ ๊ฐ์ค์น์ฒ๋ผ ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ด ํน์ฑ์์ ํ์ตํ ํ๋ผ๋ฏธํฐ๋ฅผ ๋งํฉ๋๋ค.
- ๋คํญ ํ๊ท๋ ๋คํญ์์ ์ฌ์ฉํ์ฌ ํน์ฑ๊ณผ ํ๊น ์ฌ์ด์ ๊ด๊ณ๋ฅผ ๋ํ๋๋๋ค. ์ด ํจ์๋ ๋น์ ํ์ผ ์ ์์ง๋ง ์ฌ์ ํ ์ ํ ํ๊ท๋ก ํํํ ์ ์์ต๋๋ค.
ํต์ฌ ํจํค์ง์ ํจ์
Scikit-learn
- LinearRegression์ ์ฌ์ดํท๋ฐ์ ์ ํ ํ๊ท ํด๋์ค์ ๋๋ค.
- fit_intercept ๋งค๊ฐ๋ณ์๋ฅผ False๋ก ์ง์ ํ๋ฉด ์ ํธ์ ํ์ตํ์ง ์์ต๋๋ค. ์ด ๋งค๊ฐ๋ณ์์ ๊ธฐ๋ณธ ๊ฐ์ True์ ๋๋ค.
- ํ์ต๋ ๋ชจ๋ธ์ coef ์์ฑ์ ํน์ฑ์ ๋ํ ๊ณ์๋ฅผ ํฌํจํ ๋ฐฐ์ด์ ๋๋ค. ์ฆ ์ด ๋ฐฐ์ด์ ํฌ๊ธฐ๋ ํน์ฑ์ ๊ฐ์์๊ฐ์ต๋๋ค. intercept_์์ฑ์๋์ ํธ์ด ์ ์ฅ๋์ด ์์ต๋๋ค.
๋ฐ์ํ
'๐น๏ธ ํผ๊ณต๋จธ์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํผ๊ณต๋จธ์ ] Logistic Regression (๋ก์ง์คํฑ ํ๊ท) (0) | 2023.09.25 |
---|---|
[ML] ํน์ฑ ๊ณตํ๊ณผ ๊ท์ (0) | 2023.09.24 |
[ํผ๊ณต๋จธ์ ] K-์ต๊ทผ์ ์ด์ ํ๊ท (0) | 2023.09.22 |
[ํผ๊ณต๋จธ์ ] ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ [๋ฐ์ดํฐ ๋ค๋ฃจ๊ธฐ] (0) | 2023.09.18 |
[ํผ๊ณต๋จธ์ ] ํ๋ จ ์ธํธ์ ํ ์คํธ ์ธํธ [๋ฐ์ดํฐ ๋ค๋ฃจ๊ธฐ] (0) | 2023.09.18 |