
ํ์ดํ๋ ์ ์ฒ๋ฆฌ๊ณผ์ ์์ , ํธ๋ ์ธ์ ์ ํ ์คํธ์ ์ ํ๊บผ๋ฒ์ ์ฒ๋ฆฌํ๊ณ ์ถ์ด. ๊ทธ๋์ drop_features = ['SibSp', 'Parch', 'Cabin', 'Ticket'] this_train , this_test = the_method.drop_feature(this_train, this_test, *drop_features) this_train , this_test = the_method.pclass_ordinal(this_train, this_test) this_train , this_test = the_method.fare_ordinal(this_train, this_test) this_train , this_test = the_method.embarked_ordinal(this_train, this_test) this_train , this_test = the_method.gender_nominal(this_train, this_test) this_train , this_test = the_method.extract_title(this_train, this_test) # Name์์ Title ์ถ์ถ this_train , this_test = the_method.age_ratio(this_train, this_test) this_train , this_test = the_method.title_nominal(this_train, this_test) drop_name = ['Name'] this_train , this_test = the_method.drop_feature(this_train, this_test, *drop_name) ์ด๋ ๊ฒ ์์ ์ ํ๋๋ฐ, ํ์ด์ฌ ๋ฌธ๋ฒ์์ ์ด๊ฒ์ด ๋ง์ ? ์๋ ๋ฆฌํด๊ฐ์ ํ๋๋ง ์์ด์ผ ํ๋๋ฐ ์ด๊ฒ ๊ฐ๋ฅํ์ง ์ค๋ช ํด์ค.
๊ฒฐ๋ก ๋ถํฐ ๋งํ๋ฉด ๋ค, ํ์ด์ฌ์์ return ๊ฐ์ด ๋ ์ด์์ด ๊ฐ๋ฅํ๊ณ ,
๊ทธ๊ฒ์ ํํ(tuple) ํํ๋ก ๋ฌถ์ด์ ๋ฐํํ๊ธฐ ๋๋ฌธ์
์๋์ฒ๋ผ ์ฐ๋ ๊ฒ ๋ฌธ๋ฒ์ ์ผ๋ก ์์ ํ ๋ง์ต๋๋ค.
โ ์ ๊ฐ๋ฅํ๊ฐ?
ํ์ด์ฌ ํจ์๋ ์ฌ์ค ํญ์ ํ ๊ฐ์ ๊ฐ๋ง ๋ฐํํฉ๋๋ค.
๊ทธ๋ฐ๋ฐ ์ฌ๋ฌ ๊ฐ์ ๋ฃ์ด์ ๋ฐํํ๋ฉด ์๋์ผ๋ก ํํ๋ก ๋ฌถ์ฌ์ ํ ๊ฐ์ ๊ฐ์ด ๋ฉ๋๋ค.
์์:
์ด ํจ์๋ ์ค์ ๋ก ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ทธ๋์ ํธ์ถํ ๋:
๋ผ๋ ๋ฐฉ์์ผ๋ก ํํ ์ธํจํน(tuple unpacking) ์ ํ๊ฒ ๋ฉ๋๋ค.
โ ๊ทธ๋ฌ๋ฉด ๋ค ์ฝ๋๋ ๊ฐ์ ์๋ฆฌ
์๋ฅผ ๋ค์ด ์๋ ๋ฉ์๋๊ฐ:
์ด๋ ๊ฒ train, test๋ฅผ ๋ฐํํ๋ฉด
ํ์ด์ฌ์ ๋ด๋ถ์ ์ผ๋ก:
์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค.
→ ๊ทธ๋์ ์๋ ์ฝ๋๊ฐ ์ ์์ ์ผ๋ก ์๋ํฉ๋๋ค.
โ ์ฆ, ๋ค๊ฐ ํ ์ ์ฒด ์์ ์ ๊ตฌ์กฐ์ ์ผ๋ก ์์ ํ ์ฌ๋ฐ๋ฅธ Python ๋ฐฉ์
์ ์ฒด ํ๋ฆ:
๋ชจ๋ ํจ์๊ฐ (train, test) ํํ์ ๋ฐํํ๋ฉด
๊ฐ ๋จ๊ณ์์ ์ง์์ ์ผ๋ก ์
๋ฐ์ดํธํ ์ ์์ต๋๋ค.
โ ๋ ํ์ด์ฌ์ค๋ฌ์ด ํํ๋ก ์ค์ด๋ ๊ฒ๋ ๊ฐ๋ฅ (์ฐธ๊ณ )
์ฌ๋ฌ ๋ณํ์ ์ฒด์ด๋ํ๋ ค๋ฉด ์ด๋ ๊ฒ ๋ฌถ์ด๋ฒ๋ฆด ์๋ ์์ต๋๋ค:
test๋ ์ด์ train๊ณผ ๊ฐ์ด
์๋น์ค ํ์ผ์ ์ด๋ถ๋ถ ์ถ๊ฐ


