AI ์ค๋ฌด ์์ฉ ๊ณผ์
[์์ฉ๊ต์ก๊ณผ์ ] ๋จธ์ ๋ฌ๋ ์์ํ๊ธฐ (2) ์ง๋ํ์ต - ํ๊ท
ํ๊ท ๊ฐ๋ ์์๋ณด๊ธฐ
[๊ฐ์ ] ์์ด์คํฌ๋ฆผ ๊ฐ๊ฒ ์ด์์์ผ ๋, ์์๋๋ ์ค์ ํ๋งค๋๋งํผ๋ง์ ์ฃผ๋ฌธ๋์ ์ํ๋ค. ์ด ๋ ๋ง์ฝ ํ๊ท ๊ธฐ์จ์ ์ด์ฉํด ํ๋งค๋์ ์์ํ ์ ์๋ค๋ฉด?
[๋ฌธ์ ์ ์]
๋ฐ์ดํฐ : ๊ณผ๊ฑฐ ํ๊ท ๊ธฐ์จ(X)๊ณผ ๊ทธ์ ๋ฐ๋ฅธ ์์ด์คํฌ๋ฆผ ํ๋งค๋(y)
๊ฐ์ : ํ๊ท ๊ธฐ์จ๊ณผ ํ๋งค๋์ ์ ํ์ ์ธ ๊ด๊ณ๋ฅผ ๊ฐ์ง๊ณ ์์ * ์ ํ ๊ด๊ณ : ๊ฐ์ ์ฆ๊ฐ ๊ฒฝํฅ์ฑ์ ๋ณด์ด๋ ๊ด๊ณ
๋ชฉํ : ํ๊ท ๊ธฐ์จ์ ๋ค๋ฅธ ์์ด์คํฌ๋ฆผ ํ๋งค๋ ์์ธกํ๊ธฐ
ํด๊ฒฐ๋ฐฉ์ : ์์ธก๋์์ด ์๊ณ , ๊ทธ์ ๋ํ feature label์ด ์์ผ๋ฏ๋ก ์ง๋ํ์ต -> ์์ธกํด์ผํ y๋ฐ์ดํฐ๊ฐ ์์นํ ๊ฐ์ด๋ฏ๋ก ํ๊ท ๋ถ์ ์๊ณ ๋ฆฌ์ฆ
ํ๊ท ๋ถ์์ด๋?
label์ด ์์นํ์ผ ๋, ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฅ ์ ์ค๋ช
ํ๋ ๋ชจ๋ธ์ ์ฐพ์ ์
๋ ฅ๊ฐ์ ๋ฐ๋ฅธ ๋ฏธ๋ ๊ฒฐ๊ณผ๊ฐ์ ์์ธกํ๋ ์๊ณ ๋ฆฌ์ฆ
์ฃผ์ด์ง ๋ฐ์ดํฐ X : ํ๊ท ๊ธฐ์จ, y : ์์ด์คํฌ๋ฆผ ํ๋งค๋
๊ฐ์ : Y = β0 + β1X (์ง์ ๋ชจ๋ธ)
๋ชฉํ : ์ ์ ํ β0, β1๊ฐ(๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฅ ์ ์ค๋ช
ํ๋ ๋ชจ๋ธ)์ ์ฐพ์
์ ์ ํ β0, β1๊ฐ ์ฐพ๊ธฐ
์๋ฒฝํ ์์ธก์ ๋ถ๊ฐ๋ฅํ๋ฏ๋ก ์ต๋ํ ์ ๊ทผ์ฌํด์ผํ๋ค.
๊ฐ ๋ฐ์ดํฐ์ ์ค์ ๊ฐ๊ณผ ๋ชจ๋ธ์ด ์์ธกํ๋ ๊ฐ์ ์ฐจ์ด๋ฅผ ์ต์ํ์ผ๋ก ํ๋ ์ ์ ์ฐพ์.
๋จ์ ์ ํ ํ๊ท ๋ชจ๋ธ์ ํ์ตํ๋ฉฐ ์ฐจ์ด๋ฅผ ์ต์ํ์ผ๋ก ํ๋ ์ ์ ์ฐพ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์.
๋จ์ ์ ํ ํ๊ท
๋จ์์ ํํ๊ท๋?
๋ฐ์ดํฐ๋ฅผ ์ค๋ช
ํ๋ ๋ชจ๋ธ์ ์ง์ ํํ๋ก ๊ฐ์ ํ ๊ฒ
Y = β0 + β1X
์ง์ ์ ๊ตฌ์ฑํ๋ β0(y์ ํธ)์ β1(๊ธฐ์ธ๊ธฐ)๋ฅผ ๊ตฌํด์ผ ํจ
๋ฐ์ดํฐ๋ฅผ ์ ์ค๋ช
ํ๋ค๋ ๊ฒ์?
์ค์ ์ ๋ต๊ณผ ๋ด๊ฐ ์์ธกํ ๊ฐ๊ณผ์ ์ฐจ์ด๊ฐ ์์์๋ก ์ข์ง ์์๊น?
-> ์ผ์ชฝ ๊ทธ๋ํ์ ์ฐจ์ด๊ฐ ์ค๋ฅธ์ชฝ์ ๋นํด ์ ์ด ๋ณด์ธ๋ค.
์ค์ ๊ฐ๊ณผ ์์ธก ๊ฐ์ ์ฐจ์ด๋ฅผ ๊ตฌํด๋ณด์.
์ค์ ๊ฐ๊ณผ ์์ธก ๊ฐ์ ์ฐจ์ด์ ํฉ์ผ๋ก ๋น๊ตํ๊ธฐ์๋ ์์ธ๊ฐ ์๋ค.
[ํด์] ํฉ๊ณ๊ฐ ๋ ๋ค 0์ด์ง๋ง, ์ฐ์ธก์ ๊ทธ๋ํ๊ฐ 100%๋ฅผ ์ค๋ช ํ๊ณ ์๋ค. ์ค์ ๊ฐ๊ณผ ์์ธก๊ฐ์ ํฉ์ ์ข์ ๋ฐฉ๋ฒ์ด ์๋๋ค.
์ค์ ๊ฐ๊ณผ ์์ธก ๊ฐ์ ์ฐจ์ด์ ์ ๊ณฑ์ ํฉ์ผ๋ก ๋น๊ตํ์.
Lossํจ์
์ค์ ๊ฐ๊ณผ ์์ธก ๊ฐ ์ฐจ์ด์ ์ ๊ณฑ์ ํฉ์ Lossํจ์๋ก ์ ์ํ๋ค. -> Lossํจ์๊ฐ ์์์๋ก ์ข์ ๋ชจ๋ธ
Lossํจ์ ์ค์ด๊ธฐ
Lossํจ์์์ ์ฃผ์ด์ง ๊ฐ์ ์
๋ ฅ ๊ฐ๊ณผ ์ค์ ๊ฐ์ด๋ค.
β0(y์ ํธ)์ β1(๊ธฐ์ธ๊ธฐ) ๊ฐ์ ์กฐ์ ํ์ฌ Lossํจ์์ ํฌ๊ธฐ๋ฅผ ์๊ฒ ๋ง๋ ๋ค -> ๊ฑฐ์ ๋ชจ๋ ์ง์ ์ ๊ทธ๋ฆด ์ ์๋ค!
๊ธฐ์ธ๊ธฐ ๊ฐ์ด ์ปค์ง๋ฉด ์ง์ ์ด ์์ชฝ์ผ๋ก ์๊ณ , ๊ธฐ์ธ๊ธฐ ๊ฐ์ด ์์์ง๋ฉด ์ง์ ์ด ์๋๋ก ๋ด๋ ค๊ฐ๋ค -> ๊ฐ๋ ์กฐ์
์ ํธ์ด ์ปค์ง๋ฉด y์ถ ์์ชฝ์์ ์์ํ๋ ์ง์ , ์ ํธ์ด ์์์ง๋ฉด y์ถ ์๋์์ ์์ํ๋ ์ง์
Loss๊ฐ์ ๊ตฌํด์ ๊ทธ ์ง์ ์ด ์ผ๋ง๋ ์ข์ ์ง์ ์ธ์ง ํ๋จํ ์ ์๋ ๊ทผ๊ฑฐ๊ฐ ๋๋ค
Lossํจ์์ ํฌ๊ธฐ๋ฅผ ์๊ฒ ํ๋ β0(y์ ํธ)์ β1(๊ธฐ์ธ๊ธฐ)๋ฅผ ์ฐพ๋ ๋ฐฉ๋ฒ
1) Gradient descent (๊ฒฝ์ฌ ํ๊ฐ๋ฒ)
2) Normal equation (least squares)
3) Brute force search
4) ...
๊ฒฝ์ฌํ๊ฐ๋ฒ
Lossํจ์ ๊ฐ์ด ์ ์ผ ์๊ฒ ํ๋ ์ ํธ, ๊ธฐ์ธ๊ธฐ๋ฅผ β0*, β1*์ด๋ผ๊ณ ํ์.
๊ฒฝ์ฌ ํ๊ฐ๋ฒ์ ๊ณ์ฐ ํ๋ฒ์ผ๋ก β0*, β1*๋ฅผ ๊ตฌํ๋ ๊ฒ์ด ์๋๋ผ, ์ด๊ธฐ๊ฐ์์ ์ ์ง์ ์ผ๋ก ๊ตฌํ๋ ๋ฐฉ์์ด๋ค.
* ์ด๊ธฐ๊ฐ : ์์์ β0*, β1*๊ฐ
β0, β1๊ฐ์ Lossํจ์ ๊ฐ์ด ์์์ง๊ฒ ๊ณ์ updateํ๋ ๋ฐฉ๋ฒ
1) β0, β1๊ฐ์ ๋๋คํ๊ฒ ์ด๊ธฐํ
2) ํ์ฌ β0, β1๊ฐ์ผ๋ก Loss๊ฐ ๊ณ์ฐ
3) ํ์ฌ β0, β1๊ฐ์ ์ด๋ป๊ฒ ๋ณํ์์ผ์ผ Loss๊ฐ์ ์ค์ผ ์ ์๋์ง ์ ์ ์๋ Gradient๊ฐ ๊ณ์ฐ
* Gradient๊ฐ : Loss๊ฐ์ ์ค์ผ ์ ์๊ฒ ํ๋์ง์ ๋ํ ํํธ, ์ด๋ฏธ์ง์์ ํ๊ฐํ๋ ๋ฐฉํฅ
4) Gredient๊ฐ์ ํ์ฉํ์ฌ β0, β1๊ฐ ์
๋ฐ์ดํธ
5) Loss๊ฐ์ ์ฐจ์ด๊ฐ ๊ฑฐ์ ์์ด์ง ๋๊น์ง 2~4๋ฒ ๊ณผ์ ์ ๋ฐ๋ณต (Loss๊ฐ๊ณผ ์ฐจ์ด๊ฐ ์ค๋ฉด, Gradient๊ฐ๋ ์์์ง)
๋จ์ ์ ํ ํ๊ท ๊ณผ์
1) ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ -> X, Y๊ฐ
2) ๋จ์ ์ ํ ํ๊ท ๋ชจ๋ธ ํ์ต -> ๊ฒฝ์ฌํ๊ฐ๋ฒ
3) ์๋ก์ด ๋ฐ์ดํฐ์ ๋ํ ์์ธก -> ์ต์ข
์ ์ธ ์ง์ ๊ตฌํ๊ธฐ (Loss๊ฐ์ด ์ ์ผ ์ ์)
๋จ์ ์ ํ ํ๊ท ํน์ง
๊ฐ์ฅ ๊ธฐ์ด์ , ์ฌ์ ํ ๋ง์ด ์ฌ์ฉ๋๋ ์๊ณ ๋ฆฌ์ฆ
์
๋ ฅ๊ฐ์ด 1๊ฐ์ธ ๊ฒฝ์ฐ์๋ง ์ ์ฉ ๊ฐ๋ฅ
์
๋ ฅ๊ฐ๊ณผ ๊ฒฐ๊ณผ๊ฐ์ ๊ด๊ณ๋ฅผ ์์๋ณด๋๋ฐ ์ฉ์ด
์
๋ ฅ๊ฐ์ด ๊ฒฐ๊ณผ๊ฐ์ ์ผ๋ง๋ ์ํฅ์ ๋ฏธ์น๋์ง ์ ์ ์์
๋ ๋ณ์ ๊ฐ์ ๊ด๊ณ๋ฅผ ์ง๊ด์ ์ผ๋ก ํด์ํ๊ณ ์ ํ๋ ๊ฒฝ์ฐ ํ์ฉ
[์ฐ์ต๋ฌธ์ ] ๋จ์ ์ ํ ํ๊ท ๋ถ์ํ๊ธฐ - ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ
์ฃผ์ด์ง ๋ฐ์ดํฐ๋ฅผ sklearn์์ ๋ถ๋ฌ ์ฌ ์ ํ ๋ชจ๋ธ์ ์ ์ฉํ๊ธฐ ์ํด์๋ ์ ์ฒ๋ฆฌ๊ฐ ํ์ํฉ๋๋ค.
์ด๋ฒ ์ค์ต์์๋ sklearn์์ ์ ๊ณตํ๋ LinearRegression์ ์ฌ์ฉํ๊ธฐ ์ํ ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ๋ฅผ ์ํํด๋ณด๊ฒ ์ต๋๋ค.
LinearRegression ๋ชจ๋ธ์ ์
๋ ฅ๊ฐ์ผ๋ก๋ Pandas์ DataFrame์ feature (X) ๋ฐ์ดํฐ์ Series ํํ์ label (Y) ๋ฐ์ดํฐ๋ฅผ ์
๋ ฅ ๋ฐ์ ์ ์์ต๋๋ค.
X, Y์ ์ํ์ ๊ฐ์๋ ๊ฐ์์ผ ํฉ๋๋ค.
1. X ๋ฐ์ดํฐ๋ฅผ column ๋ช
์ด X์ธ DataFrame์ผ๋ก ๋ณํํ๊ณ train_X์ ์ ์ฅํฉ๋๋ค.
2. ๋ฆฌ์คํธ Y๋ฅผ Series ํ์์ผ๋ก ๋ณํํ์ฌ train_Y์ ์ ์ฅํฉ๋๋ค.
import matplotlib as mpl
mpl.use("Agg")
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression
import elice_utils
eu = elice_utils.EliceUtils()
X = [8.70153760, 3.90825773, 1.89362433, 3.28730045, 7.39333004, 2.98984649, 2.25757240, 9.84450732, 9.94589513, 5.48321616]
Y = [5.64413093, 3.75876583, 3.87233310, 4.40990425, 6.43845020, 4.02827829, 2.26105955, 7.15768995, 6.29097441, 5.19692852]
#1. X์ ํํ๋ฅผ ๋ณํํ์ฌ train_X์ ์ ์ฅํฉ๋๋ค.
train_X = pd.DataFrame(X, columns=['X'])
#2. Y์ ํํ๋ฅผ ๋ณํํ์ฌ train_Y์ ์ ์ฅํฉ๋๋ค.
train_Y = pd.Series(Y)
#๋ณํ๋ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
print('์ ์ฒ๋ฆฌํ X ๋ฐ์ดํฐ: \n {}'.format(train_X))
print('์ ์ฒ๋ฆฌํ X ๋ฐ์ดํฐ shape: {}\n'.format(train_X.shape))
print('์ ์ฒ๋ฆฌํ Y ๋ฐ์ดํฐ: \n {}'.format(train_Y))
print('์ ์ฒ๋ฆฌํ Y ๋ฐ์ดํฐ shape: {}'.format(train_Y.shape))
[์ฐ์ต๋ฌธ์ 2] ๋จ์ ์ ํ ํ๊ท ๋ถ์ํ๊ธฐ - ํ์ตํ๊ธฐ
๊ธฐ๊ณํ์ต ๋ผ์ด๋ธ๋ฌ๋ฆฌ scikit-learn ์ ์ฌ์ฉํ๋ฉด Loss ํจ์๋ฅผ ์ต์๊ฐ์ผ๋ก ๋ง๋๋ β0, β1์ ์ฝ๊ฒ ๊ตฌํ ์ ์์ต๋๋ค.
[์ฐ์ต๋ฌธ์ 1]์์ ์ ์ฒ๋ฆฌํ ๋ฐ์ดํฐ๋ฅผ LinearRegression ๋ชจ๋ธ์ ์
๋ ฅํ์ฌ ํ์ต์ ์ํํด๋ด
์๋ค.
import matplotlib as mpl
mpl.use("Agg")
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression
import elice_utils
eu = elice_utils.EliceUtils()
X = [8.70153760, 3.90825773, 1.89362433, 3.28730045, 7.39333004, 2.98984649, 2.25757240, 9.84450732, 9.94589513, 5.48321616]
Y = [5.64413093, 3.75876583, 3.87233310, 4.40990425, 6.43845020, 4.02827829, 2.26105955, 7.15768995, 6.29097441, 5.19692852]
train_X = pd.DataFrame(X, columns=['X'])
train_Y = pd.Series(Y)
#1. ๋ชจ๋ธ์ ์ด๊ธฐํ ํฉ๋๋ค.
lrmodel = LinearRegression()
#2. train_X, train_Y ๋ฐ์ดํฐ๋ฅผ ํ์ตํฉ๋๋ค.
lrmodel.fit(train_X, train_Y)
#ํ์ตํ ๊ฒฐ๊ณผ๋ฅผ ์๊ฐํํ๋ ์ฝ๋์
๋๋ค.
plt.scatter(X, Y)
plt.plot([0, 10], [lrmodel.intercept_, 10 * lrmodel.coef_[0] + lrmodel.intercept_], c='r')
plt.xlim(0, 10)
plt.ylim(0, 10)
plt.title('Training Result')
plt.savefig("test.png")
eu.send_image("test.png")
[์ฐ์ต๋ฌธ์ 3] ๋จ์ ์ ํ ํ๊ท ๋ถ์ํ๊ธฐ - ์์ธกํ๊ธฐ
[์ค์ต2]์ ํ์ตํ ๋ชจ๋ธ์ ๋ฐํ์ผ๋ก ์์ธก ๊ฐ์ ๊ตฌํด๋ด
์๋ค.
LinearRegression์ ์ฌ์ฉํ์ฌ ์์ธก์ ํด์ผํ๋ค๋ฉด predict ํจ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
1. lrmodel์ ํ์ตํ๊ณ train_X์ ์์ธก๊ฐ์ ๊ตฌํ์ฌ pred_X์ ์ ์ฅํฉ๋๋ค.
import matplotlib as mpl
mpl.use("Agg")
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from sklearn.linear_model import LinearRegression
import elice_utils
eu = elice_utils.EliceUtils()
X = [8.70153760, 3.90825773, 1.89362433, 3.28730045, 7.39333004, 2.98984649, 2.25757240, 9.84450732, 9.94589513, 5.48321616]
Y = [5.64413093, 3.75876583, 3.87233310, 4.40990425, 6.43845020, 4.02827829, 2.26105955, 7.15768995, 6.29097441, 5.19692852]
train_X = pd.DataFrame(X, columns=['X'])
train_Y = pd.Series(Y)
#๋ชจ๋ธ์ ํธ๋ ์ด๋ํฉ๋๋ค.
lrmodel = LinearRegression()
lrmodel.fit(train_X, train_Y)
#1. train_X์ ๋ํด์ ์์ธกํฉ๋๋ค.
pred_X = lrmodel.predict(train_X)
print('train_X์ ๋ํ ์์ธก๊ฐ : \n{}\n'.format(pred_X))
print('์ค์ ๊ฐ : \n{}'.format(train_Y))
๋ค์ค ์ ํ ํ๊ท
[๊ฐ์ ] ๋ง์ฝ, ์
๋ ฅ๊ฐ X์ ๊ฐ์๋์ด ์ถ๊ฐ๋๋ค๋ฉด?
์ฆ, ํ๊ท ๊ธฐ์จ๊ณผ ํ๊ท ๊ฐ์๋์ ๋ฐ๋ฅธ ์์ด์คํฌ๋ฆผ ํ๋งค๋์ ์์ธกํ๊ณ ์ ํ ๋
์ฌ๋ฌ ๊ฐ์ ์ ๋ ฅ๊ฐ(X)์ผ๋ก ๊ฒฐ๊ณผ๊ฐ(Y)์ ์์ธกํ๊ณ ์ ํ๋ ๊ฒฝ์ฐ -> ๋ค์ค ์ ํ ํ๊ท
๋ค์ค ์ ํ ํ๊ท ๋ชจ๋ธ ์ดํดํ๊ธฐ
์
๋ ฅ๊ฐ X๊ฐ ์ฌ๋ฌ ๊ฐ(2๊ฐ ์ด์)์ธ ๊ฒฝ์ฐ ํ์ฉํ ์ ์๋ ํ๊ท ์๊ณ ๋ฆฌ์ฆ
๊ฐ ๊ฐ๋ณ Xi์ ํด๋นํ๋ ์ต์ ์ βi๋ฅผ ์ฐพ์์ผ ํ๋ค.
์ ํ ๊ด๊ณ๋ฅผ ๊ฐ์ ํ๋ค.
๋ค์ค ์ ํ ํ๊ท ๋ชจ๋ธ์ Lossํจ์
๋จ์ ์ ํ ํ๊ท์ ๋ง์ฐฌ๊ฐ์ง๋ก Lossํจ์๋ ์
๋ ฅ๊ฐ๊ณผ ์ค์ ๊ฐ ์ฐจ์ด์ ์ ๊ณฑ์ ํฉ์ผ๋ก ์ ์ํ๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก β0, β1, β2...βm ๊ฐ์ ์กฐ์ ํ์ฌ Lossํจ์์ ํฌ๊ธฐ๋ฅผ ์๊ฒ ํ๋ค.
ํ๊ท ๊ธฐ์จ๊ณผ ํ๊ท ๊ฐ์๋์ผ๋ก ์์ด์คํฌ๋ฆผ ํ๋งค๋ ์์ธก ์์
543.94/4 = Loss๊ฐ์ ์ฝ 133
๋ค์ค ์ ํ ํ๊ท ๋ชจ๋ธ์ ๊ฒฝ์ฌ ํ๊ฐ๋ฒ
β0, β1, β2...βm ๊ฐ์ Lossํจ์ ๊ฐ์ด ์์์ง๊ฒ ๊ณ์ ์ ๋ฐ์ดํธ ํ๋ ๋ฐฉ๋ฒ
1) β0, β1, β2...βm ๊ฐ์ ๋๋คํ๊ฒ ์ด๊ธฐํ
2) ํ์ฌ β0, β1, β2...βm ๊ฐ์ผ๋ก Loss๊ฐ ๊ณ์ฐ
3) ํ์ฌ β0, β1, β2...βm ๊ฐ์ ์ด๋ป๊ฒ ๋ณํ์์ผ์ผ Loss๊ฐ์ ์ค์ผ ์ ์๋์ง ์ ์ ์๋ Gradient๊ฐ ๊ณ์ฐ
* Gradient๊ฐ : Loss๊ฐ์ ์ค์ผ ์ ์๊ฒ ํ๋์ง์ ๋ํ ํํธ
4) Gredient๊ฐ์ ํ์ฉํ์ฌ β0, β1, β2...βm ๊ฐ ์
๋ฐ์ดํธ
5) Loss๊ฐ์ ์ฐจ์ด๊ฐ ๊ฑฐ์ ์์ด์ง ๋๊น์ง 2~4๋ฒ ๊ณผ์ ์ ๋ฐ๋ณต (Loss๊ฐ๊ณผ ์ฐจ์ด๊ฐ ์ค๋ฉด, Gradient๊ฐ๋ ์์์ง)
ํ๊ท ๊ธฐ์จ๊ณผ ํ๊ท ๊ฐ์๋์ผ๋ก ์์ด์คํฌ๋ฆผ ํ๋งค๋ ์์ธก ์์
42.89/4 = Loss๊ฐ์ ์ฝ 10
์ด์ ์ 133์์ Loss๊ฐ์ด ํ์ ํ ์ค์์์ ์ ์ ์๋ค.
๋ค์ค ์ ํ ํ๊ท ํน์ง
์ฌ๋ฌ ๊ฐ์ ์
๋ ฅ๊ฐ๊ณผ ๊ฒฐ๊ณผ๊ฐ ๊ฐ์ ๊ด๊ณ ํ์ธ ๊ฐ๋ฅ
์ด๋ค ์
๋ ฅ๊ฐ์ด ๊ฒฐ๊ณผ๊ฐ์ ์ด๋ ํ ์ํฅ์ ๋ฏธ์น๋์ง ์ ์ ์์
์ฌ๋ฌ ๊ฐ์ ์
๋ ฅ๊ฐ ์ฌ์ด ๊ฐ์ ์๊ด๊ด๊ณ๊ฐ ๋์ ๊ฒฝ์ฐ ๊ฒฐ๊ณผ์ ๋ํ ์ ๋ขฐ์ฑ์ ์์ ๊ฐ๋ฅ์ฑ์ด ์์
* ์๊ด๊ด๊ณ : ๋ ๊ฐ์ง ๊ฒ์ ํ์ชฝ์ด ๋ณํํ๋ฉด ๋ค๋ฅธ ํ์ชฝ๋ ๋ฐ๋ผ์ ๋ณํํ๋ ๊ด๊ณ
* ๋ง์ฝ X1๊ณผ X2์ ์๊ด๊ด๊ณ๊ฐ ๋๋ค๋ฉด? β๋ ๊ฐ๊ฐ์ X์ ๋ํด ์ผ๋ง๋ ์ํฅ์ ๋ฏธ์น๋์ง๋ฅผ ์๊ณ ์ถ์ด ์์ ํ ๋ณ์์ธ๋ฐ, X1์ด ์ปค์ง ๋ X2๋ ์ปค์ง๋ฉด ์๋ก์ β์ ์ํฅ์ ๋ฏธ์น๊ฒ ๋๊ณ , ๊ฐ์ ์ ๋ฒ์ด๋๋ค (์ ๋ขฐ์ฑ์ ์๋๋ค)
[์ฐ์ต๋ฌธ์ 4] ๋ค์ค ํ๊ท ๋ถ์ํ๊ธฐ - ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ
FB, TV, Newspaper ๊ด๊ณ ์ ๋ํ ๋น์ฉ ๋๋น Sales ๋ฐ์ดํฐ๊ฐ ์ฃผ์ด์ก์ ๋, ์ด๋ฅผ ๋ค์ค ํ๊ท ๋ถ์์ผ๋ก ๋ถ์ํด๋ด
์๋ค.
๋ฐ์ดํฐ๋ฅผ ์ ์ฒ๋ฆฌ ํ๊ธฐ ์ํด์ 3๊ฐ์ ๋ณ์๋ฅผ ๊ฐ๋ feature ๋ฐ์ดํฐ์ Sales ๋ณ์๋ฅผ label ๋ฐ์ดํฐ๋ก ๋ถ๋ฆฌํ๊ณ ํ์ต์ฉ, ํ๊ฐ์ฉ ๋ฐ์ดํฐ๋ก ๋๋ ๋ด
์๋ค.
1. DataFrame์ผ๋ก ์ฝ์ด ์จ df์์ Sales ๋ณ์๋ label ๋ฐ์ดํฐ๋ก Y์ ์ ์ฅํ๊ณ ๋๋จธ์ง X์ ์ ์ฅํฉ๋๋ค.
2/ train_test_split๋ฅผ ์ฌ์ฉํ์ฌ X, Y๋ฅผ ํ์ต์ฉ:ํ๊ฐ์ฉ=8:2ํ์ต์ฉ : ํ๊ฐ์ฉ = 8:2ํ์ต์ฉ:ํ๊ฐ์ฉ=8:2 ๋น์จ๋ก ๋ถ๋ฆฌํฉ๋๋ค. (random_state=42๋ ๊ณ ์ ํฉ๋๋ค.)
import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score
from sklearn.model_selection import train_test_split
df = pd.read_csv("data/Advertising.csv")
print('์๋ณธ ๋ฐ์ดํฐ ์ํ :')
print(df.head(),'\n')
#์
๋ ฅ ๋ณ์๋ก ์ฌ์ฉํ์ง ์๋ Unnamed: 0 ๋ณ์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํฉ๋๋ค
df = df.drop(columns=['Unnamed: 0'])
#1. Sales ๋ณ์๋ label ๋ฐ์ดํฐ๋ก Y์ ์ ์ฅํ๊ณ ๋๋จธ์ง X์ ์ ์ฅํฉ๋๋ค.
X = df.drop(columns=['Sales'])
Y = df['Sales']
#2. ํ์ต์ฉ ํ๊ฐ์ฉ ๋ฐ์ดํฐ๋ก ๋ถ๋ฆฌํฉ๋๋ค.
train_X, test_X, train_Y, test_Y = train_test_split(X, Y, test_size=0.2, random_state=42)
#์ ์ฒ๋ฆฌํ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํฉ๋๋ค
print('train_X : ')
print(train_X.head(),'\n')
print('train_Y : ')
print(train_Y.head(),'\n')
print('test_X : ')
print(test_X.head(),'\n')
print('test_Y : ')
print(test_Y.head())
[์ฐ์ต๋ฌธ์ 5] ๋ค์ค ํ๊ท ๋ถ์ํ๊ธฐ - ํ์ตํ๊ธฐ
[์ค์ต4]์์ ์ ์ฒ๋ฆฌํ ๋ฐ์ดํฐ๋ฅผ ๋ฐํ์ผ๋ก ๋ค์ค ์ ํ ํ๊ท ๋ชจ๋ธ์ ์ ์ฉํด๋ณด๊ฒ ์ต๋๋ค.
๋ค์ค ์ ํ ํ๊ท ๋ํ ์ ํ ํ๊ท ๋ชจ๋ธ๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก LinearRegression์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด๋ฒ ์ค์ต์์๋ ํ์ต์ฉ ๋ฐ์ดํฐ๋ฅผ ๋ค์ค ์ ํ ํ๊ท ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ํ์ตํ๊ณ , ํ์ต๋ ํ๋ผ๋ฏธํฐ๋ฅผ ์ถ๋ ฅํด๋ด
์๋ค.
LinearRegression์ beta์ ๊ฐ์ ํ๋ผ๋ฏธํฐ๋ค์ ์๋ ์ฝ๋์ ๊ฐ์ด ๊ตฌํ ์ ์์ต๋๋ค.
lrmodel = LinearRegression()
lrmodel.intercept_
lrmodel.coef_[i]
1. ๋ค์ค ์ ํ ํ๊ท ๋ชจ๋ธ LinearRegression์ ๋ถ๋ฌ์ lrmodel์ ์ด๊ธฐํํ๊ณ fit์ ์ฌ์ฉํ์ฌ train_X, train_Y๋ฐ์ดํฐ๋ฅผ ํ์ตํฉ๋๋ค.
2. ํ์ต๋ ๋ชจ๋ธ lrmodel์์ beta_0, beta_1, beta_2, beta_3์ ํด๋นํ๋ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ถ๋ฌ์ ์ ์ฅํฉ๋๋ค.
import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score
from sklearn.model_selection import train_test_split
#๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ ์ฒ๋ฆฌํฉ๋๋ค
df = pd.read_csv("data/Advertising.csv")
df = df.drop(columns=['Unnamed: 0'])
X = df.drop(columns=['Sales'])
Y = df['Sales']
train_X, test_X, train_Y, test_Y = train_test_split(X, Y, test_size=0.2, random_state=42)
#1. ๋ค์ค ์ ํ ํ๊ท ๋ชจ๋ธ์ ์ด๊ธฐํ ํ๊ณ ํ์ตํฉ๋๋ค
lrmodel = LinearRegression()
lrmodel.fit(train_X, train_Y)
#2. ํ์ต๋ ํ๋ผ๋ฏธํฐ ๊ฐ์ ๋ถ๋ฌ์ต๋๋ค
beta_0 = lrmodel.intercept_ # y์ ํธ (๊ธฐ๋ณธ ํ๋งค๋)
beta_1 = lrmodel.coef_[0] # 1๋ฒ์งธ ๋ณ์์ ๋ํ ๊ณ์ (ํ์ด์ค๋ถ)
beta_2 = lrmodel.coef_[1] # 2๋ฒ์งธ ๋ณ์์ ๋ํ ๊ณ์ (TV)
beta_3 = lrmodel.coef_[2] # 3๋ฒ์งธ ๋ณ์์ ๋ํ ๊ณ์ (์ ๋ฌธ)
print("beta_0: %f" % beta_0)
print("beta_1: %f" % beta_1)
print("beta_2: %f" % beta_2)
print("beta_3: %f" % beta_3)
[์ฐ์ต๋ฌธ์ 6] ๋ค์ค ํ๊ท ๋ถ์ํ๊ธฐ - ์์ธกํ๊ธฐ
[์ค์ต5]์์ ํ์ตํ ๋ค์ค ์ ํ ํ๊ท ๋ชจ๋ธ์ ๋ฐํ์ผ๋ก ์ด๋ฒ์ ์๋ก์ด ๊ด๊ณ ๋น์ฉ์ ๋ฐ๋ฅธ Sales ๊ฐ์ ์์ธกํด๋ด
์๋ค.
LinearRegression์ ์ฌ์ฉํ์ฌ ์์ธก์ ํด์ผํ๋ค๋ฉด ์๋์ ๊ฐ์ด predict ํจ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
pred_X = lrmodel.predict(X)
1. lrmodel์ ํ์ตํ๊ณ test_X์ ์์ธก๊ฐ์ ๊ตฌํ์ฌ pred_X์ ์ ์ฅํฉ๋๋ค.
2. lrmodel์ ํ์ตํ๊ณ ์ฃผ์ด์ง ๋ฐ์ดํฐ df1์ ์์ธก๊ฐ์ ๊ตฌํ์ฌ pred_df1์ ์ ์ฅํฉ๋๋ค.
import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score
from sklearn.model_selection import train_test_split
#๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ ์ฒ๋ฆฌํฉ๋๋ค
df = pd.read_csv("data/Advertising.csv")
df = df.drop(columns=['Unnamed: 0'])
X = df.drop(columns=['Sales'])
Y = df['Sales']
train_X, test_X, train_Y, test_Y = train_test_split(X, Y, test_size=0.2, random_state=42)
#๋ค์ค ์ ํ ํ๊ท ๋ชจ๋ธ์ ์ด๊ธฐํ ํ๊ณ ํ์ตํฉ๋๋ค
lrmodel = LinearRegression()
lrmodel.fit(train_X, train_Y)
print('test_X : ')
print(test_X)
#1. test_X์ ๋ํด์ ์์ธกํฉ๋๋ค.
pred_X = lrmodel.predict(test_X)
print('test_X์ ๋ํ ์์ธก๊ฐ : \n{}\n'.format(pred_X))
#์๋ก์ด ๋ฐ์ดํฐ df1์ ์ ์ํฉ๋๋ค
df1 = pd.DataFrame(np.array([[0, 0, 0], [1, 0, 0], [0, 1, 0], [0, 0, 1], [1, 1, 1]]), columns=['FB', 'TV', 'Newspaper'])
print('df1 : ')
print(df1)
#2. df1์ ๋ํด์ ์์ธกํฉ๋๋ค.
pred_df1 = lrmodel.predict(df1)
print('df1์ ๋ํ ์์ธก๊ฐ : \n{}'.format(pred_df1))
ํ๊ท ํ๊ฐ ์งํ
์ด๋ค ๋ชจ๋ธ์ด ์ข์ ๋ชจ๋ธ์ธ์ง๋ฅผ ์ด๋ป๊ฒ ํ๊ฐํ ์ ์์๊น?
๋ชฉํ๋ฅผ ์ผ๋ง๋ ์ ๋ฌ์ฑํ๋์ง ์ ๋๋ฅผ ํ๊ฐํด์ผ ํ๋ค.
์ค์ ๊ฐ๊ณผ ๋ชจ๋ธ์ด ์์ธกํ๋ ๊ฐ์ ์ฐจ์ด์ ๊ธฐ๋ฐํ ํ๊ฐ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค. ex) RSS, MSE, MAE, MATE, R^2
RSS ๋จ์ ์ค์ฐจ
1. ์ค์ ๊ฐ๊ณผ ์์ธก ๊ฐ์ ๋จ์ ์ค์ฐจ ์ ๊ณฑ ํฉ
2. ๊ฐ์ด ์์์๋ก ๋ชจ๋ธ์ ์ฑ๋ฅ์ด ๋์
3. ์ ์ฒด ๋ฐ์ดํฐ์ ๋ํ ์ค์ ๊ฐ๊ณผ ์์ธกํ๋ ๊ฐ์ ์ค์ฐจ ์ ๊ณฑ์ ์ดํฉ
RSS ํน์ง
๊ฐ์ฅ ๊ฐ๋จํ ํ๊ฐ ๋ฐฉ๋ฒ์ผ๋ก ์ง๊ด์ ์ธ ํด์์ด ๊ฐ๋ฅ
๊ทธ๋ฌ๋ ์ค์ฐจ๋ฅผ ๊ทธ๋๋ก ์ด์ฉํ๋ฏ๋ก ์
๋ ฅ ๊ฐ์ ํฌ๊ธฐ์ ์์กด์ ์ (๋ฐ์ดํฐ์ ๋ฒ์ ์์ฒด๊ฐ ์์ผ๋ฉด RSS๋ ์๊ณ , ๋ฒ์๊ฐ ํฌ๋ฉด RSS๋ ํฌ๋ค)
์ ๋์ ์ธ ๊ฐ๊ณผ ๋น๊ต๊ฐ ๋ถ๊ฐ๋ฅ
MSE, MAE (์ ๋์ ์ธ ํฌ๊ธฐ์ ์์กดํ ์งํ)
1. MSE(Mean Squared Error)
ํ๊ท ์ ๊ณฑ ์ค์ฐจ, RSS์์ ๋ฐ์ดํฐ ์ ๋งํผ ๋๋ ๊ฐ.
์์์๋ก ๋ชจ๋ธ์ ์ฑ๋ฅ์ด ๋๋ค๊ณ ํ๊ฐํ ์ ์๋ค.
* MSE๋ ์งํ, Loss๋ ๋ชจ๋ธ์์ ์ค์ฌ์ผ ํ๋ ๊ฐ
2. MAE(Mean Absolute Error)
ํ๊ท ์ ๋๊ฐ ์ค์ฐจ, ์ค์ ๊ฐ๊ณผ ์์ธก ๊ฐ์ ์ค์ฐจ์ ์ ๋๊ฐ์ ํ๊ท
์์์๋ก ๋ชจ๋ธ์ ์ฑ๋ฅ์ด ๋๋ค๊ณ ํ๊ฐํ ์ ์๋ค.
MSE, MAE ํน์ง
MSE : ์ด์์น(Outlier) ์ฆ, ๋ฐ์ดํฐ๋ค ์ค ํฌ๊ฒ ๋จ์ด์ง ๊ฐ์ ๋ฏผ๊ฐํ๋ค
MAE : ๋ณ๋์ฑ์ด ํฐ ์งํ์ ๋ฎ์ ์งํ๋ฅผ ๊ฐ์ด ์์ธกํ ๋ ์ ์ฉํ๋ค
๊ฐ์ฅ ๊ฐ๋จํ ํ๊ฐ ๋ฐฉ๋ฒ๋ค๋ก ์ง๊ด์ ํด์์ด ๊ฐ๋ฅ
๊ทธ๋ฌ๋ ํ๊ท ์ ๊ทธ๋๋ก ์ด์ฉํ๋ฏ๋ก ์
๋ ฅ ๊ฐ์ ํฌ๊ธฐ์ ์์กด์
์ ๋์ ์ธ ๊ฐ๊ณผ ๋น๊ต ๋ถ๊ฐ๋ฅ
R^2 ๊ฒฐ์ ๊ณ์
ํ๊ท ๋ชจ๋ธ์ ์ค๋ช
๋ ฅ์ ํํํ๋ ์งํ
1์ ๊ฐ๊น์ธ์๋ก ๋์ ์ฑ๋ฅ์ ๋ชจ๋ธ์ด๋ผ๊ณ ํด์ํ ์ ์๋ค
TSS๋ ๋ฐ์ดํฐ ํ๊ท ๊ฐ๊ณผ ์ค์ ๊ฐ ์ฐจ์ด์ ์ ๊ณฑ
RSS๋ ์์ธก์ ์ํ ํ๊ท์ ์ ๊ธ๊ณ , ๊ทธ ํ๊ท์ ๊ณผ ์ค์ ๊ฐ๊ณผ์ ์ฐจ์ด
* TSS > RSS. RSS๋ฅผ 0์ ๊ฐ๊น์ด ๊ฐ์ ๋์ถํด๋ผ์๋ก, R^2์ ๊ฐ๋ 1์ ๊ฐ๊น์์ง๋ค (์ข์ ์์ธก)
0์ ๊ฐ๊น์ฐ๋ฉด ์ข์ง ๋ชปํ ์์ธก, ์์๊ฐ ๋์ถ๋๋ฉด ์์ ํ๋ค๋ฆฌ ๋ชจ๋ธ
R^2 ํน์ง
์ค์ฐจ๊ฐ ์์ ์๋ก 1์ ๊ฐ๊น์ด ๊ฐ์ ๊ฐ์
๊ฐ์ด 0์ธ ๊ฒฝ์ฐ, ๋ฐ์ดํฐ์ ํ๊ท ๊ฐ์ ์ถ๋ ฅํ๋ ์ง์ ๋ชจ๋ธ์ ์๋ฏธ
์์ ๊ฐ์ด ๋์จ ๊ฒฝ์ฐ, ํ๊ท ๊ฐ ์์ธก๋ณด๋ค ์ฑ๋ฅ์ด ์ข์ง ์์
[์ฐ์ต๋ฌธ์ 7] ํ๊ท ์๊ณ ๋ฆฌ์ฆ ํ๊ฐ ์งํ - MSE, MAE
[์ค์ต6] ์ ์ด์ด์ Sales ์์ธก ๋ชจ๋ธ์ ์ฑ๋ฅ์ ํ๊ฐํ๊ธฐ ์ํด์ ๋ค์ํ ํ๊ท ์๊ณ ๋ฆฌ์ฆ ํ๊ฐ ์งํ๋ฅผ ์ฌ์ฉํ์ฌ ๋น๊ตํด๋ณด๊ฒ ์ต๋๋ค.
MSE์ MAE๋ sklearn ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์๋ฅผ ํตํ์ฌ ์ฝ๊ฒ ๊ตฌํ ์ ์์ต๋๋ค.
MSE, MAE ํ๊ฐ ์งํ๋ฅผ ๊ณ์ฐํ๊ธฐ ์ํ ์ฌ์ดํท๋ฐ ํจ์/๋ผ์ด๋ธ๋ฌ๋ฆฌ
mean_squared_error(y_true, y_pred): MSE ๊ฐ ๊ณ์ฐํ๊ธฐ
mean_absolute_error(y_true, y_pred): MAE ๊ฐ ๊ณ์ฐํ๊ธฐ
1. train_X ๋ฐ์ดํฐ์ ๋ํ MSE, MAE ๊ฐ์ ๊ณ์ฐํ์ฌ MSE_train, MAE_train์ ์ ์ฅํฉ๋๋ค.
2. test_X ๋ฐ์ดํฐ์ ๋ํ MSE, MAE ๊ฐ์ ๊ณ์ฐํ์ฌ MSE_test, MAE_test์ ์ ์ฅํฉ๋๋ค.
import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_absolute_error
from sklearn.metrics import mean_squared_error
#๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ ์ฒ๋ฆฌํฉ๋๋ค
df = pd.read_csv("data/Advertising.csv")
df = df.drop(columns=['Unnamed: 0'])
X = df.drop(columns=['Sales'])
Y = df['Sales']
train_X, test_X, train_Y, test_Y = train_test_split(X, Y, test_size=0.2, random_state=42)
#๋ค์ค ์ ํ ํ๊ท ๋ชจ๋ธ์ ์ด๊ธฐํ ํ๊ณ ํ์ตํฉ๋๋ค
lrmodel = LinearRegression()
lrmodel.fit(train_X, train_Y)
#train_X ์ ์์ธก๊ฐ์ ๊ณ์ฐํฉ๋๋ค
pred_train = lrmodel.predict(train_X)
#1. train_X ์ MSE, MAE ๊ฐ์ ๊ณ์ฐํฉ๋๋ค
MSE_train = mean_squared_error(train_Y, pred_train)
MAE_train = mean_absolute_error(train_Y, pred_train)
print('MSE_train : %f' % MSE_train)
print('MAE_train : %f' % MAE_train)
#test_X ์ ์์ธก๊ฐ์ ๊ณ์ฐํฉ๋๋ค
pred_test = lrmodel.predict(test_X)
#2. test_X ์ MSE, MAE ๊ฐ์ ๊ณ์ฐํฉ๋๋ค
MSE_test = mean_squared_error(test_Y, pred_test)
MAE_test = mean_absolute_error(test_Y, pred_test)
print('MSE_test : %f' % MSE_test)
print('MAE_test : %f' % MAE_test)
[์ฐ์ต๋ฌธ์ 8] ํ๊ท ์๊ณ ๋ฆฌ์ฆ ํ๊ฐ ์งํ - R2
[์ค์ต7] ์ ์ด์ด์ Sales ์์ธก ๋ชจ๋ธ์ ์ฑ๋ฅ์ ํ๊ฐํ๊ธฐ ์ํด์ ๋ค์ํ ํ๊ท ์๊ณ ๋ฆฌ์ฆ ํ๊ฐ ์งํ๋ฅผ ์ฌ์ฉํ์ฌ ๋น๊ตํด๋ณด๊ฒ ์ต๋๋ค.
R2 score๋ sklearn ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์๋ฅผ ํตํ์ฌ ์ฝ๊ฒ ๊ตฌํ ์ ์์ต๋๋ค.
R2 ํ๊ฐ ์งํ๋ฅผ ๊ณ์ฐํ๊ธฐ ์ํ ์ฌ์ดํท๋ฐ ํจ์/๋ผ์ด๋ธ๋ฌ๋ฆฌ
r2_score(y_true, y_pred): R2 score ๊ฐ ๊ณ์ฐํ๊ธฐ
1. train_X ๋ฐ์ดํฐ์ ๋ํ R2 ๊ฐ์ ๊ณ์ฐํ์ฌ R2_train์ ์ ์ฅํฉ๋๋ค.
2. test_X ๋ฐ์ดํฐ์ ๋ํ R2 ๊ฐ์ ๊ณ์ฐํ์ฌ R2_test์ ์ ์ฅํฉ๋๋ค.
import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_absolute_error
from sklearn.metrics import mean_squared_error
#๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ ์ฒ๋ฆฌํฉ๋๋ค
df = pd.read_csv("data/Advertising.csv")
df = df.drop(columns=['Unnamed: 0'])
X = df.drop(columns=['Sales'])
Y = df['Sales']
train_X, test_X, train_Y, test_Y = train_test_split(X, Y, test_size=0.2, random_state=42)
#๋ค์ค ์ ํ ํ๊ท ๋ชจ๋ธ์ ์ด๊ธฐํ ํ๊ณ ํ์ตํฉ๋๋ค
lrmodel = LinearRegression()
lrmodel.fit(train_X, train_Y)
#train_X ์ ์์ธก๊ฐ์ ๊ณ์ฐํฉ๋๋ค
pred_train = lrmodel.predict(train_X)
#1. train_X ์ R2 ๊ฐ์ ๊ณ์ฐํฉ๋๋ค
R2_train = r2_score(train_Y, pred_train)
print('R2_train : %f' % R2_train)
#test_X ์ ์์ธก๊ฐ์ ๊ณ์ฐํฉ๋๋ค
pred_test = lrmodel.predict(test_X)
#2. test_X ์ R2 ๊ฐ์ ๊ณ์ฐํฉ๋๋ค
R2_test = r2_score(test_Y, pred_test)
print('R2_test : %f' % R2_test)
'๊ฐ์ธ๊ณต๋ถ > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
72. Python TreeModel ์ฐ์ต๋ฌธ์ (0) | 2021.12.07 |
---|---|
71. NIPA AI์จ๋ผ์ธ ๊ต์ก AI ์ค๋ฌด ์์ฉ ๊ณผ์ (3) ์ง๋ํ์ต - ๋ถ๋ฅ (0) | 2021.12.05 |
69. Python Classification ์ฐ์ต๋ฌธ์ (0) | 2021.12.03 |
68. NIPA AI์จ๋ผ์ธ ๊ต์ก AI ์ค๋ฌด ์์ฉ ๊ณผ์ (1) ์๋ฃํํ, ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ (0) | 2021.12.02 |
67. Python Regression ์ฐ์ต๋ฌธ์ (0) | 2021.12.01 |