๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Machine Learning/Case Study ๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป26

[๐Ÿฆ€ ๊ฒŒ ๋‚˜์ด ์˜ˆ์ธก(4)] Baseline Modeling(์—ฌ๋Ÿฌ ๋ชจ๋ธ ๊ฒฐ๊ณผ๋ฅผ ์ข…ํ•ฉ, ๋น„๊ต) ๐Ÿง‘‍๐Ÿ’ป ์ฝ”๋“œ ์ข…ํ•ฉ (3)๊นŒ์ง€ ์ง„ํ–‰ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ข…ํ•ฉํ•˜๋ฉด ๋ชจ๋ธ๋ง ๋ฒ ์ด์Šค ๋ผ์ธ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” 3๊ฐœ์˜ ๋ชจ๋ธ ๋ณ„๋กœ K-fold ๊ต์ฐจ ๊ฒ€์ฆ์„ ์ˆ˜ํ–‰ํ•˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ ์ ์ˆ˜(MAE)์˜ ํ‰๊ท ๊ฐ’์„ ์‹œ๊ฐํ™”ํ•˜์—ฌ ๋น„๊ตํ•ด๋ณธ๋‹ค. ์ด๋ ‡๊ฒŒ 1์ฐจ ๋ฒ ์ด์Šค๋ผ์ธ ๋ชจ๋ธ๋ง ์ฝ”๋“œ๋ฅผ ๋งˆ๋ฌด๋ฆฌํ•œ๋‹ค! 1. ๋ผ๋ฒจ ์ธ์ฝ”๋”ฉ # ๋ผ๋ฒจ ์ธ์ฝ”๋”ฉ(sex) from sklearn.preprocessing import LabelEncoder le = LabelEncoder() train['generated'] = 1 original['generated'] = 0 test['generated'] = 1 train.drop(columns = 'id', axis = 1, inplace = True) train = pd.concat([train, origina.. 2023. 9. 25.
[๐Ÿฆ€ ๊ฒŒ ๋‚˜์ด ์˜ˆ์ธก(3)] Baseline Modeling(Hist Gradient Boosting) ------>> ๊ธฐ๋ณธ์ ์ธ ์ „์ฒ˜๋ฆฌ ์ฝ”๋“œ๋Š” ์•ž ํฌ์ŠคํŒ…๊ณผ ๋™์ผํ•˜๊ฒŒ ์ด์–ด์ง‘๋‹ˆ๋‹ค. ๐Ÿš€ Hist Gradient Boosting ์ด๋ž€? ์‚ฌ์ดํ‚ท๋Ÿฐ์˜ Gradient Boosting ์˜ ๋ณ€ํ˜• ์ค‘ ํ•˜๋‚˜๋กœ, ์ผ๋ฐ˜ Gradient Boosting(ํšŒ๊ท€/๋ถ„๋ฅ˜)๊ณผ ๋น„๊ตํ•˜์—ฌ ํšจ์œจ์ ์ธ ๊ตฌํ˜„์„ ์ œ๊ณต ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ์…‹์— ์ ํ•ฉํ•˜๋ฉฐ, ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ Gradient Boosting๋ณด๋‹ค ๋น ๋ฅธ ํ•™์Šต๊ณผ ์˜ˆ์ธก์„ ์ œ๊ณต ์žฅ์  ํžˆ์Šคํ† ๊ทธ๋žจ ๊ธฐ๋ฐ˜ ๋ถ„ํ•  : ๋ฐ์ดํ„ฐ๋ฅผ ํžˆ์Šคํ† ๊ทธ๋žจ ๊ธฐ๋ฐ˜ ๋ถ„ํ• ์„ ์‚ฌ์šฉํ•˜์—ฌ, ์—ฐ์†ํ˜• ํŠน์„ฑ์„ ๋น ๋ฅด๊ฒŒ ์ด์‚ฐํ™”ํ•˜๊ณ  ์ด์‚ฐ์ ์ธ ๊ฐ’์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ„ํ• ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ํ•™์Šต๊ณผ ์˜ˆ์ธก์„ ๊ฐ€์†ํ™” ํ•จ ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์  : ํžˆ์Šคํ† ๊ทธ๋žจ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์••์ถ•/์ €์žฅํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ์š”๊ตฌ๋Ÿ‰์ด ๋‚ฎ์•„์ง ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ : ๋ฉ€ํ‹ฐ์ฝ”์–ด CPU์—์„œ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅ ๋น ๋ฅธ ํ•™์Šต ๋ฐ ์˜ˆ์ธก : ํšจ์œจ์ ์ธ.. 2023. 9. 24.
[๐Ÿฆ€ ๊ฒŒ ๋‚˜์ด ์˜ˆ์ธก(2)] Baseline Modeling(Gradient Boosting) ๐Ÿš€ Gradient Boosting ์ด๋ž€? ๋จธ์‹  ๋Ÿฌ๋‹์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ•๋ ฅํ•œ ์•™์ƒ๋ธ” ํ•™์Šต ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ํ•˜๋‚˜๋กœ, ํšŒ๊ท€ & ๋ถ„๋ฅ˜ ๋ฌธ์ œ ๋ชจ๋‘ ์ ์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ ๋†’์€ ์˜ˆ์ธก ์„ฑ๋Šฅ์„ ์ œ๊ณต ์•™์ƒ๋ธ” ํ•™์Šต : ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์•ฝํ•œ ๋ชจ๋ธ์„ ๊ฒฐํ•ฉํ•˜์—ฌ ํ•˜๋‚˜์˜ ๊ฐ•๋ ฅํ•œ ๋ชจ๋ธ์„ ๋งŒ๋“œ๋Š” ๊ธฐ๋ฒ• ๋ถ€์ŠคํŒ… : ๋ถ€์ŠคํŒ…(์ด์ „ ๋ชจ๋ธ์˜ ์˜ค๋ฅ˜๋ฅผ ๋ณด์™„ํ•˜๋Š” ์ƒˆ๋กœ์šด ๋ชจ๋ธ์„ ํ•™์Šตํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™) ๊ธฐ๋ฒ• ์ค‘ ํ•˜๋‚˜๋กœ, ์ˆœ์ฐจ์ ์œผ๋กœ ๋ชจ๋ธ์„ ์ถ”๊ฐ€ํ•˜๋ฉฐ ์ด์ „ ๋ชจ๋ธ์ด ์ž˜๋ชป ์˜ˆ์ธกํ•œ ์ƒ˜ํ”Œ์— ๊ฐ€์ค‘์น˜๋ฅผ ๋ถ€์—ฌํ•˜์—ฌ ๋ชจ๋ธ์˜ ์˜ค๋ฅ˜๋ฅผ ๋ณด์™„ํ•จ ๊ทธ๋ผ๋””์–ธํŠธ : ๊ทธ๋ผ๋””์–ธํŠธ(๊ธฐ์šธ๊ธฐ)๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ชจ๋ธ ํ•™์Šต. ์†์‹ค ํ•จ์ˆ˜(MSE, MAE ๋“ฑ)์˜ ๊ธฐ์šธ๊ธฐ๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ ์ด์ „ ๋ชจ๋ธ์ด ์˜ˆ์ธก์„ ์ž˜๋ชปํ•œ ์ƒ˜ํ”Œ์— ๋” ํฐ ๊ฐ€์ค‘์น˜๋ฅผ ์ฃผ๊ณ , ์ด๋ฅผ ๋ชจ์ •ํ•˜๋Š” ์ƒˆ๋กœ์šด ๋ชจ๋ธ์„ ํ•™์Šตํ•จ ๋ชจ๋ธ์˜ ๊ฒฐํ•ฉ : ์•ฝํ•œ ํ•™์Šต์ž(๋ชจ๋ธ)์˜ ์˜ˆ์ธก์— ๊ฐ€์ค‘์น˜๋ฅผ ๋ถ€.. 2023. 9. 24.
[๐Ÿฆ€ ๊ฒŒ ๋‚˜์ด ์˜ˆ์ธก(1)] ๋ฐ์ดํ„ฐ ํƒ์ƒ‰ & EDA ๐Ÿ˜€ ๋ณธ ์˜ˆ์ œ๋Š” kaggle ์˜ EDA & ML ์ฝ”๋“œ์˜ best practice๋ฅผ ๋ณด๋ฉฐ ์Šคํ„ฐ๋””ํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. - ์ „์ฒด์ ์ธ ์ฝ”๋“œ๋Š” ์ด ๋งํฌ๋กœ >> https://www.kaggle.com/code/oscarm524/ps-s3-ep16-eda-modeling-submission/notebook ๐Ÿฆ€ ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” '๊ฒŒ' ๋‚˜์ด๋ฅผ ์˜ˆ์ธกํ•˜๋Š” ๊ฒƒ์„ ์ฃผ์ œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ํƒ์ƒ‰ํ•˜๊ณ , EDA๋ฅผ ํ•˜๋Š” ๊ธฐ์ดˆ์ ์ธ ๊ณผ์ •์„ ์‚ดํŽด๋ณธ๋‹ค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ load import pandas as pd import numpy as np import matplotlib.pyplot as plt; plt.style.use('ggplot') import seaborn as sns import plotly.express as px from sklearn.tre.. 2023. 9. 24.
[์ค‘๊ณ ์ฐจ ๊ฐ€๊ฒฉ ์˜ˆ์ธก(2)] EDA ๊ฐ€์žฅ ๋จผ์ € ๋ถ„์„์„ ์‹œ์ž‘ํ•˜๋ ค๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋“œํ•œ ๋‹ค์Œ์—” ๋ฌด์—‡์„ ํ•ด์•ผํ• ๊นŒ? ์ง€๋‚œ ์‹œ๊ฐ„์— pandas_profiling์—์„œ ์‚ดํŽด๋ณธ ๋ฐ”์™€ ๊ฐ™์ด ๊ฐ ํ”ผ์ณ์™€ ํ”ผ์ณ๊ฐ„ ๊ด€๊ณ„๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ถ„์„์„ ์‹œ์ž‘ํ•ด์•ผํ•œ๋‹ค. ์ „์ฒด์ ์ธ EDA์˜ ํ๋ฆ„์„ ๊ฑฐ๋“ญ ์ตํ˜€๋ณด์ž. ๐Ÿš• EDA์˜ ์‹œ์ž‘์€ ํ”ผ์ณ ์ดํ•ด โœ” 1. Feature ์ฒดํฌ - id : ์ƒ˜ํ”Œ ์•„์ด๋”” | title : ์ œ์กฐ์‚ฌ ๋ชจ๋ธ๋ช… | odometer : ์ฃผํ–‰ ๊ฑฐ๋ฆฌ - location : ํŒ๋งค์ฒ˜(๋‚˜์ด์ง€๋ฆฌ์•„ ๋„์‹œ) | isimported : ํ˜„์ง€ ์‚ฌ์šฉ ์—ฌ๋ถ€ - engine : ์—”์ง„ ์ข…๋ฅ˜ | transmission : ํŠธ๋žœ์Šค๋ฏธ์…˜ ์ข…๋ฅ˜ - fuel : ์—ฐ๋ฃŒ ์ข…๋ฅ˜ | paint : ํŽ˜์ธํŠธ ์ƒ‰์ƒ | year : ์ œ์กฐ๋…„๋„ | target : ์ž๋™์ฐจ ๊ฐ€๊ฒฉ ํ”ผ์ณ์˜ ๊ตฌ์„ฑ๊ณผ ๊ฐ ํ•ญ๋ชฉ์˜ ์˜๋ฏธ๋ฅผ ์ž˜ ํŒŒ์•…ํ•ด์•ผ ๋‹ค.. 2023. 9. 17.
[์ค‘๊ณ ์ฐจ ๊ฐ€๊ฒฉ ์˜ˆ์ธก(1)] pandas_profiling ์„ ์ด์šฉํ•œ ํ”ผ์ณ ์š”์•ฝ ํ™•์ธ ๐Ÿฅ‘ pandas_profiling ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋‹ค์šด๋กœ๋“œ !pip install -U pandas-profiling ๋ฐ์ดํ„ฐ ๋ถ„์„ ๋ฐ ํƒ์ƒ‰์„ ์œ„ํ•œ Python ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜์—ฌ ๋ฐ์ดํ„ฐ์˜ ํ†ต๊ณ„์  ์š”์•ฝ๊ณผ ์‹œ๊ฐํ™”, ๋ฐ์ดํ„ฐ ํ’ˆ์งˆ ํ‰๊ฐ€ ๋“ฑ์„ ์ž๋™ํ™”ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ดํ•ดํ•˜๊ณ  ๋ฐ์ดํ„ฐ ๋ถ„์„ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ€์†ํ™”ํ•˜๋Š”๋ฐ ๋„์›€์„ ์ฃผ์–ด, ์†Œ๊ฐœํ•œ๋‹ค ๊ตฌ์ฒด์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค. ๐Ÿ‘‰ ๋ฐ์ดํ„ฐ ๊ฐœ์š” ๋ฐ ํ†ต๊ณ„ ์š”์•ฝ : ๊ฐ ์—ด์— ๋Œ€ํ•œ ํ†ต๊ณ„ ์š”์•ฝ(ํ‰๊ท , ์ค‘์•™๊ฐ’, ํ‘œ์ค€ํŽธ์ฐจ ๋“ฑ) ๐Ÿ‘‰ ๋ฐ์ดํ„ฐ ํ’ˆ์งˆ ํ‰๊ฐ€ : nan ๊ฐ’์˜ ๋น„์œจ๊ณผ ์ค‘๋ณต๋œ ๋ ˆ์ฝ”๋“œ์˜ ์ˆ˜๋ฅผ ํ™•์ธํ•˜๊ณ , ์ด์ƒ์ ์„ ๊ฐ์ง€ ๐Ÿ‘‰ ์‹œ๊ฐํ™” : ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๋‹ค์–‘ํ•œ ์‹œ๊ฐํ™” ๊ทธ๋ž˜ํ”„ ์ƒ์„ฑ ๐Ÿ‘‰ ์ƒ๊ด€๊ด€๊ณ„ ๋ถ„์„ : ์—ด ๊ฐ„์˜ ์ƒ๊ด€๊ด€๊ณ„ ๋ถ„์„ ๋ฐ ์‹œ๊ฐํ™” ๐Ÿ‘‰ ๋ณ€์ˆ˜๊ฐ„ ๊ด€๊ณ„ ํƒ์ƒ‰ ๐Ÿ‘‰ ๋ณด๊ณ ์„œ ์ƒ์„ฑ :.. 2023. 9. 17.
[ํ•ด์™ธ ๋ถ€๋™์‚ฐ ์›”์„ธ ์˜ˆ์ธก(2)] One-Hot Encoding & Ridge Regression Library Import import os import numpy as np import random from sklearn.preprocessing import OneHotEncoder from sklearn.linear_model import Ridge Data pre-processing : One-Hot Encoding ๋ช…๋ชฉํ˜• ๋ณ€์ˆ˜์˜ ๊ฒฝ์šฐ ๊ฐ’๋“ค ๊ฐ๊ฐ์„ ์ƒˆ๋กœ์šด ์ปฌ๋Ÿผ์œผ๋กœ ๋งŒ๋“ค๊ณ  ๐Ÿ‘‰ ์›๋ž˜ ํ•ด๋‹นํ•˜๋˜ ๊ฐ’์—๋Š” 1์„, ์•„๋‹ ๊ฒฝ์šฐ 0์„ ๋ถ€์—ฌ ์ด์ค‘ For ๋ฌธ์„ ์“ด ์ด์œ  : One Hot Encoder๊ฐ€ Test ๋ฐ์ดํ„ฐ๋กœ๋ถ€ํ„ฐ Fitting๋˜๋Š” ๊ฒƒ์€ Data Leakage์ด๋ฏ€๋กœ, Test ๋ฐ์ดํ„ฐ์—๋Š” Train ๋ฐ์ดํ„ฐ๋กœ Fitting๋œ One Hot Encoder๋กœ๋ถ€ํ„ฐ transform๋งŒ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•œ๋‹ค! # ์งˆ์  ์ปฌ.. 2023. 9. 15.
[ํ•ด์™ธ ๋ถ€๋™์‚ฐ ์›”์„ธ ์˜ˆ์ธก(1)] ๊ธฐ๋ณธ์ ์ธ EDA ์—ฐ์Šต Data Load 8692๊ฐœ์˜ ๋ฐ์ดํ„ฐ ID : ์ƒ˜ํ”Œ ๋ณ„ ๊ณ ์œ  ID ๋ถ€๋™์‚ฐ ๊ด€๋ จ ์ •๋ณด ํ•ด๋‹น ๊ฑด๋ฌผ์ด ์œ„์น˜ํ•œ ์œ„๋„์™€ ๊ฒฝ๋„(๋‹จ, ์ง€๋„ api๋ฅผ ์ด์šฉํ•˜์—ฌ ์ถ”๊ฐ€์ •๋ณด๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์—†์Œ) target: monthlyRent(us_dollar) : 1๋‹ฌ๋Ÿฌ๋ฅผ ๋‹จ์œ„๋กœ ํ•˜๋Š” ์›”์„ธ ๊ฐ€๊ฒฉ ๊ธฐ๋ณธ์ ์ธ EDA โ–ถ๏ธŽ ์งˆ์  ๋ณ€์ˆ˜์™€ ์–‘์  ๋ณ€์ˆ˜ ํ™•์ธ # ์งˆ์  ๋ณ€์ˆ˜ qual_df = total_df[['propertyType', 'suburbName']] # ์–‘์  ๋ณ€์ˆ˜ quan_df = total_df.drop(columns = ['propertyType', 'suburbName']) โ–ถ๏ธŽ ๊ฒฐ์ธก์น˜, ํ–‰๊ณผ ์ปฌ๋Ÿผ ๊ตฌ์„ฑ, ๋ฐ์ดํ„ฐํƒ€์ž… / ํ†ต๊ณ„๋Ÿ‰ ํ™•์ธ โ–ถ๏ธŽ ์‹œ๊ฐํ™” 1) ์–‘์  ๋ณ€์ˆ˜ ๋ถ„ํฌ ํ™•์ธ : ํžˆ์Šคํ† ๊ทธ๋žจ quan_df.hist(bins = 100, f.. 2023. 9. 15.
728x90