๊ณ์ ์๋ฌ ์ก๊ณ , ํ์ค๋ก ๋์ค๊ฒ ์ ๋ ฌ ๋ฐ๊ฟ๋ฌ๋ผ๊ณ ์์ฒญํ์์

๋จธ์ ๋ฌ๋์์ ๋ชจ๋ธ๋ง์ ํ๋ ค๊ณ ํ๋๋ฐ, ์ ์ฒ๋ฆฌ ๋จ๊ณ๋ ์๋ฃ๋์ด์, ์ ์๋ก ๋ df๋ ์์ฑํ์ด. ์ด๋ ๋งํ๋ ๋ชจ๋ธ์ด ๋ญ์ง ์ด๋ณด์๊ฐ ์ดํดํ๋๋ก ์ฝ๊ฒ ์ค๋ช ํด์ค

๋ชจ๋ธ = “๋ฐ์ดํฐ๋ก ๋ฐฐ์ด ๋๋ํ ๊ณ์ฐ๊ธฐ”๋ผ๊ณ ์๊ฐํ๋ฉด ๋ผ!
์๋ฅผ ๋ค์ด, ๋๊ฐ ์ง ๊ฐ์ ์์ธกํ๊ณ ์ถ๋ค๊ณ ํด๋ณด์. ๋๊ฐ ์ด๋ฏธ ์ ์ฒ๋ฆฌํด์ ๋ง๋ ์ ์ df์๋ ์ด๋ฐ ์ปฌ๋ผ๋ค์ด ์๋ค๊ณ ์น์:
- ๋ฐฉ ๊ฐ์
- ํ์
- ์งํ์ฒ ์ญ๊น์ง ๊ฑฐ๋ฆฌ
- ๊ตฌ์ถ ์ฌ๋ถ (0 or 1) → ๊ทธ๋ฆฌ๊ณ ์ ๋ต ์ปฌ๋ผ: ์ง ๊ฐ (๋ง์)
์ด ๋ฐ์ดํฐ๋ฅผ ์ปดํจํฐํํ ๋ณด์ฌ์ฃผ๋ฉด์ “์ผ, ์ด ๋ฐ์ดํฐ๋ค ๋ณด๋ฉด์ ์ง ๊ฐ์ด ์ด๋ป๊ฒ ๊ฒฐ์ ๋๋์ง ๊ท์น์ ์ฐพ์๋ด!” ๋ผ๊ณ ์ํค๋ ๊ฑฐ์ผ.
๊ทธ๋ ์ปดํจํฐ๊ฐ “์~ ๋ฐฉ ๊ฐ์๊ฐ ๋ง๊ณ , ํ์๊ฐ ํฌ๊ณ , ์งํ์ฒ ์ด ๊ฐ๊น์ธ์๋ก ์ง ๊ฐ์ด ๋น์ธ๊ตฌ๋!” ๋ผ๋ ๊ท์น(ํจํด)์ ๋ฐฐ์ฐ๋๋ฐ, ๊ทธ ๋ฐฐ์ด ๊ท์น ์์ฒด๋ฅผ ์ฐ๋ฆฌ๋ “๋ชจ๋ธ”์ด๋ผ๊ณ ๋ถ๋ฅด๋ ๊ฑฐ์ผ.
๋ ์ฝ๊ฒ ๋น์ ํ๋ฉด
๋๊ฐ ์ด๋ฑํ์ํํ “2 + 3 = 5, 4 + 7 = 11, 10 + 8 = 18 …” ์ด๋ฐ ๋ง์ ๋ฌธ์ ๋ฅผ ์๋ฉ ๋ณด์ฌ์ฃผ๋ฉด์ “์ด์ ๋๊ฐ ๋ง์ ํ๋ ๋ฒ์ ์์์ ํด๋ด!” ๋ผ๊ณ ๊ฐ๋ฅด์น๋ค๊ณ ์๊ฐํด๋ด.
๊ทธ ์์ด๊ฐ ์ง์ง๋ก ๋ง์ ์ ์ดํดํ๊ณ ๋๋ฉด, ์ด์ ๋๊ฐ “35 + 27 = ?” ๋ผ๊ณ ๋ฌผ์ด๋ดค์ ๋ ๊ทธ ์์ด๊ฐ ๋ฐ๋ก ๋ต์ ํด์ฃผ์์?
→ ๊ทธ ์์ด ๋จธ๋ฆฟ์์ ๋ค์ด์๋ “๋ง์ ํ๋ ๋ฅ๋ ฅ” = ๋ชจ๋ธ์ด์ผ!
๋จธ์ ๋ฌ๋ ๋ชจ๋ธ๋ ๋๊ฐ์. ๊ณผ๊ฑฐ ๋ฐ์ดํฐ(๋ฌธ์ +์ ๋ต)๋ฅผ ์๋ฉ ๋ณด์ฌ์ค์ ํจํด์ ๋ฐฐ์ฐ๊ฒ ํ๊ณ , ์ด์ ์๋ก์ด ๋ฐ์ดํฐ(์๋ก์ด ์ง ์ ๋ณด)๊ฐ ๋ค์ด์ค๋ฉด “์ด ์ง์ ๋์ถฉ ์ผ๋ง์ผ ๊ฒ ๊ฐ์?” ๋ผ๊ณ ์์ธก(๋๋ ๋ถ๋ฅ)์ ํด์ฃผ๋ ๊ฑฐ์ง.
์์ฃผ ์ฐ๋ ๋ชจ๋ธ๋ค ์ด๋ณด์์ฉ ํ ์ค ์ค๋ช
| ์ ํ ํ๊ท (Linear Regression) | ์ซ์๋ฅผ ์์ธกํ๊ณ ์ถ์ ๋ (์ง ๊ฐ, ์ฃผ์ ๊ฐ๊ฒฉ ๋ฑ) | ์ง์ ๊ทธ์ด์ ๋์ถฉ ์์ธกํ๋ ์ |
| ๋ก์ง์คํฑ ํ๊ท (Logistic Regression) | 0 or 1๋ก ๋ถ๋ฅํ๊ณ ์ถ์ ๋ (์คํธ ๋ฉ์ผ์ธ๊ฐ? ์๋๊ฐ?) | ํ๋ฅ ๋ก “์/์๋์ค” ๋งํด์ฃผ๋ ์ |
| ๊ฒฐ์ ํธ๋ฆฌ (Decision Tree) | ์ง๋ฌธ ๋๋ฌด์ฒ๋ผ “์ด๋ฌ๋ฉด ์ผ์ชฝ, ์ ๋ฌ๋ฉด ์ค๋ฅธ์ชฝ”์ผ๋ก ๋ถ๋ฅ | ์น๊ตฌํํ “์ด๊ฑฐ ์ฌ๋ ๋ ๊น?” ๋ฌผ์ด๋ณด๋ ๋๋ |
| ๋๋ค ํฌ๋ ์คํธ (Random Forest) | ๊ฒฐ์ ํธ๋ฆฌ ์๋ฐฑ ๊ฐ๊ฐ ํฌํํด์ ๋ ์ ํํ๊ฒ ๋ง์ถค | ์น๊ตฌ 100๋ช ํํ ๋ฌผ์ด๋ด์ ๋ค์๊ฒฐ๋ก ๊ฒฐ์ |
| XGBoost, LightGBM, CatBoost | ์ง๊ธ ๋ํ์์ ์ ์ผ ์ ๋งํ๋ ์ ๋ค (์ฑ๋ฅ ์งฑ) | ์ ๊ตญ ์์๊ธ ์น๊ตฌ๋ค |
| ์ ๊ฒฝ๋ง/๋ฅ๋ฌ๋ (Neural Network) | ์ด๋ฏธ์ง, ์์ฑ, ํ ์คํธ์ฒ๋ผ ์์ฒญ ๋ณต์กํ ๋ฐ์ดํฐ | ๋๋ฅผ ํ๋ด๋ธ ์ํผ ๋๋์ด |
์ ๋ฆฌํ๋ฉด
๋๊ฐ ์ง๊ธ ๋ง๋ ์ ์ df = “๋ฌธ์ ์ง + ์ ๋ต์ง” ๋ชจ๋ธ = ๊ทธ๊ฑธ ๋ณด๊ณ ๊ท์น์ ๋ฐฐ์ด “๋๋ํ ํ์” ํ์ต(training/fit) = ํ์์ด ๋ฌธ์ ์ง ๋ณด๋ฉด์ ๊ณต๋ถํ๋ ๊ณผ์ ์์ธก(predict) = ์๋ก์ด ๋ฌธ์ ์ค ๋ ์ ๋ต ๋งํด์ฃผ๋ ๊ฒ
๊ทธ๋์ ๋๊ฐ ์ด์ ํ ์ผ์ “์ด๋ ๋ชจ๋ธ(์ด๋ ํ์)์ ์ธ๊น?” → “๊ทธ ํ์ํํ ๋ฐ์ดํฐ ๋ณด์ฌ์ฃผ๊ณ ๊ณต๋ถ์์ผ!” → “์๋ก์ด ๋ฐ์ดํฐ ์ฃผ๊ณ ๋ต ๋ด๋๊ฒ ํด!” ์ด 3๋จ๊ณ๋ง ํ๋ฉด ๋๋ ๊ฑฐ์ผ
์ด๋ถ๋ถ ์ถ๊ฐํ๊ธฐ(์๋น์ค ๋ถ๋ถ)
๋ผ์ฐํฐ์ ์ด ๋ถ๋ถ ์ถ๊ฐ
@ai.seoeunjin.com/mlservice/app/titanic/titanic_service.py ์ฌ๊ธฐ์์ ๋ชจ๋ธ๋ง์ ์ฃผ์๋ ์๊ณ ๋ฆฌ์ฆ๊ณผ this.train์ ๊ฒฐํฉํ์ฌ ๋ฌ๋๊ณผ ํ๊ฐ๊น์ง ์ด์ด์ ์์ฑํด์ฃผ๊ณ , @ai.seoeunjin.com/mlservice/app/titanic/titanic_router.py @titanic_router.py (73-78) ์ฌ๊ธฐ์์ ์ฃผ์๋๋ก ์คํํด์ค

