k-์ต๊ทผ์ ์ด์ ํ๊ท์๋ ์น๋ช ์ ์ธ ๋จ์ ์ด ์กด์ฌํ๋ค.
ํด๋น ๋ชจ๋ธ์ 50cm์ ๋์ด๋ฅผ 1.033g์ ๋๋ก ์์ธกํ๋ค. (์ค์ ๋ณด๋ค ํจ์ฌ ๊ฐ๋ณ๊ฒ ์์ธก)
์ฐ์ ๋๋ฅผ ๋ณด๋ฉด, ๋์ด๋ ๊ธธ์ด๊ฐ ์ปค์ง ์๋ก ๋ฌด๊ฒ๊ฐ ๋์ด๋๋ค.
ํ๋ จ ์ํ์ ์๋ ๋์ด ์ค ๊ฐ์ฅ ๊ธธ์ด๊ฐ ๊ธธ์๋ ์ํ์ด 45 ์ ๋์ด๊ธฐ ๋๋ฌธ์ ๋ชจ๋ธ์ ์ด ์ํ๋ค์ ๋ฌด๊ฒ๋ฅผ ์ด์ฉํ์ฌ ๊ธธ์ด 50cm์ธ ๋์ด์ ๋ฌด๊ฒ๋ฅผ ์์ธกํ๋ค. ์ด๋, 45cm์ ๋์ ๋์ด ์ํ๋ค์ ํ๊ท ์ด ๋ฐ๋ก 1.033g์ด๋ค.
์ฆ, ๋์ด๊ฐ ์๋ฌด๋ฆฌ ์ปค์ ธ๋ ๋ชจ๋ธ์ 1.033g์ผ๋ก ์์ธกํ ๊ฒ์ด๋ค.
ํ๋ จ ์ํ์ ํฌํจ๋์ง ์์ ๋ฒ์์ ๋ฐ์ดํฐ๊น์ง ์์ธกํ ์ ์๊ธฐ ์ํด์ ์ ํํ๊ท ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ ์ ์๋ค.
1. ์ ํํ๊ท
์ ํ ํ๊ท๋ ๋น๊ต์ ๊ฐ๋จํ๊ณ ์ฑ๋ฅ์ด ๋ฐ์ด๋๊ธฐ ๋๋ฌธ์ ๋ํ์ ์ธ ๋จธ์ ๋ฌ๋ ์๊ณ ๋ฆฌ์ฆ ์ค ํ๋์ด๋ค.
ํน์ฑ์ด ํ๋์ธ ๊ฒฝ์ฐ ์ด๋ค ์ง์ ์ ํ์ตํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
๋ฐ์ดํฐ์ ํน์ฑ์ ์ ๋ํ๋ด๋ ์ง์ ์ ๋จธ์ ๋ฌ๋ ์๊ณ ๋ฆฌ์ฆ์ด ์๋์ผ๋ก ์ฐพ์์ฃผ๋ ๊ฒ์ด๋ค.
๋ฐ๋ผ์ ์ด ์ง์ ์ ์ด์ฉํด ๋์ฑ ์ ํํ ์์ธก์ ํ ์ ์๋ค.
(1) ์ ํํ๊ท ๋ชจ๋ธ์ด ์์ธกํ 50cm ๋์ด์ ๋ฌด๊ฒ
์ฌ์ดํท๋ฐ์์๋ skelearn.linear_model ํจํค์ง ์๋์ LinearRegression ํด๋์ค๋ก ์ ํํ๊ท ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ๋ค.
from sklearn.linear_model import LinearRegression
lr = LinearRegression()
#์ ํ ํ๊ท ๋ชจ๋ธ์ ํ๋ จ
lr.fit(train_input, train_target)
#50cm ๋์ด์ ๋ํ ์์ธก
print(lr.predict([[50]]))
[1241.83860323]๋ก, k-์ต๊ทผ์ ์ด์ ํ๊ท๋ณด๋ค ๋ ์ ํํ๊ฒ ์์ธกํ์๋ค.
(2) ์ง์ ์ ๋ฐฉ์ ์
์ง์ ์ ๋ฐฉ์ ์ y = ax + b ์๋ ๊ธฐ์ธ๊ธฐ(a)์ ์ ํธ(b)์ด ์กด์ฌํด์ผ ํ๋ค.
์ฌ๊ธฐ์ x๋ฅผ ํน์ฑ์ธ ๋์ด์ ๊ธธ์ด, y๋ฅผ ํ๊น์ธ ๋์ด์ ๋ฌด๊ฒ๋ก ์๊ฐํ๋ฉด ๋๋ค.
๊ธฐ์ธ๊ธฐ์ ์ ํธ์ LinearRegression ํด๋์ค๊ฐ ํด๋น ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅ๋ฐ๊ณ , ์์์ ์ฐพ์์ค๋ค.
์ด๋ ๊ฒ ์ฐพ์ ๊ธฐ์ธ๊ธฐ์ ์ ํธ์ lr ๊ฐ์ฒด์ coef_์ intercept_ ์์ฑ์ ์ ์ฅ๋๋ค.
๋จธ์ ๋ฌ๋์์์ ๊ธฐ์ธ๊ธฐ = ๊ณ์ = ๊ฐ์ค์น
coef_์ intercept_์ฒ๋ผ ๋จธ์ ๋ฌ๋ ์๊ณ ๋ฆฌ์ฆ์ด ์ฐพ์ ๊ฐ์ ๋ชจ๋ธ ํ๋ผ๋ฏธํฐ๋ผ๊ณ ๋ถ๋ฅธ๋ค.
(3) ์ ํ ํ๊ท ๋ชจ๋ธ - ๋์ด
์ ํ ํ๊ท ์๊ณ ๋ฆฌ์ฆ์ด ๋์ด ๋ฐ์ดํฐ์ ์ ๋ํด ์ฐพ์๋ธ ์ต์ ์ ์ง์ ์ด๋ค.
ํ์ง๋ง, ํ๋ จ ์ธํธ์ ํ ์คํธ ์ธํธ์ ๋ํ R^ ์ ์๋ฅผ ํ์ธํด๋ณด๋ฉด ํ ์คํธ ์ธํธ์ ๋ํ ์ ์๊ฐ ๋ฎ์ ๊ณผ์์ ํฉ๋จ์ ์ ์ ์๋ค.
๋ํ, ์ ๊ทธ๋ฆผ์ ๋ณด๋ฉด ์ง์ ์ด๊ธฐ ๋๋ฌธ์ ์ธ์ ๊ฐ ๋ฌด๊ฒ๊ฐ ์์๊ฐ ๋๋ ๊ฒฝ์ฐ๋ ๋ฐ์ํ ์ ์๋ค๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
2. ๋คํญํ๊ท
๋์ด์ ๊ธธ์ด์ ๋ฌด๊ฒ์ ๋ํ ์ฐ์ ๋๋ ์ผ์ง์ ์ด๋ผ๊ธฐ๋ณด๋ค๋ ์ฌ์ค ๊ณก์ ์ ๊ฐ๊น๋ค.
๋ฐ๋ผ์, ์ต์ ์ ์ง์ ์ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ ๋ณด๋ค๋ ์ต์ ์ ๊ณก์ ์ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ฉด ๋ ์ข์ ๊ฒ์ด๋ค.
(1) 2์ฐจ ๋ฐฉ์ ์
์ด๋ฐ ๊ณก์ ์ 2์ฐจ ๋ฐฉ์ ์์ ๊ฐ์ง๋ค. (y = ax^ + bx + c)
์ด๋ ๊ฒ 2์ฐจ ๋ฐฉ์ ์์ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆฌ๊ธฐ ์ํด์๋ ๊ธธ์ด(x)๋ฅผ ์ ๊ณฑํ ํญ์ด ํ๋ จ ์ธํธ์ ์ถ๊ฐ๋์ด์ผ ํ๋ค.
๋ํ์ด์ column_stack()ํจ์๋ฅผ ์ด์ฉํ๋ฉด ๊ฐ๋จํ๊ฒ ์ถ๊ฐํ ์ ์๋ค.
train_poly = np.column_stack((train_input ** 2, train_input))
test_poly = np.column_stack((test_input ** 2, test_input))
์๋กญ๊ฒ ๋ง๋ ๋ฐ์ดํฐ์ ์๋ ํ๋ จ ์ธํธ์ ํ ์คํธ ์ธํธ์ ์ด์ด ๋ชจ๋ 2๊ฐ๋ก ๋์ด๋ฌ๋ค.
2์ฐจ ๋ฐฉ์ ์ ๊ทธ๋ํ๋ฅผ ์ฐพ๊ธฐ ์ํด ํ๋ จ ์ธํธ์๋ ์ ๊ณฑํญ์ ์ถ๊ฐํ์ง๋ง, ํ๊น๊ฐ์ ๊ทธ๋๋ก ์ฌ์ฉํจ์ ์ฃผ๋ชฉํด์ผ ํจ
(2) ํ๋ จ ๋ฐ ์์ธก
lr = LinearRegression()
lr.fit (train_poly, train_target)
print(lr.predict([[50**2, 50]]))
์ด ๋ชจ๋ธ์ 50cm์ธ ๋์ด์ ๋ฌด๊ฒ์ ๋ํด [1573.98423528]g์ผ๋ก ์์ธกํ์๋ค.
ํ๋ จํ ๊ณ์(๊ธฐ์ธ๊ธฐ)์ ์ ํธ์ ์ถ๋ ฅํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
์ฆ, ๋ฌด๊ฒ = 1.01 * ๊ธธ์ด^ - 21.6 * ๊ธธ์ด + 116.05 ์ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆฐ ๊ฒ์ด๋ค.
์ด๋ ๊ฒ ๋คํญ์์ ์ฌ์ฉํ ์ ํ ํ๊ท๋ฅผ ๋คํญ ํ๊ท๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์ด๋ ๊ฒ ๋จธ์ ๋ฌ๋์ ํ๋ จ ์ธํธ์์ ๋ฒ์ด๋ ํน์ฑ์ ๋ํด์๋ ์์ธกํ ์ ์๋ค.
+) ํ์ง๋ง ์ฌ์ ํ ํ ์คํธ ์ธํธ์ ๋ํ ์ ์๊ฐ ์ฝ๊ฐ ๋ ๋์ ๊ฒ์ผ๋ก ๋ณด์ ๊ณผ์์ ํฉ์ด ์ฝ๊ฐ ์๋ค. ์ฆ, ๋ ๋ณต์กํ ๋ชจ๋ธ์ด ํ์ํ๋ค