Daily plan
๐์ค์
- SQL ์ฝ๋์นดํ 92, 93, 94๋ฒ
- 11์ ํต๊ณ ๋ผ์ด๋ธ์ธ์
๐ฅ ์คํ
- ํต๊ณ ๊ฐ์ 4์ฃผ์ฐจ + ๋ด์ฉ ์ ๋ฆฌ
- ํ์ด์ฌ ์คํ ๋ค๋๋ฐ ์ด์ ๊ฐ์ ๋ณต์ต
- ํต๊ณ ๋ผ์ด๋ธ์ธ์
๋ด์ฉ ๋ณต์ต ์ ๋ฆฌ
๐ ์ ๋
- ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ&์๊ฐํ 3์ฃผ์ฐจ ๋ค์ ๋ณต์ต
- TIL ์ ์ถํด !!!!
To Do
- โ
SQL ์ฝ๋์นดํ 89~91
- โ
ํต๊ณ ๋ผ์ด๋ธ์ธ์
+ ์ ๋ฆฌ ๋ณต์ต
- โ
ํต๊ณ ๊ฐ์ 4์ฃผ์ฐจ
- โ
์คํ ๋ค๋๋ฐ ์ ๋ฆฌ ๋ณต์ต
์ด๋ฒ์ฃผ ๋ชฉํ
SQL ์ฝ๋์นดํ
Q92 - Average Selling Price
select p.product_id,
round(sum(units*price)/sum(units),2) average_price
from Prices p
join UnitsSold s
on p.product_id = s.product_id
where s.purchase_date between p.start_date and p.end_date
group by p.product_id
- price ํ
์ด๋ธ์์ ๊ธฐ๊ฐ๋ง๋ค ๋ฌผ๊ฑด์ ๊ฐ๊ฒฉ์ด ๋ค๋ฅด๊ฒ ์ ์ฅ๋์ด ์๋๋ฐ, unitssold ํ
์ด๋ธ์์ ๋ฌผ๊ฑด์ด ํ๋งค๋ ๋ ์ง์ ๋ง์ถฐ์ ๊ฐ ๊ธฐ๊ฐ์ ํด๋นํ๋ ๊ฐ๊ฒฉ์ผ๋ก ๊ณ์ฐํด์ผ ํ๋ค
- ์ด๋ป๊ฒ ๊ธฐ๊ฐ์ ๋ง์ถฐ์ ํ
์ด๋ธ์ joinํด์ผํ ์ง ๋ง๋งํ๋๋ฐ, where์ ์์ ์กฐ๊ฑด์ ๊ฑธ๋ฉด ๊ฐ๋จํ ํด๊ฒฐ๋ ๋ฌธ์ ์์!
Q93 - Project Employees I
select p.project_id,
round(sum(e.experience_years)/count(p.employee_id),2) average_years
from project p
left join employee e
on p.employee_id = e.employee_id
group by p.project_id
Q94 - Percentage of Users Attended a Contest
select contest_id,
round(count(1)/(select count(user_id) from users)*100,2) as percentage
from register
group by contest_id
order by 2 desc, 1
ํต๊ณ ๋ผ์ด๋ธ์ธ์
4ํ์ฐจ
ํ๊ท๋ถ์ ๊ฐ๋
- ๊ฐ์ง๊ณ ์๋ ๋ฐ์ดํฐ์ ์ํ๋ ๊ฐ์ด ์์ ๋ ์ด๋ฅผ ์์ธกํ๊ธฐ ์ํด ํ๊ท๋ถ์์ ๊ฐ๋
์ด ๋์
๋จ
- ์์ธก์ ์ํด์ '์ถ์ธ์ '์ด ํ์ํ๋ฐ, ์ถ์ธ์ ์ ์ฐพ๋ ๊ฒ์ด ํ๊ท๋ถ์์ ๋ชฉ์
- ์ถ์ธ์ : ์ด๋ฏธ ๊ฐ์ง๊ณ ์๋ ๋ฐ์ดํฐ๋ค์ ๊ฐ์ฅ ์ ์ค๋ช
ํด์ฃผ๋ ์ , y=a+bx์ ๋ฐฉ์ ์ ํํ๋ก ํํ
- ๋
๋ฆฝ๋ณ์(x)๋ก ์ข
์๋ณ์(y)๋ฅผ ์์ธก
- ๋
๋ฆฝ๋ณ์: ์์ธ์ด ๋๋ ๋ณ์
- ์ข
์๋ณ์: ๊ฒฐ๊ณผ๊ฐ ๋๋ ๋ณ์
- ํ๋ก์ธ์ค
- ๋
๋ฆฝ๋ณ์, ์ข
์๋ณ์ ์ค์ ๋ฐ ๊ฐ์ค ์ค์
- ๋ฐ์ดํฐ ๊ฒฝํฅ์ฑ ํ์ธ
- ๋
๋ฆฝ๋ณ์์ ์ข
์๋ณ์ ๊ฐ ์ฐ์ ๋ ๋ถ์, ์๊ด๊ด๊ณ ๋ถ์ ๋ฑ
- ์ ํฉ์ฑ ๊ฒ์ฆ & ๊ฒฐ๊ณผ ํด์
- ํ๊ท๋ชจ๋ธ(ํ๊ท์)์ด ์ผ๋ง๋ ์ค๋ช
๋ ฅ์ ๊ฐ๋๊ฐ?
- ํ๊ท๋ชจ๋ธ(ํ๊ท์)์ด ํต๊ณ์ ์ผ๋ก ์ ์ํ๊ฐ?
- ๋
๋ฆฝ๋ณ์์ ์ข
์๋ณ์ ๊ฐ ์ ํ๊ด๊ณ๊ฐ ์๋๊ฐ?
ํ๊ท๋ถ์ ํน์ง
-
์ฅ์
- ์์ธก๋ฌธ์ ํด๊ฒฐ์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ฉฐ, ๋ถ์ ๋ฐ ํด์ ๋ฐฉ๋ฒ์ด ๋ค์ ์กด์ฌ
- ๊ฒฐ๊ณผ์ ๋ํ ๊ทผ๊ฑฐ, ํ์ฉ๋ฐฉ์ ๋ฑ์ ์ ๋ณด๋ฅผ ์ป๋ ๋ฐ ์ ์ฉ
- ์ข
์๋ณ์๋ฅผ ์ค๋ช
ํ๊ธฐ ์ํ ๋ค์ํ ๋
๋ฆฝ๋ณ์ ์ ํ ๋ฐ ์คํ์ด ๊ฐ๋ฅ
-
๋จ์
- ๊ธฐ๋ณธ ๊ฐ์ ์ด ์ด๊ธ๋๋ฉด ํ๊ท๋ถ์์ ์ฌ์ฉํ ์ ์์
- ๋น์ ํ์ฑ ํ์ธ์ ์ํ ์ ์ ํ ๋ฐฉ์์ด ์กด์ฌํ์ง ์์
ํ๊ท๋ถ์ ์ข
๋ฅ
ํ๊ท ๊ณ์์ ์ ํ ์ฌ๋ถ, ๋
๋ฆฝ๋ณ์์ ๊ฐ์, ์ข
์๋ณ์์ ๊ฐ์์ ๋ฐ๋ผ ์ฌ๋ฌ ์ ํ์ผ๋ก ๋๋ ์ ์์
- ์ ํ ํ๊ท๋ถ์
- ๋
๋ฆฝ๋ณ์: ์ฐ์ํ / ์ข
์๋ณ์: ์ฐ์ํ
- ๋ถ์ ๋ชฉ์ : ์์ธก
- ์ ํ ๋ฐฉ์ ์์ ์ํ ํจ์์ ํํ์ ํตํด ๋ถ์
- ์ข
๋ฅ
- ๋จ์ํ๊ท: ๋
๋ฆฝ๋ณ์, ์ข
์๋ณ์ ๋ชจ๋ 1๊ฐ์ธ ๊ฒฝ์ฐ ( y=ฮฒ0โ+ฮฒ1โx+ฮต)
- ๋ค์คํ๊ท: ๋
๋ฆฝ๋ณ์๊ฐ 2๊ฐ ์ด์, ์ข
์๋ณ์๊ฐ 1๊ฐ์ธ ๊ฒฝ์ฐ (y=ฮฒ0โ+ฮฒ1โx0โ+ฮฒ2โx1โ+...+ฮต)
- ๋ก์ง์คํฑ ํ๊ท๋ถ์
- ๋
๋ฆฝ๋ณ์: ์ฐ์ํ, ๋ฒ์ฃผํ / ์ข
์๋ณ์: ๋ฒ์ฃผํ์ด๋ฉด์ ์ด์งํ or ์์๊ฐ ์๋ ๋ฒ์ฃผํ
- ๋ถ์ ๋ชฉ์ : ๋ถ๋ฅ, ์์ธก
- ์ฐ๊ฒฐํจ์๋ฅผ ์ด์ฉํ ํจ์์ ํํ์ ํตํด ๋ถ์
- ์ข
๋ฅ
- ์ด์ง ๋ก์ง์คํฑ ํ๊ท: ์ข
์๋ณ์๊ฐ 2๊ฐ์ง ์ค ํ๋์ ๊ฐ์ ๊ฐ์ง๋ ๊ฒฝ์ฐ
- ๋ค์ค ๋ก์ง์คํฑ ํ๊ท: ์ข
์๋ณ์๊ฐ ์์ ์๋ 3๊ฐ ์ด์์ผ ๊ฒฝ์ฐ
์ ํฉ์ฑ ๊ฒ์ฆ ๋ฐ ๊ฒฐ๊ณผ ํด์
-
ํ๊ท๋ชจ๋ธ(ํ๊ท์)์ด ์ผ๋ง๋ ์ค๋ช
๋ ฅ์ ๊ฐ๋๊ฐ?
- ๊ฒฐ์ ๊ณ์(R_squared, Rยฒ) ํ์ธ: ์ข
์๋ณ์์ ๋
๋ฆฝ๋ณ์์ ๊ด๊ณ๋ฅผ ๋ํ๋ด๋ ์์น
- ์ค๋ช
๋ ฅ(Rยฒ): ์ ์ฒด ์ค๋ฅ ์ค ํ๊ท๋ฅผ ํจ์ผ๋ก์จ ์ผ๋ง๋ ๊ฐ์ ๋์๋๊ฐ๋ฅผ ๋ํ๋ด๋ ์์น๋ก, 0๊ณผ 1์ฌ์ด์ ๊ฐ์ ๊ฐ์ง๋ฉฐ 1์ ๊ฐ๊น์ธ์๋ก ๋ชจ๋ธ์ ์ฑ๋ฅ์ด ์ข๋ค๋ ๊ฒ์ ์๋ฏธ
- T, R, E
- T (Total): ์ ์ฒด ๋ณ๋
- R (Regression): ํ๊ท๋ถ์์ ํตํด ์ฐพ์๋ธ ํ๊ท์ ๊น์ง์ ๋ณ๋
- E (Error, ์์ฐจ): ํ๊ท๋ก ์ค๋ช
ํ ์ ์๋ ๋ณ๋
-
ํ๊ท๋ชจ๋ธ(ํ๊ท์)์ด ํต๊ณ์ ์ผ๋ก ์ ์ํ๊ฐ?
- ํ๊ท์์ ๋ํ F๊ฒ์ ์ ์ํ
- ๊ท๋ฌด๊ฐ์ค: ํ๊ท๋ชจ๋ธ์ ํ๋นํ์ง ์์ ๊ฒ์ด๋ค (ํ๊ท ๊ณ์๋ค์ด ๋ชจ๋ 0์ด๋ค)
- ๋๋ฆฝ๊ฐ์ค: ํ๊ท๋ชจ๋ธ์ ํ๋นํ ๊ฒ์ด๋ค (์ ์ด๋ ํ๋์ ํ๊ท ๊ณ์๋ 0์ด ์๋๋ค)
- p-value๋ก ์ ์์ฑ ํ๋จ
-
๋
๋ฆฝ๋ณ์์ ์ข
์๋ณ์ ๊ฐ ์ ํ๊ด๊ณ๊ฐ ์๋๊ฐ?
- ํ๊ท์์ ฮฒ1โ(๊ธฐ์ธ๊ธฐ) ์ ๋ํ t ๊ฒ์ ์ํ
- ๊ท๋ฌด๊ฐ์ค: ๋
๋ฆฝ๋ณ์์ ์ข
์๋ณ์ ๊ฐ ์ ํ์ ์ฐ๊ด์ด ์์ ๊ฒ์ด๋ค
- ๋๋ฆฝ๊ฐ์ค: ๋
๋ฆฝ๋ณ์์ ์ข
์๋ณ์ ๊ฐ ์ ํ์ ์ฐ๊ด์ด ์์ ๊ฒ์ด๋ค
- p-value๋ก ์ ์์ฑ ํ๋จ
-
OLS(Ordinary Least Squares) ํด์
- OLS: ์ ํ ํ๊ท๋ชจ๋ธ์ ๊ฒฐ๊ณผ๋ฅผ ๋ํ๋ด๋ ํ๊ท ๊ฒฐ๊ณผํ
- ols์์ ์ง์ํ๋ summary ํจ์๋ฅผ ํตํด ๊ฒฐ๊ณผํ๋ฅผ ์ป์ ์ ์์