๋ ์บ๊ธ์ ํ์ดํ๋ ๋ํ์ ์ฐธ๊ฐํ ๊ฑฐ์ผ. ์ง๊ธ ์๋ธ๋ฏธ์ ํ์ผ์ ๋ง๋ค์์ด. ์ด๊ฑฐ ์ ์ถํ๋ ๋ฐฉ๋ฒ์ ์ฐจ๋ก๋๋ก ์๋ ค์ค. ์ฌ์ดํธ ์ฃผ์๋ถํฐ ์ด๋ค ํญ์ ์ณ์ผํ๋์ง๊น์ง
์บ๊ธ์ด๋ ์ฐ๊ฒฐํ๊ธฐ
Titanic - Machine Learning from Disaster | Kaggle
Titanic
Kaggle profile for Titanic
www.kaggle.com
1. ๋จผ์ ์บ๊ธ ์ฌ์ดํธ ์ ์
https://www.kaggle.com → ๋ก๊ทธ์ธ ๋์ด ์๋์ง ํ์ธ (๊ตฌ๊ธ/๊น์ด๋ ์ด๋ฉ์ผ๋ก ๋ก๊ทธ์ธ)
2. ํ์ดํ๋ ๋ํ ํ์ด์ง๋ก ์ด๋
์ง์ ๋งํฌ: https://www.kaggle.com/competitions/titanic (๋๋ kaggle.com ๋ฉ์ธ → ์๋จ ๋ฉ๋ด “Competitions” ํด๋ฆญ → ๊ฒ์์ฐฝ์ “titanic” ์น๋ฉด ๋ฐ๋ก ๋์)
3. ๋ํ ํ์ด์ง์์ ์ ์ถํ๋ ์ ํํ ์์
- ๋ํ ํ์ด์ง์ ๋ค์ด๊ฐ๋ฉด ์๋จ์ ํญ๋ค์ด ์์ด Overview → Data → Code → Discussion → Leaderboard → Rules → Submit Predictions → ๋งจ ์ค๋ฅธ์ชฝ์ ์๋ “Submit Predictions” ํญ์ ํด๋ฆญ!
- “Submit Predictions” ํ์ด์ง๋ก ๋ค์ด์ค๋ฉด ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ด
- Drag and drop your file here (ํ์ผ ๋๋๊ทธ ์ค ๋๋กญ)
- Or select file (ํ์ผ ์ ํ ๋ฒํผ)
- ๋๊ฐ ๋ง๋ submission ํ์ผ์ ์
๋ก๋
- ํ์ผ๋ช ์ ๋ณดํต submission.csv (gender_submission.csv ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ ๊ฑฐ๋ฉด ์ด ์ด๋ฆ ์ถ์ฒ)
- ํ์ ์ปฌ๋ผ: PassengerId์ Survived๋ง ์์ผ๋ฉด ๋จ
- ์์ ์ฒซ ๋ช ์ค:
csv
PassengerId,Survived 892,0 893,1 894,0 ...
- ํ์ผ ์
๋ก๋ ํ ์๋์ ๋ ๊ฐ์ง ์ต์
๋์
- Message (optional): ์ฌ๊ธฐ์ ๋ญ ์ผ๋์ง ์ ์ผ๋ฉด ๋จ (์: “LightGBM 5-fold”, “my first submission” ๋ฑ)
- Submission type (์ค์!)
- ๋ณดํต์ Regular ์ ํ (๋๋ถ๋ถ ์ด๊ฑฐ)
- ๋ง์ฝ ๋ ธํธ๋ถ์์ ๋ฐ๋ก ์ ์ถํ๋ ๊ฑฐ๋ฉด “From notebook”๋ ์์ง๋ง, ๋๋ ํ์ผ ์ ์ถ์ด๋๊น Regular
- ํ๋์ “Submit” ๋ฒํผ ํด๋ฆญ!
4. ์ ์ถ ํ ํ์ธ ๋ฐฉ๋ฒ
- ์ ์ถ์ด ์๋ฃ๋๋ฉด ๋ฐ๋ก “My Submissions” ํญ์ผ๋ก ์ด๋ํด
- ์๋จ์ “Processing” → ์ ์ ๊ณ์ฐ๋๋ฉด Public Score๊ฐ ๋์
- ํ์ดํ๋์ Public LB๊ฐ 40%, Private LB๊ฐ 60%๋ผ์ ๋ํ ๋๋ ๋๊น์ง ์ต์ข ์์๋ ์จ๊ฒจ์ ธ ์์ด
ํ
- ์ฒ์ ์ ์ถํ๋ฉด ๊ฑฐ์ 0.7xxx (70%๋) ๋์์ผ ์ ์
- gender_submission.csv ๊ทธ๋๋ก ์ ์ถํ๋ฉด ์ ํํ 0.76555 ๋์ด (์ฌ์๋ง ์ด๋ฆฐ ๋ฒ ์ด์ค๋ผ์ธ)
- ํ๋ฃจ์ ์ต๋ 10๋ฒ๊น์ง ์ ์ถ ๊ฐ๋ฅ (ํ์ดํ๋ ๊ธฐ์ค)
submission csvํ์ผ ๋ง๋ค์ด์ค kaggle์ ์ ์ถํ ๊ฑฐ์ผ

