ํ์ด์ฌ ๋ฐ์ดํฐ ๋ถ์ ํ๋ก์ธ์ค ์ค์ต w. ํ์ดํ๋
HTML ์ฝ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐํ ์ ์๋ ์์ค
heleownae.tistory.com
๐ ์์ธก ๋ชจ๋ธ๋ง ํ๋ก์ธ์ค
๐ ์ธ๋ถํ
w. titanic
- ๋ฐ์ดํฐ ๋ก๋ & ๋ถ๋ฆฌ
- train / test ๋ฐ์ดํฐ ๋ถ๋ฆฌ
- ํ์์ ๋ฐ์ดํฐ ๋ถ์(EDA)
- ๋ถํฌํ์ธ & ์ด์์น ํ์ธ
- ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ
- ๊ฒฐ์ธก์น ์ฒ๋ฆฌ
- ์์นํ: Age
- ๋ฒ์ฃผํ: Embarked
- ์ญ์ : Cabin, Name
- ์ ์ฒ๋ฆฌ
- ์์นํ: Age, Fare, Sibsp+Parch
- ๋ฒ์ฃผํ
- ๋ ์ด๋ธ ์ธ์ฝ๋ฉ: Pclass, Sex
- ์- ํซ ์ธ์ฝ๋ฉ: Embarked
- ๊ฒฐ์ธก์น ์ฒ๋ฆฌ
- ๋ชจ๋ธ ์๋ฆฝ
- ํ๊ฐ
๐ ๋ฐ์ดํฐ ๋ถ์ ํ๋ก์ธ์ค (์ ๋ฆฌ)
1. ๋ฐ์ดํฐ ์์ง
โ ํ๋ก์ธ์ค
- Data Source
- OLTP Database(OnLine Transaction Processing): ์จ๋ผ์ธ ๋ฑ ํน,์ผํ, ์ฃผ๋ฌธ ์ ๋ ฅ ๋ฑ ๋์์ ๋ฐ์ํ๋ ๋ค์์ ํธ๋์ญ์ (๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ์ ๋จ์) ์ฒ๋ฆฌ ์ ํ
- Enterprise Applications: ํ์ฌ ๋ด ๋ฐ์ดํฐ (ex ๊ณ ๊ฐ ๊ด๊ณ ๋ฐ์ดํฐ, ์ ํ ๋ง์ผํ ์ธ์ผ์ฆ)
- Third - Party: Google Analytics์ ๊ฐ์ ์ธ๋ถ์์ค์์ ์์ง๋๋ ๋ฐ์ดํฐ
- Web/Log: ์ฌ์ฉ์์ ๋ก๊ทธ๋ฐ์ดํฐ
- Data Lake: ์์ ํํ์ ๋ค์ํ ์ ํ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ
- Data Warehouse: ๋ณด๋ค ๊ตฌ์กฐํ๋ ํํ๋ก ์ ์ ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ
- Data Marts: ํ์ฌ์ ๊ธ์ต, ๋ง์ผํ , ์์ ๋ถ์์ ๊ฐ์ด ํน์ ์กฐ์ง์ ๋ชฉ์ ์ ์ํด ๊ฐ๊ณต๋ ๋ฐ์ดํฐ
- BI/Analytics: business Intelligence(BI)๋ ์์ฌ๊ฒฐ์ ์ ์ฌ์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์์งํ๊ณ ๋ถ์ํ๋ ํ๋ก์ธ์ค
โ ์ค์ ๋ฐ์ดํฐ ์์ง
- ์ฌ๋ด ๋ฐ์ดํฐ๊ฐ ์๋ค๋ฉด
- SQL ํน์ Python ์ ํตํด ๋ฐ์ดํฐ ๋งํธ๋ฅผ ์์ฑ
- ์ฌ๋ด Data๊ฐ ์๋ค๋ฉด, ๋ฐ์ดํฐ ์์ง ํ์
- ๋ฐฉ๋ฒ1: CSV, EXCEL ํ์ผ ๋ค์ด๋ก๋
- ๋ฐฉ๋ฒ2: API๋ฅผ ์ด์ฉํ ๋ฐ์ดํฐ ์์ง
- ๋ฐฉ๋ฒ3: Data Crawling
2. EDA (ํ์์ ๋ฐ์ดํฐ ๋ถ์, Exploratory Data Analysis)
๋ฐ์ดํฐ์ ์๊ฐํ, ๊ธฐ์ ํต๊ณ ๋ฑ์ ๋ฐฉ๋ฒ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ดํดํ๊ณ ํ๊ตฌํ๋ ๊ณผ์
โ ๊ธฐ์ ํต๊ณ EDA ์์: .describe()
include = 'all' ์ต์ ์ ํตํด ๋ฒ์ฃผํ ๋ฐ์ดํฐ๋ ํ์ธ ๊ฐ๋ฅ
import seaborn as sns
tips = sns.load_dataset('tips')
tips.describe(include = 'all')
โ ์๊ฐํ EDA ์์
countplot: ๋ฒ์ฃผํ ์๋ฃ์ ๋น๋ ์ ์๊ฐํ (x์ถ: ๋ฒ์ฃผํ ์๋ฃ, y์ถ: ์๋ฃ์ ๋น๋์)
ex) ์์ ์์ ํ๋งค๋๋ ์ ํ์ ์นดํ ๊ณ ๋ฆฌ๋ณ ํ๋งค์
barplot: ๋ฒ์ฃผํ ์๋ฃ์ ์๊ฐํ (x์ถ: ๋ฒ์ฃผํ ์๋ฃ, y์ถ: ์ฐ์ํ ์๋ฃ)
ex) ์ฐ๋ น๋๋ณ ํ๊ท ์๋ ๋น๊ต
boxplot: ์์นํ & ๋ฒ์ฃผํ ์๋ฃ์ ์๊ฐํ (x์ถ: ์์นํ or ๋ฒ์ฃผํ, y์ถ: ์์นํ)
๋ฐ์ดํฐ์ ๋ถํฌ, ์ค์๊ฐ, ์ฌ๋ถ์ ์, ์ด์์น ๋ฑ์ ํ๋์ ํํ
ex) ์ฌ๋ฌ ๊ทธ๋ฃน ๊ฐ ์ํ ์ ์ ๋ถํฌ ๋น๊ต
histogram: ์์นํ ์๋ฃ ๋น๋ ์๊ฐํ (x์ถ: ์์นํ, y์ถ: ์๋ฃ์ ๋น๋์)
์ฐ์ํ ๋ถํฌ๋ฅผ ๋ํ๋ด๊ณ ์ถ์ ๋, ๋ฐ์ดํฐ๊ฐ ๋ชฐ๋ ค์๋ ๊ตฌ๊ฐ ํ์ ์ฉ์ด
ex) ๊ณ ๊ฐ ์ฐ๋ น ๋ถํฌ
scatterplot: ์์นํ ๊ฐ ์๊ฐํ (x์ถ: ์์นํ, y์ถ: ์์นํ)
๋ ์ฐ์ํ ๋ณ์ ๊ฐ ๊ด๊ณ๋ฅผ ์๊ฐ์ ์ผ๋ก ํ์
ex) ํค์ ๋ชธ๋ฌด๊ฒ ๊ฐ ๊ด๊ณ
pairplot: ์ ์ฒด ๋ณ์์ ๋ํ ์๊ฐํ (x, y์ถ: ๋ฒ์ฃผํ or ์์นํ)
ํ ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ ๋ณ์๋ฅผ ๋์์ ์๊ฐํํ๊ณ ์ถ์ ๋
3. ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ
์ ์ฒด ๋ถ์ ํ๋ก์ธ์ค์์ 90%๋ฅผ ์ฐจ์ง ํ ์ ๋๋ก ๋ ธ๋, ์๊ฐ ์ง์ฝ์ ์ธ ๋จ๊ณ
โ ์ด์์น (Outlier)
๊ด์ธก๋ ๋ฐ์ดํฐ ๋ฒ์์์ ๋ง์ด ๋ฒ์ด๋ ์์ฃผ ์์/ํฐ ๊ฐ
- ESD (Extreme Studentized Deviation) ์ด์ฉํ ์ด์์น ๋ฐ๊ฒฌ
- ๋ฐ์ดํฐ๊ฐ ์ ๊ท๋ถํฌ๋ฅผ ๋ฐ๋ฅธ๋ค๊ณ ๊ฐ์ ํ ๋, ํ๊ท ์์ ํ์คํธ์ฐจ์ 3๋ฐฐ ์ด์ ๋จ์ด์ง ๊ฐ
- ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ์ ๊ท ๋ถํฌ๋ฅผ ๋ฐ๋ฅด์ง ์์ ์ ์๊ธฐ ๋๋ฌธ์ ๋ค์ ์ํฉ์์๋ ์ ํ๋จ
- ๋ฐ์ดํฐ๊ฐ ํฌ๊ฒ ๋น๋์นญ์ผ ๋( → Log๋ณํ ๋ฑ์ ๋ ธ๋ ค๋ณผ ์ ์์)
- ์ํ ํฌ๊ธฐ๊ฐ ์์ ๊ฒฝ์ฐ
# ESD๋ฅผ ์ด์ฉํ ์ด์์น ๋ฐ๊ฒฌ
import numpy as np
mean = np.mean(data)
std = np.std(data)
upper_limit = mean + 3*std
lower_limit = mean - 3*std
- IQR (InterQuartile Range, ์ฌ๋ถ๋ฒ์) ์ด์ฉํ ์ด์์น ๋ฐ๊ฒฌ
- ESD์ ๋์ผํ๊ฒ ๋ฐ์ดํฐ๊ฐ ๋น๋์นญ์ ์ด๊ฑฐ๋ ์ํ์ฌ์ด์ฆ๊ฐ ์์ ๊ฒฝ์ฐ ์ ํ๋จ
- Box plot: ๋ฐ์ดํฐ์ ์ฌ๋ถ์ ์๋ฅผ ํฌํจํ์ฌ ๋ถํฌ๋ฅผ ๋ณด์ฌ์ฃผ๋ ์๊ฐํ ๊ทธ๋ํ, ์์-์์ผ ๊ทธ๋ฆผ์ด๋ผ๊ณ ๋ ํจ
- ์ฌ๋ถ์ ์: ๋ฐ์ดํฐ๋ฅผ ์์์ ๋ฐ๋ผ 4๋ฑ๋ถ ํ ๊ฒ
# IQR์ ์ด์ฉํ ์ด์์น ๋ฐ๊ฒฌ
Q1 = df['column'].quantile(0.25)
Q3 = df['column'].qunatile(0.75)
IQR = Q3 - Q1
uppper_limit = Q3 + 1.5*IQR
lower_limit = Q1 - 1.5*IQR
โ ์ฌ๊ธฐ์ ์ ๊น - ์กฐ๊ฑดํํฐ๋ง์ ํตํ ์ด์์น ์ญ์ (boolean indexing)
๋๋ฉ์ธ๊ณผ ๋น์ฆ๋์ค ๋งฅ๋ฝ์ ๋ฐ๋ผ ์ด์์น์ ๊ธฐ์ค์ด ๋ฌ๋ผ์ง
์ฆ ์ด์์น๋ ์ฃผ๊ด์ ์ธ ๊ฐ์ด๋ฏ๋ก, ์ญ์ ์ฌ๋ถ๋ ๋ถ์๊ฐ์ ๊ฒฐ์ ์ ๋ฐ๋ฆ
โก๏ธ ์ด์์น ์ญ์ ์ ํ์ง์ ์ข์์ง ์ ์์ง๋ง ์ ๋ณด ์์ค์ ๋๋ฐํ๊ธฐ ๋๋ฌธ์ ์ฃผ์๊ฐ ํ์ํจ
โ ์ฌ๊ธฐ์ ์ ๊น - ์ด์ ํ์ง (Anomaly Detection)
๋ฐ์ดํฐ์์ ํจํด์ ๋ค๋ฅด๊ฒ ๋ณด์ด๋ ๊ฐ์ฒด ๋๋ ์๋ฃ๋ฅผ ์ฐพ๋ ๋ฐฉ๋ฒ
ex) ์ฌ๊ธฐํ์ง, ์ฌ์ด๋ฒ ๋ณด์
- ์ด์์น ํ์ธ ์ค์ต
ํ์ด์ฌ ์ด์์น ํ์ธ ์ค์ต
HTML ์ฝ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐํ ์ ์๋ ์์ค
heleownae.tistory.com
โ ๊ฒฐ์ธก์น (Missing Value)
์กด์ฌํ์ง ์๋ ๋ฐ์ดํฐ
- ์์นํ ๋ฐ์ดํฐ
- ํ๊ท ๊ฐ ๋์น: ๋ํ์ ์ธ ๋์น ๋ฐฉ๋ฒ
- ์ค์๊ฐ ๋์น: ๋ฐ์ดํฐ์ ์ด์์น๊ฐ ๋ง์ ํ๊ท ๊ฐ์ด ๋ํ์ฑ์ด ์๋ค๋ฉด ์ค์ ๊ฐ์ ์ด์ฉ (ex. ์ด์์น๋ ํ๊ท ์ ์๊ณกํจ)
- ๋ฒ์ฃผํ ๋ฐ์ดํฐ
- ์ต๋น๊ฐ ๋์น
- ์ฌ์ฉ ํจ์
- ๊ฐ๋จํ ์ญ์ & ๋์น
- df.dropna(axis = 0): ํ ์ญ์
- df.dropna(axis = 1): ์ด ์ญ์
- Boolean Indexing
- df.fillna(value): ํน์ ๊ฐ์ผ๋ก ๋์น(ํ๊ท , ์ค์, ์ต๋น๊ฐ)
- ์๊ณ ๋ฆฌ์ฆ ์ด์ฉ
- sklearn.impute.SimpleImputer:ํ๊ท , ์ค์, ์ต๋น๊ฐ์ผ๋ก ๋์น
- SimpleImputer.statistics_ : ๋์นํ ๊ฐ ํ์ธ ๊ฐ๋ฅ
- sklearn.impute.IterativeImputer: ๋ค๋ณ๋๋์น(ํ๊ท ๋์น)
- sklearn.impute.KNNImputer: KNN ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํ ๋์น
- sklearn.impute.SimpleImputer:ํ๊ท , ์ค์, ์ต๋น๊ฐ์ผ๋ก ๋์น
- ๊ฐ๋จํ ์ญ์ & ๋์น
- ๊ฒฐ์ธก์น ํ์ธ ์ค์ต
ํ์ด์ฌ ๊ฒฐ์ธก์น ํ์ธ ์ค์ต
HTML ์ฝ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐํ ์ ์๋ ์์ค
heleownae.tistory.com
โ ์ธ์ฝ๋ฉ(Encoding): ๋ฒ์ฃผํ ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ
์ด๋ค ์ ๋ณด๋ฅผ ์ ํด์ง ๊ท์น์ ๋ฐ๋ผ ๋ณํํ๋ ๊ฒ
- ๋ ์ด๋ธ ์ธ์ฝ๋ฉ(Label Encoding): ๋ฌธ์์ด ๋ฒ์ฃผํ ๊ฐ์ ๊ณ ์ ํ ์ซ์๋ก ํ ๋น (ex. 1๋ฑ๊ธ 0, 2๋ฑ๊ธ 1, 3๋ฑ๊ธ 2)
- ํน์ง
- ์ฅ์ : ๋ชจ๋ธ์ด ์ฒ๋ฆฌํ๊ธฐ ์ฌ์ด ์์นํ์ผ๋ก ๋ฐ์ดํฐ ๋ณํ
- ๋จ์ : ์์ ๊ฐ ํฌ๊ธฐ์ ์๋ฏธ๊ฐ ๋ถ์ฌ๋์ด ๋ชจ๋ธ์ด ์๋ชป ํด์ํ ์ ์์
- ์ฌ์ฉ ํจ์
- sklearn.preprocessing.LabelEncoder
- ๋ฉ์๋
- fit: ๋ฐ์ดํฐ ํ์ต
- transform: ์ ์ํ ๋ฐ์ดํฐ๋ก ๋ณํ
- fit_transform: fit๊ณผ transform์ ์ฐ๊ฒฐํ์ฌ ํ๋ฒ์ ์คํ
- inverse_transform : ์ธ์ฝ๋ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์๋ ๋ฌธ์์ด๋ก ๋ณํ
- ์์ฑ
- classes_: ์ธ์ฝ๋๊ฐ ํ์ตํ ํด๋์ค(๋ฒ์ฃผ)
- ํน์ง
- ์-ํซ ์ธ์ฝ๋ฉ(One-Hot Encoding): ๊ฐ ๋ฒ์ฃผ๋ฅผ ์ด์ง ํ์์ผ๋ก ๋ณํ (ex. ๋นจ๊ฐ [1,0,0], ํ๋ [0,1,0], ์ด๋ก [0,0,1]
- ํน์ง
- ์ฅ์ : ๊ฐ ๋ฒ์ฃผ๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ํํ๋์ด, ์์๊ฐ ์ค์๋๋ฅผ ์๋ชป ํ์ตํ๋ ๊ฒ์ ๋ฐฉ์ง, ๋ช ๋ชฉํ ๋ฐ์ดํฐ์ ๊ถ์ฅ
- ๋จ์ : ๋ฒ์ฃผ ๊ฐ์๊ฐ ๋ง์ ๊ฒฝ์ฐ ์ฐจ์์ด ํฌ๊ฒ ์ฆ๊ฐ(์ฐจ์์ ์ ์ฃผ) , ๋ชจ๋ธ์ ๋ณต์ก๋๋ฅผ ์ฆ๊ฐ, ๊ณผ์ ํฉ ์ ๋ฐ
- ์ฌ์ฉ ํจ์
- pd.get_dummies
- sklearn.preprocessing.OneHotEncoder
- ๋ฉ์๋(LabelEncoder์ ๋์ผ)
- categories_: ์ธ์ฝ๋๊ฐ ํ์ตํ ํด๋์ค(๋ฒ์ฃผ)
- get_feature_names_out(): ํ์ตํ ํด๋์ค ์ด๋ฆ(๋ฆฌ์คํธ)
- ํน์ง
- ์ธ์ฝ๋ฉ ์ค์ต
ํ์ด์ฌ ์ธ์ฝ๋ฉ ์ค์ต
HTML ์ฝ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐํ ์ ์๋ ์์ค
heleownae.tistory.com
โ ์ค์ผ์ผ๋ง(Scaling): ์์นํ ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ
์๋ก ๋จ์ ๊ฐ์ด ๋ค๋ฅธ ๋ฐ์ดํฐ๋ค์ ๋ณด์
- ํ์คํ(Standardization): ๊ฐ ๋ฐ์ดํฐ์ ํ๊ท ์ ๋นผ๊ณ ํ์คํธ์ฐจ๋ฅผ ๋๋์ด ํ๊ท ์ 0 ํ์คํธ์ฐจ๋ฅผ 1๋ก ์กฐ์ ํ๋ ๋ฐฉ๋ฒ
- $ x_{new} = \frac{x-x_{mean}}{x_{std}} $
- ํจ์: sklearn.preprocessing.StandardScaler
- ๋ฉ์๋
- fit : ๋ฐ์ดํฐํ์ต(ํ๊ท ๊ณผ ํ์คํธ์ฐจ๋ฅผ ๊ณ์ฐ)
- transform: ๋ฐ์ดํฐ ์ค์ผ์ผ๋ง ์งํ
- ์์ฑ
- mean_: ๋ฐ์ดํฐ์ ํ๊ท ๊ฐ
- scale_, var_: ๋ฐ์ดํฐ์ ํ์ค ํธ์ฐจ,๋ถ์ฐ ๊ฐ
- n_features_in_: fit ํ ๋ ๋ค์ด๊ฐ ๋ณ์ ๊ฐ์
- feature_names_in_: fit ํ ๋ ๋ค์ด๊ฐ ๋ณ์ ์ด๋ฆ
- n_samples_seen_ : fit ํ ๋ ๋ค์ด๊ฐ ๋ฐ์ดํฐ์ ๊ฐ์
- ๋ฉ์๋
- ์ฅ์
- ์ด์์น๊ฐ ์๊ฑฐ๋ ๋ถํฌ๊ฐ ์น์ฐ์ณ์ ธ ์์ ๋ ์ ์ฉ
- ๋ชจ๋ ํน์ฑ์ ์ค์ผ์ผ์ ๋์ผํ๊ฒ ๋ง์ถค, ๋ง์ ์๊ณ ๋ฆฌ์ฆ์์ ์ข์ ์ฑ๋ฅ
- ๋จ์
- ๋ฐ์ดํฐ์ ์ต์-์ต๋ ๊ฐ์ด ์ ํด์ง์ง ์์
- ์ ๊ทํ(Normalization): ๋ฐ์ดํฐ๋ฅผ 0๊ณผ 1์ฌ์ด ๊ฐ์ผ๋ก ์กฐ์ (์ต์๊ฐ 0, ์ต๋๊ฐ 1)
- $ x_{norm} = \frac{x-x_{min}}{x_{max}-x_{min}} $
- ํจ์: sklearn.preprocessing.MinMaxScaler *ํ์คํ์ ๊ณตํต์ธ ๊ฒ์ ๊ธฐ์ฌ ์๋ตํจ
- ์์ฑ
- data_min_: ์ ๋ฐ์ดํฐ์ ์ต์๊ฐ
- data_max_: ์ ๋ฐ์ดํฐ์ ์ต๋๊ฐ
- data_range_: ์ ๋ฐ์ดํฐ์ ์ต๋-์ต์ ๋ฒ์
- ์์ฑ
- ์ฅ์
- ๋ชจ๋ ํน์ฑ์ ์ค์ผ์ผ์ ๋์ผํ๊ฒ ๋ง์ถค
- ์ต๋-์ต์ ๋ฒ์๊ฐ ๋ช ํํจ
- ๋จ์
- ์ด์์น์ ์ํฅ์ ๋ง์ด ๋ฐ์ ์ ์์ (= ์ด์์น๊ฐ ์์ ๋ ์ ์ฉ)
- ๋ก๋ฒ์คํธ ์ค์ผ์ผ๋ง(Robust Scaling): ์ค์๊ฐ๊ณผ IQR์ ์ฌ์ฉํ์ฌ ์ค์ผ์ผ๋ง
- $ x_{robust} = \frac{x-median}{IQR} $
- ํจ์: sklearn.preprocessing.RobustScaler
- ์์ฑ
- center_: ํ๋ จ ๋ฐ์ดํฐ์ ์ค์๊ฐ
- ์์ฑ
- ์ฅ์ : ์ด์์น์ ์ํฅ์ ๋ ๋ฏผ๊ฐ
- ๋จ์ : ํ์คํ์ ์ ๊ทํ์ ๋นํด ๋ ์ฌ์ฉ๋จ
- ์ค์ผ์ผ๋ง ์ค์ต
ํ์ด์ฌ ์ค์ผ์ผ๋ง ์ค์ต
HTML ์ฝ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐํ ์ ์๋ ์์ค
heleownae.tistory.com
4. ๋ฐ์ดํฐ ๋ถ๋ฆฌ
โ ๊ณผ์ ํฉ (Overfitting)
๋ฐ์ดํฐ๋ฅผ ๊ณผ๋ํ๊ฒ ํ์ตํ์ฌ ํด๋น ๋ฌธ์ ๋ ์ ๋ง์ถ์ง๋ง ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ์ ๋๋ก ์์ธก/๋ถ๋ฅํ์ง ๋ชปํ๋ ํ์
- ์์ธก/๋ถ๋ฅ๋ฅผ ์ํด ๋ชจํ์ ๋ณต์ก๋๋ฅผ ์ค์
- ๋ชจํ์ด ์ง๋์น๊ฒ ๋ณต์กํ ๋ : ๊ณผ๋ ์ ํฉ์ด ๋ ์ ์์
- ๋ชจํ์ด ์ง๋์น๊ฒ ๋จ์ํ ๋: ๊ณผ์ ์ ํฉ์ด ๋ ์ ์์
- ๊ณผ์ ํฉ์ ์์ธ
- ๋ชจ๋ธ์ ๋ณต์ก๋(์๊ธฐ ์์)
- ๋ฐ์ดํฐ ์์ด ์ถฉ๋ถํ์ง ์์
- ํ์ต ๋ฐ๋ณต์ด ๋ง์(๋ฅ๋ฌ๋์ ๊ฒฝ์ฐ)
- ๋ฐ์ดํฐ ๋ถ๊ท ํ
โ ๊ณผ์ ํฉ ํด๊ฒฐ: ํ ์คํธ ๋ฐ์ดํฐ์ ๋ถ๋ฆฌ
- ํ์ต ๋ฐ์ดํฐ(Train Data): ๋ชจ๋ธ์ ํ์ต(fit)ํ๊ธฐ ์ํ ๋ฐ์ดํฐ
- ํ ์คํธ ๋ฐ์ดํฐ(Test Data): ๋ชจ๋ธ์ ํ๊ฐ ํ๊ธฐ ์ํ ๋ฐ์ดํฐ
- ํจ์ ๋ฐ ํ๋ผ๋ฏธํฐ ์ค๋ช
- sklearn.model_selection.train_test_split
- ํ๋ผ๋ฏธํฐ
- test_size: ํ ์คํธ ๋ฐ์ดํฐ ์ธํธ ํฌ๊ธฐ
- train_size: ํ์ต ๋ฐ์ดํฐ ์ธํธ ํฌ๊ธฐ
- shuffle: ๋ฐ์ดํฐ ๋ถ๋ฆฌ ์ ์๊ธฐ
- random_state: ํธ์ถํ ๋๋ง๋ค ๋์ผํ ํ์ต/ํ ์คํธ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๊ธฐ ์ํ ๋์ ๊ฐ. ์ํํ ๋ ๋ง๋ค ๋์ผํ ๋ฐ์ดํฐ ์ธํธ๋ก ๋ถ๋ฆฌํ๊ธฐ ์ํด ์ซ์๋ฅผ ๊ณ ์ ์์ผ์ผ ํจ
- ๋ฐํ ๊ฐ(์์ ์ค์)
- X_train, X_test, y_train, y_test
- ํ๋ผ๋ฏธํฐ
- sklearn.model_selection.train_test_split
- ์ค์ต
ํ์ด์ฌ ํ ์คํธ ๋ฐ์ดํฐ ๋ถ๋ฆฌ ์ค์ต
HTML ์ฝ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐํ ์ ์๋ ์์ค
heleownae.tistory.com
5. ๊ต์ฐจ ๊ฒ์ฆ๊ณผ GridSearch
โ ๊ต์ฐจ ๊ฒ์ฆ (Cross Validation)
๋ฐ์ดํฐ ์ ์ ์ฌ๋ฌ ๊ฐ์ ํ์ ์งํฉ์ผ๋ก ๋๋์ด ๋์๊ฐ๋ฉด์ ๊ฒ์ฆ ๋ฐ์ดํฐ๋ก ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
๊ณ ์ ๋ ํ ์คํธ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ์ฌ ๊ณผ์ ํฉ์ ์ทจ์ฝํ๋ค๋ ๋จ์ ์ ๋ณด์ํ๊ธฐ ์ํจ
- K-Fold Validation: Train Data๋ฅผ K๊ฐ์ ํ์ ์งํฉ์ผ๋ก ๋๋์ด ๋ชจ๋ธ์ ํ์ต์ํค๊ณ ๋ชจ๋ธ์ ์ต์ ํ ํ๋ ๋ฐฉ๋ฒ
- ํน์ง: ๋ฐ์ดํฐ๊ฐ ๋ถ์กฑํ ๊ฒฝ์ฐ ์ ์ฉ (๋ฐ๋ณต ํ์ต)
- K: ๋ถํ ๊ฐฏ์
- Split 1: ํ์ต์ฉ(Fold 2~5), ๊ฒ์ฆ์ฉ(Fold1)
- Split 2: ํ์ต์ฉ(Fold1, 3~5), ๊ฒ์ฆ์ฉ(Fold2)
- Split 5๊น์ง ๋ฐ๋ณต ํ ์ต์ข ํ๊ฐ
- ํจ์
- sklearn.model_selection.KFold
- sklearn.model_selection.StrifiedKFold: ๋ถ๊ท ํํ ๋ ์ด๋ธ(Y)์ ๊ฐ์ง๊ณ ์์ ๋ ์ฌ์ฉ
โ GridSearchV: Hyper Parameter ์ ์ฉํ๊ธฐ
Hyper Parameter(ํ์ดํผ ํ๋ผ๋ฏธํฐ): ๋ชจ๋ธ์ ๊ตฌ์ฑํ๋ ์ ๋ ฅ ๊ฐ ์ค ์ฌ๋์ด ์์์ ์ผ๋ก ๋ฐ๊ฟ ์ ์๋ ์ ๋ ฅ ๊ฐ
Grid Search: ํ์ดํผ ํ๋ผ๋ฏธํฐ์ ๊ฐ์ ์๋ํํด์ฃผ๋ ๋ฉ์๋
'๐ ํต๊ณํ & ๋จธ์ ๋ฌ๋ ๊ธฐ๋ก' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
240215 THU ๋จธ์ ๋ฌ๋ ์ฌํ - ๋น์ง๋ํ์ต (1) | 2024.02.15 |
---|---|
240206 TUE ๋จธ์ ๋ฌ๋ ์ฌํ - ํ๊ท, ๋ถ๋ฅ ๋ชจ๋ธ (1) | 2024.02.06 |
240202 FRI ๋จธ์ ๋ฌ๋ ๊ธฐ์ด ์ค์ต (0) | 2024.02.03 |
240201 THU ๋จธ์ ๋ฌ๋ ๊ธฐ์ด - ๋ก์ง์คํฑํ๊ท (0) | 2024.02.01 |
240131 WED ๋จธ์ ๋ฌ๋ ๊ธฐ์ด - ์ ํํ๊ท (0) | 2024.01.31 |