- Dep.Variable(y): ์ข
์๋ณ์
- R-squared: ํ๊ท๋ชจ๋ธ์ด ์ข
์๋ณ์์ ๋ณ๋์ฑ์ ์ผ๋ง๋ ์ค๋ช
ํ๋์ง ๋ํ๋ด๋ ๊ฒฐ์ ๊ณ์
- Adj.R-squared: ์ค๋ช
๋ณ์์ ๊ฐ์๋ฅผ ๊ณ ๋ คํ์ฌ R^2๊ฐ์ ์กฐ์ ํ ์์ ๋ ๊ฒฐ์ ๊ณ์๋ก, ๋ณ์์ ์๊ฐ ๋์ด๋ ๋ ๋ฐ์ํ๋ ๊ณผ์ ํฉ์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ฌ์ฉ
- Method: ์ฌ์ฉ๋ ํ๊ท ๋ฐฉ๋ฒ์ ๋ํ๋
- Least Squares = ์ต์์ ๊ณฑ๋ฒ: ์์ธก๊ฐ๊ณผ ์ค์ ๊ฐ์ ์ค์ฐจ์ ์ ๊ณฑ์ ํฉ์ด ์ต์๊ฐ ๋๋ ํด๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ
- F-statistic: ํ๊ท๋ชจํ์ ์ ์ฒด ์ ์์ฑ์ ๊ฒ์ ํ๋ F-ํต๊ณ๋์ผ๋ก, ๊ฐ์ด ํด์๋ก ๋ชจํ์ด ์ ์๋ฏธํ ํ๋ฅ ์ด ๋์
- Prob (F-statistic): F-ํต๊ณ๋์ p-๊ฐ
- Log-Likelihood: ํ๊ท ๋ชจํ์ ๋ก๊ทธ ์ฐ๋(likelihood)๋ก, ๊ฐ์ด ํด์๋ก ๋ชจํ์ด ๋ฐ์ดํฐ์ ์ ๋ง๋๋ค๋ ๊ฒ์ ์๋ฏธํจ
- No.Observations: ์ฌ์ฉ๋ ๊ด์ธก์น(๋ฐ์ดํฐ ํฌ์ธํธ)์ ์
- Df Residuals: ์์ฐจ์ ์์ ๋ (๋ฐ์ดํฐ ์ - ํ๊ท๊ณ์์ ์)
- Df Model: ๋ชจ๋ธ์ ํฌํจ๋ ์ค๋ช
๋ณ์์ ์
- Covariance Type: ๊ณต๋ถ์ฐ ์ถ์ ์ ์ ํ
- nonrobust: ๊ธฐ๋ณธ ๊ณต๋ถ์ฐ ์ถ์ ์ด ์ฌ์ฉ๋์์์ ์๋ฏธ
- coef(coefficients)
- const: ๋
๋ฆฝ๋ณ์๊ฐ 0์ผ๋ ์ข
์๋ณ์์ ์์ธก๊ฐ์ ๋ํ๋ด๋ ์์ํญ(์ ํธ)
- x1: ์ค๋ช
๋ณ์ 1์ ํ๊ท ๊ณ์๋ก, ๋
๋ฆฝ๋ณ์๊ฐ 1 ๋จ์ ์ฆ๊ฐํ ๋ ์ข
์๋ณ์๊ฐ ํ๊ท ์ ์ผ๋ก x1๋งํผ ๋จ์ ์ฆ๊ฐ ํ๋ค๋ ์๋ฏธ
- std err(Standard Error): ํ๊ท ๊ณ์ ์ถ์ ์น์ ํ์ค ํธ์ฐจ
- t(t-statistic): ํ๊ท๊ณ์๊ฐ 0์ธ์ง ๊ฒ์ ํ๋ t๊ฐ์ผ๋ก, ์ ๋๊ฐ์ด ํด์๋ก ํด๋น ๊ณ์๊ฐ ์ ์๋ฏธํ ๊ฐ๋ฅ์ฑ์ด ๋์
- P>|t|(P-value): ๊ฐ ๊ณ์์ ๋ํ p-๊ฐ
- [0.025 0.975] (Confidence Interval): ํ๊ท๊ณ์์ ๋ํ 95% ์ ๋ขฐ๊ตฌ๊ฐ
- Omnibus: ์์ฐจ์ ์ ๊ท์ฑ์ ๊ฒ์ ํ๋ Omnibus ๊ฒ์ ํต๊ณ๋์ผ๋ก, ๊ฐ์ด ์์์๋ก ์์ฐจ๊ฐ ์ ๊ท๋ถํฌ์ ๊ฐ๊น๋ค๋ ์๋ฏธ
- Prob(Omnibus): Omnibus๊ฒ์ ์ p-๊ฐ
- Skew: ์์ฐจ์ ์๋(skewness)๋ก, 0์ ๊ฐ๊น์ธ์๋ก ๋์นญ์
- Kurtosis: ์์ฐจ์ ์ฒจ๋(Kurtosis)๋ก, 3์ ๊ฐ๊น์ธ์๋ก ์ ๊ท๋ถํฌ์ ๊ฐ๊น์
- Durbin-Watson: ์์ฐจ์ ์๊ธฐ์๊ด์ ๊ฒ์ ํ๋ ํต๊ณ๋
- Jarque_Bera(JB): ์์ฐจ์ ์ ๊ท์ฑ์ ๊ฒ์ ํ๋ Jarque-Bera ๊ฒ์ ํต๊ณ๋
- Prob(JB): Jarque-Bera ๊ฒ์ ์ p-๊ฐ
- Cond.No.: ์ค๋ช
๋ณ์์ ๋ค์ค๊ณต์ ์ฑ์ ๋ํ๋ด๋ ์กฐ๊ฑด์๋ก, ๊ฐ์ด ๋์ผ๋ฉด ๋ค์ค๊ณต์ ์ฑ ๋ฌธ์ ๊ฐ ์์์ ์์ฌํจ
๊ฐ๊ฐ์ ๊ฒ์ ํต๊ณ๋์ด ๊ฐ์ง๋ ์ซ์์ ์๋ฏธ๋ณด๋ค, ์ด๋ฅผ ์ ๋ขฐํ ์ ์๋์ง(p-value)์ ์ฃผ๋ชฉํด์ผ ํจ
ํต๊ณ ๊ฐ์ 4์ฃผ์ฐจ
๋จ์ ์ ํ ํ๊ท
- ํ๋์ ๋
๋ฆฝ๋ณ์(x)์ ํ๋์ ์ข
์๋ณ์(y) ๊ฐ ๊ด๊ณ๋ฅผ ์ง์ ์ผ๋ก ๋ชจ๋ธ๋ง
import numpy as np
import pandas as pd
import matplolib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score
np.random.seed(0)
X = 2*np.random.rand(100,1)
y = 4 + 3*X + np.random.randn(100,1)
cf. np.random.seed()
์ปดํจํฐ ํ๋ก๊ทธ๋จ์์ ๋ฐ์ํ ๋๋ค๊ฐ์ ํน์ ์์ ์ซ์๊ฐ์ ์ ํด์ฃผ๋ฉด ์ ํด์ง ์๊ณ ๋ฆฌ์ฆ์ ๋ฐ๋ผ ๋์์ฒ๋ผ ๋ณด์ด๋ ์์ด์ ์์ฑํ๋ ๊ฒ
- ์ด๋ ์ค์ ํ๋ ํน์ ์์ ์ซ์๊ฐ ๋ฐ๋ก "seed"
๋ค์ค ์ ํ ํ๊ท
- ๋ ๊ฐ ์ด์์ ๋
๋ฆฝ๋ณ์์ ํ๋์ ์ข
์๋ณ์ ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ชจ๋ธ๋ง
- ๋ณ์๋ค ๊ฐ ๋ค์ค๊ณต์ ์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์
- ๋ค์ค๊ณต์ ์ฑ
: ํ๊ท๋ถ์์์ ๋
๋ฆฝ๋ณ์๋ค ๊ฐ ๋์ ์๊ด๊ด๊ณ๊ฐ ์๋ ๊ฒฝ์ฐ
- ๊ฐ ๋ณ์์ ๊ฐ๋ณ์ ํจ๊ณผ๋ฅผ ๋ถ๋ฆฌํ๊ธฐ ์ด๋ ค์์ ธ ํด์์ ์ด๋ ต๊ฒ ํจ
- ์ค์ ์ค์ํ ๋ณ์๊ฐ ํต๊ณ์ ์ผ๋ก ์ ์ํ์ง ์๊ฒ ๋ํ๋ ์ ์์
- ๋ค์ค๊ณต์ ์ฑ์ ์ง๋จํ๋ ๋ฐฉ๋ฒ
- ๊ฐ๋จver) ์๊ด๊ณ์๊ฐ ๋์ ๋ณ์๋ค์ด ์๋์ง ํ์ธ
- ์ ํver) ๋ถ์ฐํฝ์ฐฝ๊ณ์(VIF)๊ฐ 10๋ณด๋ค ๋์์ง ํ์ธ (10๋ณด๋ค ํฌ๋ฉด ๋ค์ค๊ณต์ ์ฑ์ด ๋๋ค๊ณ ํ๋จ)
- ๋ค์ค๊ณต์ ์ฑ ํด๊ฒฐ๋ฒ
- ๋์ ๊ณ์๋ฅผ ๊ฐ์ง ๋ณ์ ์ค ํ๋๋ฅผ ์ ๊ฑฐํ๊ฑฐ๋
- ์ฃผ์ฑ๋ถ๋ถ์(PCA) ๋ฑ ๋ณ์๋ฅผ ์ค์ด๋ ์ฐจ์ ๋ถ์ ๋ฐฉ๋ฒ์ ์ ์ฉ
๋ฒ์ฃผํ ๋ณ์
- ์์นํ์ด ์๋, ์ฃผ๋ก ๋ฌธ์ํ์ผ๋ก ์ด๋ฃจ์ด์ง ๋ณ์
- ์์๊ฐ ์๋ ๋ฒ์ฃผํ ๋ณ์๋ ๊ฐ ๋ฌธ์๋ฅผ ์์์ ์ซ์๋ก ๋ณํํด๋ ์๊ด์์
ex) ์ท ์ฌ์ด์ฆ(S, M, L), ์๋ฅ ๋ฑ๊ธ(1๋ฑ๊ธ, 2๋ฑ๊ธ,..)
- ์์๊ฐ ์๋ ๋ฒ์ฃผํ ๋ณ์๋ 2๊ฐ ๋ฐ์ ์๋ ๊ฒฝ์ฐ์ ์์์ ์ซ์๋ก ๋ณํํด๋ ๋์ง๋ง, 3๊ฐ ์ด์์ธ ๊ฒฝ์ฐ์๋ ๋ฌด์กฐ๊ฑด ์-ํซ ์ธ์ฝ๋ฉ๋ณํ์ ํด์ฃผ์ด์ผ ํจ
ex) ์ฑ๋ณ(๋จ,์ฌ), ์ง์ญ(๋ถ์ฐ,์์ธ,..)
- ์-ํซ ์ธ์ฝ๋ฉ: ํ๋๋ง 1์ด๊ณ ๋๋จธ์ง๋ 0์ธ ๋ฒกํฐ
- pandas์ get_dummies๋ฅผ ํ์ฉํ์ฌ ์ฝ๊ฒ ๊ตฌํ ๊ฐ๋ฅ
๋คํญํ๊ท, ์คํ๋ผ์ธ ํ๊ท
๋คํญํ๊ท
: ๋
๋ฆฝ๋ณ์์ ์ข
์๋ณ์ ๊ฐ์ ๊ด๊ณ๊ฐ ์ ํ์ด ์๋ ๋ ์ฌ์ฉํ๋ฉฐ, ๋
๋ฆฝ ๋ณ์์ ๋คํญ์์ ์ฌ์ฉํ์ฌ ์ข
์ ๋ณ์๋ฅผ ์์ธกํจ
- ๋ฐ์ดํฐ๊ฐ ๊ณก์ ์ ๊ฒฝํฅ์ ๋ฐ๋ฅผ ๋ ์ฌ์ฉ
- ๋น์ ํ ๊ด๊ณ๋ฅผ ๋ชจ๋ธ๋งํ ์ ์์
- ๊ณ ์ฐจ ๋คํญ์์ ๊ฒฝ์ฐ ๊ณผ์ ํฉ(overfitting)์ ์ํ์ด ์์
์คํ๋ผ์ธ ํ๊ท
- ๋
๋ฆฝ ๋ณ์์ ๊ตฌ๊ฐ๋ณ๋ก ๋ค๋ฅธ ํ๊ท์์ ์ ์ฉํ์ฌ ๋ณต์กํ ๊ด๊ณ๋ฅผ ๋ชจ๋ธ๋ง
- ๊ตฌ๊ฐ๋ง๋ค ๋ค๋ฅธ ๋คํญ์์ ์ฌ์ฉํ์ฌ ์ ์ฒด์ ์ผ๋ก ๋งค๋๋ฌ์ด ๊ณก์ ์ ์์ฑ
- ๋ฐ์ดํฐ๊ฐ ๊ตญ๋ถ์ ์ผ๋ก ๋ค๋ฅธ ํจํด์ ๋ณด์ผ ๋ ์ฌ์ฉ
- ๋ณต์กํ ๋น์ ํ ๊ด๊ณ๋ฅผ ์ ์ฐํ๊ฒ ๋ชจ๋ธ๋ง ๊ฐ๋ฅ
- ์ ์ ํ ๋งค๋ญ์ (knots)์ ์ ํ์ด ์ค์

