[์ธ๊ณต์ง๋ฅ] ํ๊ท๋ถ์
- -
ํ๊ท ๋ถ์์ ๋ฐ์ดํฐ๊ฐ์ ์๊ด๊ด๊ณ ๋ชจํ์ ๊ตฌํด์ ๋ฐ์ดํฐ๋ฅผ ํด์ํ๊ฑฐ๋ ์์ธกํ๋ ๊ธฐ๋ฒ์ ์๋ฏธํ๋ค. ๊ฐ๋จํ ์๋ก๋ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ํต๊ณผํ๋ ์ง์ ์ ์ฐพ๋ ๊ธฐ๋ฒ์ด ์๋ค.
import numpy as np
import matplotlib.pyplot as plt
a = np.array([1,3,5,7,9])
๋ฌผ๋ก ์ ๋ค์ด ์ ํํ ์ง์ ์ ์์น๋์ด์๋ค๋ฉด ์ด๋ ๋งค์ฐ ์ฌ์ด ๋ฌธ์ ์ผ ๊ฒ์ด๋ค. ํ์ง๋ง ์ค์ ๋ฐ์ดํฐ๋ ๋ ธ์ด์ฆ๋ฅผ ํฌํจํ์ฌ ๋ณต์กํ ํํ๋ฅผ ๋๊ณ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฌํ ๋ฐ์ดํฐ์ ๊ฒฝํฅ์ฑ์ ํ์ ํ๋ ๊ฒ์ ๊ฒฐ์ฝ ์ฌ์ด ์ผ์ด ์๋๋ค.
๋ค์๊ณผ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์๊ฐํด๋ณด์
b = a + np.random.normal(0,1,5)
์์ ๋ฐ์ดํฐ์ ์ ๊ท๋ถํฌ ํ๊ท 0, ํธ์ฐจ1์ ๋ ธ์ด์ฆ๋ฅผ ํฌํจํ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ ๊ฒฝ์ฐ์ด๋ค. ์์์ ๋ค๋ฃฌ ์ง์ ์ ๋ถ๋ช ์ด๋ฒ ๋ฐ์ดํฐ์ ๊ฒฝํฅ์ฑ๋ ์ด๋์ ๋ ์ ๋ค๋ฃจ๊ณ ์๋ค. ํ์ง๋ง ์ด๊ฒ์ด ์ผ๋ง๋ ์ ํํํ๋ค๊ณ ๋ณผ ์ ์๋๊ฐ?
์์ ๊ฒฝ์ฐ๋ ์ง์ ์ ํตํด ํํ๋ ๋ชจ๋ธ๊ณผ ์ค์ ๋ฐ์ดํฐ์ ์ค์ฐจ๋ฅผ ํตํด ์ธก์ ํ๋ค. ํนํ ์ด์ ๊ฐ์ด ๋ฐ์ดํฐ๊ฐ์ ์๊ด๊ด๊ณ๋ฅผ ์ฐ์๋ ์ ํ๊ด๊ณ๋ก ํด์ํ๋ ๊ธฐ๋ฒ์ ์ ํํ๊ท๋ถ์์ด๋ผ๊ณ ํ๋ค.
a = np.array([1,3,5,7,9])
b = a + np.random.normal(0,1,5)
plt.plot(b,'o')
plt.plot(a)
plt.show()
์ ํ ํ๊ท๋ถ์์ ๊ธฐ์ด
์์ ์์ ์ ๊ฒฝ์ฐ๋ ๊ฐ์ฅ ์ค์ฐจ๊ฐ ์ ์ ์ง์ ์ ์ฐพ์ ๊ฒฝ์ฐ๋ก์ ์ด๋ฌํ ์ง์ ์ x ์ 1์ฐจํญ๋ง์ ( x ์ ๊ณฑ ์ด์์ ๋ฌด์ ) ํฌํจํ ๋ชจ๋ธ์ ์๋ฏธํ๋ค. (2์ฐจํญ์ด ๋ผ๋ฉด ๊ตฌ๋ถ๋ฌ์ง๊ธฐ ์์ ) ์ด๋ฌํ ๊ฒฝ์ฐ๋ฅผ ์ ํ ๋จ์ ํ๊ท๋ถ์์ด๋ผ ์นญํ๋ค.
๋จผ์ ํ๊ท๋ถ์์ ์ํ ๊ฐ์ฅ ๋จ์ํ ํํ์ ๋ฐ์ดํฐ๋ฅผ ์์ฑํด๋ณด์
import numpy as np
import matplotlib.pyplot as plt
x = np.array([1,2,3])
y = np.array([2,4,6])
plt.ylim(0,10)
plt.xlim(0,5)
plt.plot(x,y,'o')
plt.show()
์ด๋ y = x * 2 ์ ๊ฐ์ฅ ๋จ์ํ ํํ์ ๋ฐ์ดํฐ ๋ฐฐ์น์ด๋ฉฐ์ด๋ ์ค์ฐจ๋ฅผ ์ต์ํํ๋ ์ง์ ๋ชจ๋ธ์ y = x * 2 ์ด๋ค. ์ด๋ฅผ ์ป๊ธฐ ์ํด์ ์ฌ๊ธฐ์๋ sklearn ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ linear_model ์ ์ฌ์ฉํ๋๋ก ํ๊ฒ ๋ค.
from sklearn import linear_model
regr = linear_model.LinearRegression()
์์ ๋ชจ๋ธ์ regr ์ ์ ํ ํ๊ท๋ถ์์ ์ํํ ์ ์๋ ๊ฐ์ฒด์ด๋ฉฐ fit ์ด๋ผ๋ ๋ฉ์๋๋ฅผ ํตํด ํ๊ท๋ถ์์ ์ํํ๋ค. ๊ทธ๋ฌ๋ฉด ์ด๋ฅผ ์ํํด๋ณด์.
ํ๊ท๋ถ์์์ x ๋ ํ๋์ด์์ ๋ณ์๋ฅผ ๊ฐ์ ํ๋ค. ๋ณ์๊ฐ ํ๋์ธ [1,2,3] ์ด๋ผ๋ฉด ์ด ํํ๋ก๋ ๊ด์ฐฎ๊ฒ ์ง๋ง [3,4,5] ๊ฐ ํฌํจ๋ ๊ฒฝ์ฐ [[1,2], [2,4], [3,5]] ์ด๋ฐ ์์ผ๋ก ์ ๋ ฅ๋๋ ๊ฒฝ์ฐ๋ฅผ ๊ฐ์ ํด์ ์ค๊ณ๋์ด์๋ค.
๊ทธ๋ฌ๋ฏ๋ก [1,2.3] ์ด ์๋๋ผ
[[1],
[2],
[3]]
์ ํํ๊ฐ ๋์ด์ผ ํ๋ฉฐ ์ด๋ (1,3) ์ ๋ฐฐ์ด์ (3,1) ๋ก ๋ฐ๊พธ์ด์ฃผ์ด์ผ๋ง ํจ์ ์๋ฏธํ๋ค. ์ด ๊ฒฝ์ฐ reshape ๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๊ฒ ๋ณํ์ด ๊ฐ๋ฅํ๋ค.
coef_ : ์๊ด๊ณ์
plt.ylim(0,10)
plt.xlim(0,5)
plt.plot(x,y, 'o')
plt.plot(x, x * regr.coef_)
์ฐ์ต : ํ๊ท๋ถ์ ์ง์ ํด๋ณด๊ธฐ
๋ค์์ x, y ์ ๋ํด ํ๊ท๋ถ์์ ํ ํ์ ๊ทธ๋ํ๋ก ์ถ๋ ฅํด๋ณด์.
x = np.array([1,2,3,4])
y = np.array([1.5, 3, 4.5, 6])
x = np.array([1,2,3,4])
y = np.array([1.5, 3, 4.5, 6])
# ์ฐ์ต๋ฌธ์ ์ ์ฝ๋๋ฅผ ์์ฑํ์ธ์
regr.fit(x.reshape(4,1),y)
plt.plot(x,y,'o')
plt.plot(x,x * regr.coef_)
plt.show()
intercept_ : ์์ํญ
์ด๋ฒ์ ๋ค์๊ณผ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด์
x = np.array([1,2,3])
y = np.array([3,5,7])
plt.ylim(0,10)
plt.xlim(0,5)
plt.plot(x,y,'o')
plt.show()
์์ ๋ฐ์ดํฐ๋ฅผ ์์ ์์ ์ ๊ฐ์ด ์ฒ๋ฆฌํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
x = np.array([1,2,3])
y = np.array([3,5,7])
regr.fit(x.reshape(3,1), y)
plt.ylim(0,10)
plt.xlim(0,5)
plt.plot(x, y, 'o')
plt.plot(x, x * regr.coef_)
์์ ์์ ์ ๊ฐ์ด ๊ธฐ์ธ๊ธฐ .. ์ฆ ์๊ด๊ณ์๋ 2 ์ง๋ง 3,5,7 ์ ์ฌ๊ธฐ์ ๋ค์ 1์ ๋ํด์ค ๊ฐ์ด๋ค. ์์ปจ๋ฐ ๋ ๊ฐ์ ๊ด๊ณ๋ ๋ค์๊ณผ ๊ฐ๋ค.
y = x * 2 + 1
2 ๋ผ๋ x ์ 1์ฐจํญ ๊ณ์์ ์ถ๊ฐ๋ก 1์ด๋ผ๋ ์์ํญ์ ์ง๋ ์์ด๋ค. ์ด ์์ํญ์ ๊ฐ์
regr.intercept_
์ผ๋ก ์ ์ฅ๋๋ค.
์ฐ์ต : ์์ํญ์ ํฌํจ ๊ทธ๋ํ ๊ทธ๋ฆฌ๊ธฐ
์์ x,y ์ ๋ํด regr.coef_ ์ regr.interceipt_ ๊น์ง ํฌํจํด ๋ค์๊ณผ ๊ฐ์ ์ง์ ์ ๊ทธ๋ ค๋ณด์.
x = np.array([1,2,3])
y = np.array([3,5,7])
regr.fit(x.reshape(3,1), y)
plt.ylim(0,10)
plt.xlim(0,5)
# ์ฐ์ต๋ฌธ์ ์ ์ฝ๋๋ฅผ ์์ฑํ์ธ์
plt.plot(x,y,'o')
plt.plot(x,x * regr.coef_+ regr.intercept_)
plt.show()
import numpy as np
import matplotlib.pyplot as plt
ํ๊ท๋ถ์
ํ๊ท ๋ถ์์ ๋ฐ์ดํฐ๊ฐ์ ์๊ด๊ด๊ณ ๋ชจํ์ ๊ตฌํด์ ๋ฐ์ดํฐ๋ฅผ ํด์ํ๊ฑฐ๋ ์์ธกํ๋ ๊ธฐ๋ฒ์ ์๋ฏธํ๋ค. ๊ฐ๋จํ ์๋ก๋ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ํต๊ณผํ๋ ์ง์ ์ ์ฐพ๋ ๊ธฐ๋ฒ์ด ์๋ค.
a = np.array([1,3,5,7,9])
๋ฌผ๋ก ์ ๋ค์ด ์ ํํ ์ง์ ์ ์์น๋์ด์๋ค๋ฉด ์ด๋ ๋งค์ฐ ์ฌ์ด ๋ฌธ์ ์ผ ๊ฒ์ด๋ค.
ํ์ง๋ง ์ค์ ๋ฐ์ดํฐ๋ ๋ ธ์ด์ฆ๋ฅผ ํฌํจํ์ฌ ๋ณต์กํ ํํ๋ฅผ ๋๊ณ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฌํ ๋ฐ์ดํฐ์ ๊ฒฝํฅ์ฑ์ ํ์ ํ๋ ๊ฒ์ ๊ฒฐ์ฝ ์ฌ์ด ์ผ์ด ์๋๋ค.
๋ค์๊ณผ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์๊ฐํด๋ณด์.
b = a + np.random.normal(0,1,5)
์์ ๋ฐ์ดํฐ์ ์ ๊ท๋ถํฌ ํ๊ท 0, ํธ์ฐจ1์ ๋ ธ์ด์ฆ๋ฅผ ํฌํจํ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ ๊ฒฝ์ฐ์ด๋ค. ์์์ ๋ค๋ฃฌ ์ง์ ์ ๋ถ๋ช ์ด๋ฒ ๋ฐ์ดํฐ์ ๊ฒฝํฅ์ฑ๋ ์ด๋์ ๋ ์ ๋ค๋ฃจ๊ณ ์๋ค. ํ์ง๋ง ์ด๊ฒ์ด ์ผ๋ง๋ ์ ํํํ๋ค๊ณ ๋ณผ ์ ์๋๊ฐ?
์์ ๊ฒฝ์ฐ๋ ์ง์ ์ ํตํด ํํ๋ ๋ชจ๋ธ๊ณผ ์ค์ ๋ฐ์ดํฐ์ ์ค์ฐจ๋ฅผ ํตํด ์ธก์ ํ๋ค. ํนํ ์ด์ ๊ฐ์ด ๋ฐ์ดํฐ๊ฐ์ ์๊ด๊ด๊ณ๋ฅผ ์ฐ์๋ ์ ํ๊ด๊ณ๋ก ํด์ํ๋ ๊ธฐ๋ฒ์ ์ ํํ๊ท๋ถ์์ด๋ผ๊ณ ํ๋ค.
a = np.array([1,3,5,7,9])
b = a + np.random.normal(0,1,5)
plt.plot(b,'o')
plt.plot(a)
plt.show()
์ ํ ํ๊ท๋ถ์์ ๊ธฐ์ด
์์ ์์ ์ ๊ฒฝ์ฐ๋ ๊ฐ์ฅ ์ค์ฐจ๊ฐ ์ ์ ์ง์ ์ ์ฐพ์ ๊ฒฝ์ฐ๋ก์ ์ด๋ฌํ ์ง์ ์ x ์ 1์ฐจํญ๋ง์ ( x ์ ๊ณฑ ์ด์์ ๋ฌด์ ) ํฌํจํ ๋ชจ๋ธ์ ์๋ฏธํ๋ค. (2์ฐจํญ์ด ๋ผ๋ฉด ๊ตฌ๋ถ๋ฌ์ง๊ธฐ ์์ ) ์ด๋ฌํ ๊ฒฝ์ฐ๋ฅผ ์ ํ ๋จ์ ํ๊ท๋ถ์์ด๋ผ ์นญํ๋ค.
๋จผ์ ํ๊ท๋ถ์์ ์ํ ๊ฐ์ฅ ๋จ์ํ ํํ์ ๋ฐ์ดํฐ๋ฅผ ์์ฑํด๋ณด์
import numpy as np
import matplotlib.pyplot as plt
x = np.array([1,2,3])
y = np.array([2,4,6])
plt.ylim(0,10)
plt.xlim(0,5)
plt.plot(x,y,'o')
plt.show()
์ด๋ y = x * 2 ์ ๊ฐ์ฅ ๋จ์ํ ํํ์ ๋ฐ์ดํฐ ๋ฐฐ์น์ด๋ฉฐ์ด๋ ์ค์ฐจ๋ฅผ ์ต์ํํ๋ ์ง์ ๋ชจ๋ธ์ y = x * 2 ์ด๋ค. ์ด๋ฅผ ์ป๊ธฐ ์ํด์ ์ฌ๊ธฐ์๋ sklearn ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ linear_model ์ ์ฌ์ฉํ๋๋ก ํ๊ฒ ๋ค.
sklearn.linear_model ์ฌ์ฉ๋ฒ
from sklearn import linear_model
regr = linear_model.LinearRegression()
์์ ๋ชจ๋ธ์ regr ์ ์ ํ ํ๊ท๋ถ์์ ์ํํ ์ ์๋ ๊ฐ์ฒด์ด๋ฉฐ fit ์ด๋ผ๋ ๋ฉ์๋๋ฅผ ํตํด ํ๊ท๋ถ์์ ์ํํ๋ค. ๊ทธ๋ฌ๋ฉด ์ด๋ฅผ ์ํํด๋ณด์.
ํ๊ท๋ถ์์์ x ๋ ํ๋์ด์์ ๋ณ์๋ฅผ ๊ฐ์ ํ๋ค. ๋ณ์๊ฐ ํ๋์ธ [1,2,3] ์ด๋ผ๋ฉด ์ด ํํ๋ก๋ ๊ด์ฐฎ๊ฒ ์ง๋ง [3,4,5] ๊ฐ ํฌํจ๋ ๊ฒฝ์ฐ [[1,2], [2,4], [3,5]] ์ด๋ฐ ์์ผ๋ก ์
๋ ฅ๋๋ ๊ฒฝ์ฐ๋ฅผ ๊ฐ์ ํด์ ์ค๊ณ๋์ด์๋ค.
๊ทธ๋ฌ๋ฏ๋ก [1,2.3] ์ด ์๋๋ผ
[[1],
[2],
[3]]
์ ํํ๊ฐ ๋์ด์ผ ํ๋ฉฐ ์ด๋ (1,3) ์ ๋ฐฐ์ด์ (3,1) ๋ก ๋ฐ๊พธ์ด์ฃผ์ด์ผ๋ง ํจ์ ์๋ฏธํ๋ค. ์ด ๊ฒฝ์ฐ reshape ๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๊ฒ ๋ณํ์ด ๊ฐ๋ฅํ๋ค.
coef_ : ์๊ด๊ณ์
plt.ylim(0,10)
plt.xlim(0,5)
plt.plot(x,y, 'o')
plt.plot(x, x * regr.coef_)
์ฐ์ต : ํ๊ท๋ถ์ ์ง์ ํด๋ณด๊ธฐ
๋ค์์ x, y ์ ๋ํด ํ๊ท๋ถ์์ ํ ํ์ ๊ทธ๋ํ๋ก ์ถ๋ ฅํด๋ณด์.
x = np.array([1,2,3,4])
y = np.array([1.5, 3, 4.5, 6])
x = np.array([1,2,3,4])
y = np.array([1.5, 3, 4.5, 6])
# ์ฐ์ต๋ฌธ์ ์ ์ฝ๋๋ฅผ ์์ฑํ์ธ์
regr.fit(x.reshape(4,1),y)
plt.plot(x,y,'o')
plt.plot(x,x * regr.coef_)
plt.show()
intercept_ : ์์ํญ
์ด๋ฒ์ ๋ค์๊ณผ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด์
x = np.array([1,2,3])
y = np.array([3,5,7])
plt.ylim(0,10)
plt.xlim(0,5)
plt.plot(x,y,'o')
plt.show()
์์ ๋ฐ์ดํฐ๋ฅผ ์์ ์์ ์ ๊ฐ์ด ์ฒ๋ฆฌํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
x = np.array([1,2,3])
y = np.array([3,5,7])
regr.fit(x.reshape(3,1), y)
plt.ylim(0,10)
plt.xlim(0,5)
plt.plot(x, y, 'o')
plt.plot(x, x * regr.coef_)
์์ ์์ ์ ๊ฐ์ด ๊ธฐ์ธ๊ธฐ .. ์ฆ ์๊ด๊ณ์๋ 2 ์ง๋ง 3,5,7 ์ ์ฌ๊ธฐ์ ๋ค์ 1์ ๋ํด์ค ๊ฐ์ด๋ค. ์์ปจ๋ฐ ๋ ๊ฐ์ ๊ด๊ณ๋ ๋ค์๊ณผ ๊ฐ๋ค.
y = x * 2 + 1
2 ๋ผ๋ x ์ 1์ฐจํญ ๊ณ์์ ์ถ๊ฐ๋ก 1์ด๋ผ๋ ์์ํญ์ ์ง๋ ์์ด๋ค. ์ด ์์ํญ์ ๊ฐ์
regr.intercept_
์ผ๋ก ์ ์ฅ๋๋ค.
์ฐ์ต : ์์ํญ์ ํฌํจ ๊ทธ๋ํ ๊ทธ๋ฆฌ๊ธฐ
์์ x,y ์ ๋ํด regr.coef_ ์ regr.interceipt_ ๊น์ง ํฌํจํด ๋ค์๊ณผ ๊ฐ์ ์ง์ ์ ๊ทธ๋ ค๋ณด์.
x = np.array([1,2,3])
y = np.array([3,5,7])
regr.fit(x.reshape(3,1), y)
plt.ylim(0,10)
# ์ฐ์ต๋ฌธ์ ์ ์ฝ๋๋ฅผ ์์ฑํ์ธ์
plt.plot(x,y,'o')
plt.plot(x,x * regr.coef_+ regr.intercept_)
plt.xlim(0,5)
plt.show()
score : ๊ฒฐ์ ๊ณ์
์ด๋ฒ์ ๋ ธ์ด์ฆ๋ฅผ ํฌํจํ 3 * x + 2 ๋ฐ์ดํฐ 50๊ฐ๋ฅผ ์์ฑํด์ ์ ํ ๋จ์ํ๊ท๋ถ์์ ์ํํด๋ณด์ ๋ ธ์ด์ฆ๋ ํธ์ฐจ 5์ ์ ๊ท๋ถํฌ๋ก ์์ฑํ๋ค.
n = 50
x = np.arange(0,n,1)
y = x * 3 + 2 + np.random.normal(0,5,n)
plt.plot(x,y, 'o')
regr.fit(x.reshape(n,1),y)
plt.plot(x, x * regr.coef_ + regr.intercept_)
plt.show()
print(regr.score(x.reshape(n,1),y))
์ฐ์ต : ๊ฒฐ์ ๊ณ์ ๊ตฌํ๊ธฐ
๋ค์ ๋ฐ์ดํฐ๋ฅผ ํ๊ท๋ถ์ํ๊ณ ๊ฒฐ์ ๊ณ์๋ฅผ ๊ตฌํด๋ณด์ธ์.
x = np.array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9])
y = np.array([0.71, 0.79, 1.28, 1.28, 1.24, 1.41, 1.73, 1.88, 2.15, 2.42])
plt.plot(x,y,'o')
plt.plot(x,x * regr.coef_ + regr.intercept_)
# ์ฐ์ต๋ฌธ์ ์ ์ฝ๋๋ฅผ ์์ฑํ์ธ์
regr.fit(x.reshape(-1,1),y)
print(regr.score(x.reshape(-1,1),y))
๋ค์ค ํ๊ท๋ถ์
์์ ํ๊ท ๋ถ์์ x -> y ์ ์ง์ ์ ์ ํ๊ด๊ณ์ ๋ํ ํ๊ท ๋ถ์์ด๋ค. ํ์ง๋ง ๋ง์ผ ๋ณ์๊ฐ 2์ฐจ์ ๋ฐ์ดํฐ๋ผ๋ฉด ์ด๋จ๊น?
์๋ฅผ ๋ค์ด ๋ค์์ ๋ฐ์ดํฐ๋ฅผ ๋ณด์.
2์ฐจ์ ์๊ฐํ
๋คํญ ํ๊ท๋ถ์
๋จ์ ํ๊ท ๋ถ์์ ๋ชจ๋ ๋ฐ์ดํฐ์ ์ฐ๊ด์ฑ์ ์ง์ ์์ผ๋ก ๊ฐ์ ํ๋ค. ๋๋ถ๋ถ์ ๋น๋ก๊ด๊ณ๊ฐ ๋๋ถ๋ถ ์ง์ ์ ์ฑํฅ์ ๋๋ ๊ฒ๋ ์ฌ์ค์ด์ง๋ง ๋ฐ์ดํฐ์ ์ ๊ณฑ์ ๋น๋กํด ์ฆ๊ฐํ๋ ๊ณก์ ํํ์ ์๊ด๊ด๊ณ๋ฅผ ๊ฐ๋ ๊ฒฝ์ฐ๋ ์๋ค. ๋คํญํ๊ท๋ถ์์ ๋คํญ์์ฒ๋ผ x ์ 2์ฐจ์ ์ด์์ ๊ณ์๋ฅผ ๋์ถ ํ๋ ๋ฐฉ๋ฒ์ด๋ค.
n = 100
x = np.linspace(-30,30,n)
y = x ** 2 * 5 + np.random.normal(0,300,n)
plt.plot(x,y, 'o')
plt.show()
์ด๋ฅผ ๊ธฐ์กด์ ๋ฐฉ์์ผ๋ก ๋จ์ 1์ฐจ์ ํญ๋ง ๊ฐ์ง ํ๊ท๋ถ์์ผ๋ก ๊ตฌํ ๊ฒฝ์ฐ ๊ฑฐ์ ์์ธก์ด ๋ถ๊ฐ๋ฅํ ๋ชจ๋ธ์ ์ป๊ฒ๋๋ค.
regr.fit( x.reshape(-1,1), y )
plt.plot(x, y, 'o')
plt.plot(x, x * regr.coef_ + regr.intercept_ )
plt.show()
print( "R2:", regr.score( x.reshape(-1,1), y))
๊ฒฐ์ ๊ณ์๊ฐ 0.001 ๋ ์๋๋ ์ฒ์ฐธํ ๋ชจ๋ธ์ด ํ์ํ๋ค. ์ด๋ 1์ฐจ์์ผ๋ก๋ ์ ํฉํ ๋ชจ๋ธ์ ํํํ ์๋ ์์์ ์๋ฏธํ๋ค.
ํ์ง๋ง ์ฌ๊ธฐ์ x ๋์ x์ ์ ๊ณฑ์ด ๋ด๊ธด ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น?
๋์ ๊ด๊ณ๊ฐ ์ง์ ์ ๊ฐ๊น๊ฒ ๋ฐ๋๊ฒ์ ๋ณผ ์ ์์๊ฒ์ด๋ค. ์ด๋ ์์ ์์
x2 = x ** 2
y = x2 * 5
๋ก ๋ณํ ํ๊ธฐ ๋๋ฌธ์ y ์ x2 ์ 1์ฐจํญ ๋ฌธ์ ๋ก ๋ณํ๋์๊ธฐ ๋๋ฌธ์ด๋ค. ์ด์ ์ด๊ฒ์ ํ๊ท ๋ถ์ ํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
regr.fit( x2.reshape(-1,1), y )
plt.plot(x2, y, 'o')
plt.plot(x2, x2 * regr.coef_ + regr.intercept_ )
plt.show()
์ด์ y ์ด๊ฒ์ x ์ ๋ํด์ ๊ทธ๋ฆฌ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๊ทธ๋ ค์ง๋ค.
regr.fit( x2.reshape(-1,1), y )
plt.plot(x, y, 'o')
plt.plot(x, x**2 * regr.coef_ + regr.intercept_ )
plt.show()
'IT & Security > AI' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ธ๊ณต์ง๋ฅ] ๋ํ์ด ์์ฉ | ์ฐ์ฐ | ์ธ๊ณต์ง๋ฅ | ํ์ด์ฌ ๋ํ์ด (0) | 2021.03.23 |
---|---|
[์ธ๊ณต์ง๋ฅ] Numpy (๋ํ์ด) (0) | 2021.03.15 |
[์ธ๊ณต์ง๋ฅ] Google Colab (0) | 2021.03.08 |
์์คํ ๊ณต๊ฐ ๊ฐ์ฌํฉ๋๋ค