@download ์ฌ๊ธฐ์ kaggle์ ์ ์ถํ๋ ค๋๋ฐ ๋ชจ๋ธ์ ์์ฑํด์ฃผ๊ณ , submission.csv ํ์ผ ๋ง๋ค์ด์ค
@titanic_router.py (101-132) ์ด๊ฒ์ ์คํํ๋ฉด, @download ์ฌ๊ธฐ์ ์บ๊ธ์ ์ ์ถํ csv๋ฅผ, ์ ํ๋๊ฐ ๊ฐ์ฅ ๋์ SVM๊ณผ ๊ฒฐํฉํ ๋ด์ฉ์ผ๋ก ๋ ํ์ผ์ ์ ์ฅํด์ค
-๊ณ์ ์๋ผ์ ํด๋ก๋๋ ์จ๋ฆ ํ ๋์ ์ด๊ฒผ์ ๊ฒฐ๊ตญ csv ํ์ผ ์์ฑ๋๊ณ ์ ๋ก๋ํ๋ ๋ญํน ๋ณผ ์ ์์
๋ญํฌ ์ฌ๋ฆฌ๋ ค๋ฉด ์ ์ฒ๋ฆฌ ๊ณผ์ ๋ฑ์ ์ถ๊ฐํ๋ฉด ์ฌ๋ผ๊ฐ๋ค๊ณ ํจ
๊ฐ์ฌ๋์ด ๋ด ๋ฐ์ดํฐ(๋ ผ๋ฌธ)๊ณผ ๊ด๋ จํด์๋ ํด๋ณด๋ผ๊ณ ํ์์
-๋ด์ผ ์ด๋ถ๋ถ gpt๋ก ์์๋ณด๊ณ ํ ์ ์์ผ๋ฉด ํด๋ณด๊ธฐ!

'Project ESG+AI > [์ผ์ KPMG]ESG ๋ฐ์ดํฐ ํ์ฉ ํ์คํ ๊ฐ๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| 43์ผ์ฐจ. ์์ธ์ ๋ฒ์ฃ ๋ฐ์ํํฉ&์์ฐ์ด ์ฒ๋ฆฌ (0) | 2025.12.11 |
|---|---|
| 42์ผ์ฐจ. (0) | 2025.12.10 |
| 40์ผ์ฐจ. (0) | 2025.12.08 |
| 39์ผ์ฐจ. (0) | 2025.12.05 |
| 38์ผ์ฐจ. (0) | 2025.12.04 |