Python Standard 4ํ์ฐจ
๋จธ์ ๋ฌ๋ ํ์ดํ๋ผ์ธ
- ๋ฐ์ดํฐ๋ฅผ ์ค๋นํ๊ณ , ๋ชจ๋ธ์ ํ์ต์์ผ์ ์์ธก์ ๋ง๋ค๊ธฐ๊น์ง์ ์ผ๋ จ์ ๋จ๊ณ๋ค์ ์ฒด๊ณ์ ์ผ๋ก ์ ๋ฆฌํ ์ ์ฐจ
- ํ์ดํ๋ผ์ธ์ด ํ์ํ ์ด์
- ๋ฐ๋ณต ๊ฐ๋ฅํ ์์
์ ์๋ํ
- ํ์
์ ์ฉ์ด, ์ฝ๋ ์ฌ์ฌ์ฉ์ด ์ฌ์
- ์ค์๋ฅผ ์ค์ผ ์ ์์
- ์ ์ฒด ํ๋ฆ: ๋ฐ์ดํฐ ์์ง > ์ ์ฒ๋ฆฌ > ๋ชจ๋ธ ํ์ต > ํ๊ฐ > ์์ธก/๋ฐฐํฌ
๋ผ์ด๋ธ๋ฌ๋ฆฌ
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestClassifier
from sklearn.pipeline import Pipeline
from sklearn.metrics import accuracy_score
๋ฐ์ดํฐ ๋ก๋ ๋ฐ ๋ถํ
- train data๋ก ํ์ต์ํจ ๋ชจ๋ธ์ด ์ ์๋ํ๋์ง ํ์ธํ๊ธฐ ์ํด test data๋ฅผ ์ด์ฉ
- 1๋จ๊ณ: ๋ฐ์ดํฐ ๋ก๋ฉ
iris = load_iris()
X = iris.data
y = iris.target
- 2๋จ๊ณ: ํ๋ จ/ํ
์คํธ ๋ฐ์ดํฐ ๋ถ๋ฆฌ
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
์ ์ฒ๋ฆฌ
- ์ ์ฒ๋ฆฌ ์์: ํน์ฑ ์ค์ผ์ผ๋ง
- KNN, SVM ๋ฑ ๊ฑฐ๋ฆฌ๊ฐ ์ค์ํ ์๊ณ ๋ฆฌ์ฆ์์๋ ์ค์ผ์ผ ์ฐจ์ด๊ฐ ๊ฒฐ๊ณผ์ ํฐ ์ํฅ์ ๋ฏธ์น ์ ์์
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
๋ชจ๋ธ ์์ฑ ๋ฐ ํ์ต
model = RandomForestClassifier()
model.fit(X_train_scaled, y_train)
์์ธก ๋ฐ ์ ํ๋ ํ๊ฐ
y_pred = model.predict(X_test_scaled)
accuracy_score(y_test, y_pred)
ํ์ดํ๋ผ์ธ์ผ๋ก ๋ฌถ๊ธฐ
- ํ์ดํ๋ผ์ธ์ผ๋ก ํ๋ฒ์ ์ฒ๋ฆฌ
- ํ์ดํ๋ผ์ธ์ ์ฝ๋๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ํ๊ณ ์ค์๋ฅผ ๋ฐฉ์งํ๋ฉฐ ํ
์คํธ/๋ฐฐํฌ๋ฅผ ํธ๋ฆฌํ๊ฒ ๋ง๋๋ ํจ๊ณผ๊ฐ ์์
pipe = Pipeline([
('scaler', StandardScaler()),
('model', RandomForestClassifier())
])
pipe.fit(X_train, y_train)
pipe.score(X_test, y_test))
- test data๋ก๋ถํฐ ์ ๋ณด๋ฅผ ์ป์ผ๋ ค๋ ์๊ฐ์ ํ์ง ๋ง๊ธฐ!!!
- ์ ํ๊ณผ์
- LogisticRegression, SVC์ ๊ฐ์ ๋ค๋ฅธ ๋ชจ๋ธ๋ก ํ์ดํ๋ผ์ธ ๋ฐ๊ฟ๋ณด๊ธฐ
- MinMaxScaler์ StandardScaler ๋น๊ตํด๋ณด๊ธฐ
์ผ๊ธฐ
ํ์๋ค์ด ๋๋ฅผ ๋จ๋จํ ์คํดํ๊ณ ์๋ ๊ฒ ๊ฐ๋ค.
๋๋ ๋ง ์๋ฌด๋๋ ๋ฎ์ ์๊ณ ๊ทธ๋ฐ ์ฌ๋ ์๋๋ฐ....
๋ด๊ฐ ์ผ๋ง๋ ์ฑ์คํ ์ฌ๋์ธ์ง ๋ณด์ฌ์ค์ผ๊ฒ ๋คใ
ใ
ํ์๋ค์ด ์ ๋๋ก ๋ถ์ํ๊ฑฐ ๊ฐ์๋ฐ;;;;