AI ์‹ค๋ฌด ์‘์šฉ ๊ณผ์ •
[์‘์šฉ๊ต์œก๊ณผ์ •] ๋จธ์‹ ๋Ÿฌ๋‹ ์‹œ์ž‘ํ•˜๊ธฐ (1) ์ž๋ฃŒํ˜•ํƒœ, ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ

๋จธ์‹ ๋Ÿฌ๋‹ : ๋ช…์‹œ์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜์ง€ ์•Š๊ณ ๋„ ์ปดํ“จํ„ฐ๊ฐ€ ํ•™์Šตํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์„ ๊ฐ–๊ฒŒ ํ•˜๋Š” ๊ฒƒ
data -> case 1) action -> ๋ช…์‹œ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ
data -> train ... predict action -> ๋จธ์‹ ๋Ÿฌ๋‹

1) ์ง€๋„ํ•™์Šต : ํšŒ๊ท€๋ถ„์„, ๋ถ„๋ฅ˜
2) ๋น„์ง€๋„ํ•™์Šต
* ์ง€๋„ํ•™์Šต VS ๋น„์ง€๋„ํ•™์Šต
์˜ˆ์ธกํ•ด์•ผํ•  ๊ฒฐ๊ณผ์— ๋Œ€ํ•œ ์ •๋‹ต ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•ด๋ณด์ž.
ex. ์‚ฌ์ง„์˜ ๋ฌผ์ฒด๋ฅผ ์˜ˆ์ธกํ•˜๋Š” ๋ชจ๋ธ์„ ๋งŒ๋“ค๊ณ  ์‹ถ์„ ๋•Œ, ์ง€๋„ํ•™์Šต ๋ชจ๋ธ์€ ์‚ฌ์ง„๊ณผ ๊ทธ์— ๋Œ€ํ•œ ์ •๋‹ต์„ ์ค€๋‹ค. ๋น„์ง€๋„ํ•™์Šต์€ ์‚ฌ์ง„์„ ์ฃผ๊ณ , ์ •๋‹ต์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค.
3) ๊ฐ•ํ™”ํ•™์Šต : ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์–ด๋„ ๊ธฐ๊ณ„๊ฐ€ ์Šค์Šค๋กœ ํ•™์Šตํ•  ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํ•™์Šตํ•œ๋‹ค.
* ๋ฐ์ดํ„ฐ ์ดํ•ด > ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ > ์ง€๋„ํ•™์Šต ๋ชจ๋ธ

์ž๋ฃŒ์˜ ํ˜•ํƒœ
์ž๋ฃŒ์˜ ํ˜•ํƒœ ํŒŒ์•…์€ ํ•„์ˆ˜ ๊ณผ์ •.
๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑ๋˜์—ˆ๋‚˜?
์–ด๋–ค ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•ด์•ผ ํ• ๊นŒ?
๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ?

์ˆ˜์น˜ํ˜• ์ž๋ฃŒ(=์–‘์  ์ž๋ฃŒ) : ์ˆ˜์น˜๋กœ ์ธก์ • ๊ฐ€๋Šฅํ•œ ์ž๋ฃŒ ex.ํ‚ค, ๋ชธ๋ฌด๊ฒŒ, ์‹œํ—˜์ ์ˆ˜, ๋‚˜์ด
- ์ˆœ์œ„ํ˜• ์ž๋ฃŒ : ๋ฒ”์ฃผ ์‚ฌ์ด์˜ ์ˆœ์„œ์— ์˜๋ฏธ ์—†์Œ ex.ํ•™์ 
- ๋ช…๋ชฉํ˜• ์ž๋ฃŒ : ๋ฒ”์ฃผ ์‚ฌ์ด์˜ ์ˆœ์„œ์— ์˜๋ฏธ ์—†์Œ ex.ํ˜ˆ์•กํ˜•

๋ฒ”์ฃผํ˜• ์ž๋ฃŒ(=์งˆ์  ์ž๋ฃŒ) : ์ˆ˜์น˜๋กœ ์ธก์ •์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ์ž๋ฃŒ. ex.์„ฑ๋ณ„, ์ง€์—ญ, ํ˜ˆ์•กํ˜• ๋“ฑ
- ์—ฐ์†ํ˜• ์ž๋ฃŒ : ์—ฐ์†์ ์ธ ๊ด€์ธก๊ฐ’์„ ๊ฐ€์ง ex.์›์ฃผ์œจ, ์‹œ๊ฐ„
- ์ด์‚ฐํ˜• ์ž๋ฃŒ : ์…€ ์ˆ˜ ์žˆ๋Š” ๊ด€์ธก๊ฐ’์„ ๊ฐ€์ง ex.๋‰ด์Šค ๊ธ€์ž ์ˆ˜, ์ฃผ๋ฌธ์ƒํ’ˆ ๊ฐœ์ˆ˜

* ์ฃผ์˜! ์ž๋ฃŒ์˜ ์ˆซ์ž ํ‘œํ˜„ ๊ฐ€๋Šฅ ์—ฌ๋ถ€๊ฐ€ ๋ฒ”์ฃผํ˜•/์ˆ˜์น˜ํ˜•์„ ๋‚˜๋ˆ„์ง€๋Š” ์•Š๋Š”๋‹ค.
ex. ๋‚จ๋…€์„ฑ๋ณ„ ๊ตฌ๋ถ„ ์‹œ, ๋‚จ์ž๋ฅผ 1 ์—ฌ์ž๋ฅผ 0์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๊ฒฝ์šฐ, ์ˆซ์ž๋กœ ํ‘œํ˜„๋˜์—ˆ์œผ๋‚˜ ๋ฒ”์ฃผํ˜• ์ž๋ฃŒ.
ex2. ๋‚˜์ด ๊ตฌ๋ถ„ ์‹œ, ๋‚˜์ด ๊ฐ’์€ ์ˆ˜์น˜ํ˜• ์ž๋ฃŒ์ง€๋งŒ, 10~19์„ธ, 20~29์„ธ ๋“ฑ ๋‚˜์ด๋Œ€์— ๋”ฐ๋ผ ๊ตฌ๊ฐ„ํ™”ํ•˜๋ฉด ๋ฒ”์ฃผํ˜• ์ž๋ฃŒ.

 

 

 

 

 

๋ฒ”์ฃผํ˜• ์ž๋ฃŒ

๋‹ค์ˆ˜์˜ ๋ฒ”์ฃผ๊ฐ€ ๋ฐ˜๋ณตํ•ด์„œ ๊ด€์ธก
๊ด€์ธก๊ฐ’์˜ ํฌ๊ธฐ๋ณด๋‹ค ํฌํ•จ๋˜๋Š” ๋ฒ”์ฃผ์— ๊ด€์‹ฌ

 

1) ๊ฐ ๋ฒ”์ฃผ์— ์†ํ•˜๋Š” ๊ด€์ธก๊ฐ’์˜ ๊ฐœ์ˆ˜๋ฅผ ์ธก์ •
2) ์ „์ฒด์—์„œ ์ฐจ์ง€ํ•˜๋Š” ๊ฐ ๋ฒ”์ฃผ์˜ ๋น„์œจ ํŒŒ์•…
3) ํšจ์œจ์ ์œผ๋กœ ๋ฒ”์ฃผ ๊ฐ„ ์ฐจ์ด์ ์„ ๋น„๊ต ๊ฐ€๋Šฅ


๋„์ˆ˜๋ถ„ํฌํ‘œ (๋Œ€ํ‘œ์ )
๋ฒ”์ฃผํ˜• ์ž๋ฃŒ์—์„œ ๋ฒ”์ฃผ์™€ ๊ทธ ๋ฒ”์ฃผ์— ๋Œ€์‘ํ•˜๋Š” ๋„์ˆ˜, ์ƒ๋Œ€๋„์ˆ˜๋ฅผ ๋‚˜์—ดํ•ด ํ‘œ๋กœ ๋งŒ๋“  ๊ฒƒ

๋„์ˆ˜ : ๊ฐ ๋ฒ”์ฃผ์— ์†ํ•˜๋Š” ๊ด€์ธก๊ฐ’์˜ ๊ฐœ์ˆ˜. value_counts()
์ƒ๋Œ€๋„์ˆ˜ : (=๋ฐฑ๋ถ„์œจ) ๋„์ˆ˜๋ฅผ ์ž๋ฃŒ์˜ ์ „์ฒด ๊ฐœ์ˆ˜๋กœ ๋‚˜๋ˆˆ ๋น„์œจ. value_counts()(normalize = True)
๋ˆ„์  ์ƒ๋Œ€ ๋„์ˆ˜ : ์ฒซ๋ฒˆ์งธ ์ƒ๋Œ€๋„์ˆ˜ + ๋‹ค์Œ ์ƒ๋Œ€๋„์ˆ˜๋ฅผ ๋ˆ„์ ์‹œ์ผœ ๋‚˜๊ฐ„ ๊ฐ’. ์ตœ์ข…๊ฐ’์ด 1

 


๋ง‰๋Œ€ ๊ทธ๋ž˜ํ”„

๊ฐ ๋ฒ”์ฃผ์—์„œ ๋„์ˆ˜์˜ ํฌ๊ธฐ๋ฅผ ๋ง‰๋Œ€๋กœ ๊ทธ๋ฆผ. plt.bar()
y์ถ• : ๋„์ˆ˜์— ๋Œ€ํ•œ ๋ˆˆ๊ธˆ
x์ถ• : ๋ฒ”์ฃผ ๋‚˜์—ด


์žฅ์  : ๋ฒ”์ฃผ๊ฐ€ ๊ฐ€์ง€๋Š” ๋„์ˆ˜์˜ ํฌ๊ธฐ ์ฐจ์ด ๋น„๊ต๊ฐ€ ์‰ฌ์›€
๋‹จ์  : ๋ฒ”์ฃผ๊ฐ€ ์ฐจ์ง€ํ•˜๋Š” ๋น„์œจ์˜ ๋น„๊ต๋Š” ์–ด๋ ค์›€

 


[์—ฐ์Šต๋ฌธ์ œ]
drink.csv์—์„œ ์ฐธ์„ํ•œ ์‚ฌ๋žŒ ์ค‘ ์ด๋ฆ„์— ๋”ฐ๋ฅธ ๋„์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•œ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜์—ฌ drink_freq ์— ์ €์žฅํ•ด๋ณด์„ธ์š”.

import pandas as pd 
import numpy as np

# drink ๋ฐ์ดํ„ฐ
drink = pd.read_csv("drink.csv")

#1. ๋„์ˆ˜ ๊ณ„์‚ฐ
drink_freq = drink[drink['Attend']==1]['Name'].value_counts()

print("๋„์ˆ˜๋ถ„ํฌํ‘œ")
print(drink_freq)

 

 

[์—ฐ์Šต๋ฌธ์ œ2]
์ฐธ์„ ๋น„์œจ(ratio)์„ ๊ธฐ์ค€์œผ๋กœ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„ ๋ง‰๋Œ€์˜ ํฌ๊ธฐ๋ฅผ ๋‹ค๋ฅด๊ฒŒ ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ์ถœ๋ ฅํ•˜์„ธ์š”.

from elice_utils import EliceUtils
import matplotlib.pyplot as plt
elice_utils = EliceUtils()    

# ์ˆ ์ž๋ฆฌ ์ฐธ์„ ์ƒ๋Œ€๋„์ˆ˜ ๋ฐ์ดํ„ฐ 
labels = ['A', 'B', 'C', 'D', 'E']
ratio = [4,3,2,2,1]
    
#๋ง‰๋Œ€ ๊ทธ๋ž˜ํ”„
fig, ax = plt.subplots()

#1. ๋ง‰๋Œ€ ๊ทธ๋ž˜ํ”„๋ฅผ ๋งŒ๋“œ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด ์ฃผ์„ธ์š”
#plt.bar(labels,ratio)

# ์ถœ๋ ฅ์— ํ•„์š”ํ•œ ์ฝ”๋“œ
plt.show()
fig.savefig("bar_plot.png")
elice_utils.send_image("bar_plot.png")

 

 

 

 

 

์ˆ˜์น˜ํ˜• ์ž๋ฃŒ

์ˆ˜์น˜๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์–ด ํ†ต๊ณ„๊ฐ’์„ ์‚ฌ์šฉํ•œ ์š”์•ฝ์ด ๊ฐ€๋Šฅ
์‹œ๊ฐ์  ์ž๋ฃŒ๋กœ๋Š” ์ด๋ก ์  ๊ทผ๊ฑฐ ์ œ์‹œ๊ฐ€ ์‰ฝ์ง€ ์•Š๋‹ค๋Š” ๋‹จ์  ๋ณด์™„
-> ๋งŽ์€ ์–‘์˜ ์ž๋ฃŒ๋ฅผ ์˜๋ฏธ์žˆ๋Š” ์ˆ˜์น˜๋กœ ์š”์•ฝํ•˜์—ฌ ๋Œ€๋žต์ ์ธ ๋ถ„ํฌ์ƒํƒœ๋ฅผ ํŒŒ์•… ๊ฐ€๋Šฅ

 


ํ‰๊ท (=์‚ฐ์ˆ ํ‰๊ท ) mp.mean()
๊ด€์ธก๊ฐ’๋“ค์„ ๋Œ€ํ‘œํ•  ์ˆ˜ ์žˆ๋Š” ํ†ต๊ณ„๊ฐ’
์ˆ˜์น˜ํ˜• ์ž๋ฃŒ์˜ ํ†ต๊ณ„๊ฐ’ ์ค‘ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ๋ฒ•
๋ชจ๋“  ๊ด€์ธก๊ฐ’์˜ ํ•ฉ์„ ์ž๋ฃŒ์˜ ๊ฐœ์ˆ˜๋กœ ๋‚˜๋ˆˆ ๊ฒƒ
๋‹จ์  : ๊ทน๋‹จ์ ์œผ๋กœ ํฐ ๊ฐ’๊ณผ ์ž‘์€ ๊ฐ’์˜ ์˜ํ–ฅ์„ ๋งŽ์ด ๋ฐ›๋Š”๋‹ค

 


ํผ์ง„ ์ •๋„์˜ ์ธก๋„
ํ‰๊ท ๋งŒ์œผ๋กœ ๋ถ„ํฌ๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ์— ๋ถ€์กฑ
ํ‰๊ท  ์™ธ์— ๋ถ„ํฌ๊ฐ€ ํผ์ง„ ์ •๋„๋ฅผ ์ธก๋„ํ•  ์ˆ˜์น˜๊ฐ€ ํ•„์š”
๋ถ„์‚ฐ, ํ‘œ์ค€ํŽธ์ฐจ ๋“ฑ์„ ํผ์ง„ ์ •๋„์˜ ์ธก๋„๋กœ ์‚ฌ์šฉ

*ํŠน์ง• : ํ‰๊ท ์ด ๋ชจ๋‘ ๊ฐ™์ง€๋งŒ ๊ณก์„ ์ด ๋‹ค๋ฅด๋‹ค. WHY? ๋ถ„์‚ฐ์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ

 

 

๋ถ„์‚ฐ from statistics import variance variance()
์ž๋ฃŒ๊ฐ€ ์–ผ๋งˆ๋‚˜ ํฉ์–ด์กŒ๋Š”์ง€ ์ˆซ์ž๋กœ ํ‘œํ˜„
๊ฐ ๊ด€์ธก๊ฐ’์ด ์ž๋ฃŒ์˜ ํ‰๊ท ์œผ๋กœ๋ถ€ํ„ฐ ๋–จ์–ด์ง„ ์ •๋„

 

ํ‘œ์ค€ํŽธ์ฐจ from statistics import stdev stdev()
๋ถ„์‚ฐ์˜ ๋‹จ์œ„ = ๊ด€์ธก๊ฐ’์˜ ๋‹จ์œ„์˜ ์ œ๊ณฑ (๊ด€์ธก๊ฐ’์˜ ๋‹จ์œ„์™€ ๋ถˆ์ผ์น˜)
๋ถ„์‚ฐ์˜ ์–‘์˜ ์ œ๊ณฑ๊ทผ์€ ๊ด€์ธก๊ฐ’์˜ ๋‹จ์œ„๊ฐ€ ์ผ์น˜
๋ถ„์‚ฐ์˜ ์–‘์˜ ์ œ๊ณฑ๊ทผ์„ ํ‘œ์ค€ํŽธ์ฐจ๋ผ ํ•˜๊ณ , s๋กœ ํ‘œ๊ธฐํ•œ๋‹ค

 

 


ํžˆ์Šคํ† ๊ทธ๋žจ plt.hist()
์ˆ˜์น˜ํ˜• ์ž๋ฃŒ๋ฅผ ์ผ์ •ํ•œ ๋ฒ”์œ„๋ฅผ ๊ฐ–๋Š” ๋ฒ”์ฃผ๋กœ ๋‚˜๋ˆ„๊ณ , ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๊ทธ๋ฆฐ๋‹ค

์ž๋ฃŒ์˜ ๋ถ„ํฌ๋ฅผ ์•Œ ์ˆ˜ ์žˆ์Œ
๊ณ„๊ธ‰๊ตฌ๊ฐ„๊ณผ ๋ง‰๋Œ€์˜ ๋†’์ด๋กœ ๊ทธ๋ฆผ
๋„์ˆ˜, ์ƒ๋Œ€๋„์ˆ˜๋ฅผ ๋ง‰๋Œ€ ๋†’์ด๋กœ ์‚ฌ์šฉ

* ๋ฒ”์ฃผ : ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„ / ์ˆ˜์น˜ : ํžˆ์Šคํ† ๊ทธ๋žจ

 

 

[์—ฐ์Šต๋ฌธ์ œ]
coffee์— ์ €์žฅ๋œ ์นดํŽ˜์ธ ํ•จ๋Ÿ‰ ๊ฐ’๋“ค์˜ ํ‰๊ท ์„ ๊ณ„์‚ฐํ•˜์—ฌ cf_mean ์— ์ €์žฅํ•ด๋ด…์‹œ๋‹ค.

import numpy as np
coffee = np.array([202,177,121,148,89,121,137,158])

#1. ํ‰๊ท ๊ณ„์‚ฐ
cf_mean = np.mean(coffee)

#์†Œ์ˆ˜์  ๋‘˜์งธ ์ž๋ฆฌ๊นŒ์ง€ ๋ฐ˜์˜ฌ๋ฆผํ•˜์—ฌ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. 
print("Mean :", round(cf_mean,2))



[์—ฐ์Šต๋ฌธ์ œ2]
coffee์— ์ €์žฅ๋œ ์นดํŽ˜์ธ ํ•จ๋Ÿ‰ ๊ฐ’๋“ค์˜ ํ‘œ์ค€ํŽธ์ฐจ๋ฅผ ๊ณ„์‚ฐํ•ด์„œ cf_std ์— ์ €์žฅํ•ด์„œ ํ™•์ธํ•ด๋ด…์‹œ๋‹ค.

from statistics import stdev
import numpy as np

coffee = np.array([202,177,121,148,89,121,137,158])

#1. ํ‘œ์ค€ํŽธ์ฐจ ๊ณ„์‚ฐ
cf_std = stdev(coffee)

# ์†Œ์ˆ˜์  ๋‘˜์งธ ์ž๋ฆฌ๊นŒ์ง€ ๋ฐ˜์˜ฌ๋ฆผํ•˜์—ฌ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. 
print("Sample std.Dev : ", round(cf_std,2))



[์—ฐ์Šต๋ฌธ์ œ3]
์ฝ”๋“œ ์ž…๋ ฅ์ฐฝ์— ํžˆ์Šคํ† ๊ทธ๋žจ์„ ๊ทธ๋ฆฌ๋Š” ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from elice_utils import EliceUtils 
elice_utils = EliceUtils()

#์นดํŽ˜์ธ ๋ฐ์ดํ„ฐ
coffee = np.array([202,177,121,148,89,121,137,158])
fig, ax = plt.subplots()

#1. ํžˆ์Šคํ† ๊ทธ๋žจ์„ ๊ทธ๋ฆฌ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด ์ฃผ์„ธ์š”
plt.hist(coffee)

# ํžˆ์Šคํ† ๊ทธ๋žจ์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
plt.show()
fig.savefig("hist_plot.png")
elice_utils.send_image("hist_plot.png")

 

 

 

 

 

๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ

๋จธ์‹ ๋Ÿฌ๋‹ ๊ณผ์ • ์ดํ•ดํ•˜๊ธฐ
1) ํฌ๋กค๋ง or DB๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘
2) ์ˆ˜์ง‘ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„, ๋จธ์‹ ๋Ÿฌ๋‹์— ์‚ฌ์šฉํ•  ํ˜•ํƒœ๋กœ ์ „์ฒ˜๋ฆฌ
3) ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ํ•™์Šต
4) ํ•™์Šต๋œ ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์„ ํ‰๊ฐ€์šฉ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด ํ‰๊ฐ€

 


๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ์˜ ์—ญํ• 
1) ๋จธ์‹ ๋Ÿฌ๋‹์˜ ์ž…๋ ฅ ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜ (=ํŠน์„ฑ ์—”์ง€๋‹ˆ์–ด๋ง)
2) ๊ฒฐ์ธก์น˜ ๋ฐ ์ด์ƒ์น˜๋ฅผ ์ฒ˜๋ฆฌํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ •์ œ
3) ํ•™์Šต์šฉ ๋ฐ ํ‰๊ฐ€์šฉ ๋ฐ์ดํ„ฐ ๋ถ„๋ฆฌ

 


์™œ ์ „์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ๊ฐ€?
๋Œ€๋ถ€๋ถ„์˜ ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์€ ์ˆซ์ž ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค (์ผ๋ฐ˜์ ์œผ๋กœ ํ–‰๋ ฌ ํ˜•ํƒœ ์ž…๋ ฅ)
์‹ค์ œ ๋ฐ์ดํ„ฐ๋Š” ๋‹ค์–‘ํ•œ ํ˜•ํƒœ(์ด๋ฏธ์ง€, ์ž์—ฐ์–ด, ๋ฒ”์ฃผํ˜•, ์‹œ๊ณ„์—ด)๋กœ ์กด์žฌํ•œ๋‹ค -> ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์ด ์ดํ•ดํ•  ์ˆ˜ ์—†์Œ
๊ทธ๋Ÿฌ๋ฏ€๋กœ ์ „์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ด ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ˆ˜์น˜ํ˜• ์ž๋ฃŒ๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ•œ๋‹ค.
๊ฒฐ์ธก๊ฐ’๊ณผ ์ด์ƒ์น˜๊ฐ€ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋Š” ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์˜ ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง€๊ฑฐ๋‚˜, ์•„์˜ˆ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.
ํ•™์Šต์šฉ๊ณผ ํ‰๊ฐ€์šฉ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„๋ฆฌํ•ด์„œ ๊ฐ๊ด€์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.


๋ฒ”์ฃผํ˜•์ž๋ฃŒ ์ „์ฒ˜๋ฆฌ
๋ฒ”์ฃผํ˜• ๋ฐ์ดํ„ฐ : ๋ช‡ ๊ฐœ์˜ ๋ฒ”์ฃผ๋กœ ๋‚˜๋ˆ„์–ด์ง„ ์ž๋ฃŒ
๋ฒ”์ฃผ์˜ ํฌ๊ธฐ๊ฐ€ ์˜๋ฏธ์—†์œผ๋ฉด ๋ช…๋ชฉํ˜•์ž๋ฃŒ
ํฌ๊ธฐ๊ฐ€ ์˜๋ฏธ์žˆ๋‹ค๋ฉด ์ˆœ์„œํ˜• ์ž๋ฃŒ

๋Œ€ํ‘œ์ ์ธ ๋ฒ”์ฃผํ˜• ์ž๋ฃŒ ๋ณ€ํ™˜ ๋ฐฉ์‹
- ๋ช…๋ชฉํ˜• ์ž๋ฃŒ : ์ˆ˜์น˜ ๋งตํ•‘ ๋ฐฉ์‹, ๋”๋ฏธ ๊ธฐ๋ฒ•
- ์ˆœ์„œํ˜• ์ž๋ฃŒ : ์ˆ˜์น˜ ๋งตํ•‘ ๋ฐฉ์‹

1) ๋ช…๋ชฉํ˜• ์ž๋ฃŒ ๋ณ€ํ™˜ (์ˆ˜์น˜ ๋งตํ•‘ ๋ณ€ํ™˜)
์ผ๋ฐ˜์ ์œผ๋กœ ๋ฒ”์ฃผ๋ฅผ 0,1๋กœ ๋งตํ•‘
(-1, 1), (0, 100) ๋“ฑ ๋‹ค์–‘ํ•œ ์ผ€์ด์Šค๊ฐ€ ์žˆ์ง€๋งŒ ๋ชจ๋ธ์— ๋”ฐ๋ผ ์„ฑ๋Šฅ์ด ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค.
3๊ฐœ ์ด์ƒ์ธ ๊ฒฝ์šฐ, ์ˆ˜์น˜์˜ ํฌ๊ธฐ ๊ฐ„๊ฒฉ์„ ๊ฐ™๊ฒŒ ํ•˜์—ฌ ์ˆ˜์น˜ ๋งตํ•‘ ex. (0, 1, 2, 3,...)

2) ๋ช…๋ชฉํ˜• ์ž๋ฃŒ ๋ณ€ํ™˜ (๋”๋ฏธdummy ๊ธฐ๋ฒ•)
๊ฐ ๋ฒ”์ฃผ๋ฅผ 0 or 1๋กœ ๋ณ€ํ™˜

3) ์ˆœ์„œํ˜• ์ž๋ฃŒ ๋ณ€ํ™˜ํ•˜๊ธฐ (์ˆ˜์น˜ ๋งตํ•‘ ๋ณ€ํ™˜)
์ˆ˜์น˜์— ๋งตํ•‘ํ•˜์—ฌ ๋ณ€ํ™˜ํ•˜์ง€๋งŒ, ์ˆ˜์น˜ ๊ฐ„ ํฌ๊ธฐ ์ฐจ์ด๋Š” ์ปค์Šคํ…€ ๊ฐ€๋Šฅ
ํฌ๊ธฐ ์ฐจ์ด๊ฐ€ ๋จธ์‹ ๋Ÿฌ๋‹ ๊ฒฐ๊ณผ์— ์˜ํ–ฅ์„ ๋ผ์น  ์ˆ˜ ์žˆ์Œ

 


[์—ฐ์Šต๋ฌธ์ œ]
์„ฑ๋ณ„(‘Sex’) ๋ณ€์ˆ˜์—์„œ male ๋ฐ์ดํ„ฐ๋Š” 0, female ๋ฐ์ดํ„ฐ๋Š” 1๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ titanic ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์— ์ €์žฅํ•ด ๋ด…์‹œ๋‹ค.

import pandas as pd
from elice_utils import EliceUtils

elice_utils = EliceUtils()

# ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ต๋‹ˆ๋‹ค.
titanic = pd.read_csv('./data/titanic.csv')
print('๋ณ€ํ™˜ ์ „: \n',titanic['Sex'].head())

#1. replace๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ male -> 0, female -> 1๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
titanic = titanic.replace({'male':0, 'female':1})

# ๋ณ€ํ™˜ํ•œ ์„ฑ๋ณ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
print('\n๋ณ€ํ™˜ ํ›„: \n',titanic['Sex'].head())



[์—ฐ์Šต๋ฌธ์ œ2]
Embarked์˜ S, Q, C๋ฐ์ดํ„ฐ๋ฅผ ๋”๋ฏธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€ํ™˜ํ•˜๊ณ  dummies์— ์ €์žฅํ•ด ๋ด…์‹œ๋‹ค.

import pandas as pd
from elice_utils import EliceUtils

elice_utils = EliceUtils()
   
# ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ต๋‹ˆ๋‹ค.
titanic = pd.read_csv('./data/titanic.csv')
print('๋ณ€ํ™˜ ์ „: \n',titanic['Embarked'].head())

#1. get_dummies๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
dummies = pd.get_dummies(titanic[['Embarked']])

# ๋ณ€ํ™˜ํ•œ Embarked ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
print('\n๋ณ€ํ™˜ ํ›„: \n',dummies.head())



์ˆ˜์น˜ํ˜• ์ž๋ฃŒ : ํฌ๊ธฐ๋ฅผ ๊ฐ–๋Š” ์ˆ˜์น˜ํ˜• ๊ฐ’์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐ์ดํ„ฐ
๋จธ์‹ ๋Ÿฌ๋‹์˜ ์ž…๋ ฅ์œผ๋กœ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋‚˜, ๋ชจ๋ธ ์„ฑ๋Šฅ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜ ํ•„์š”

์ˆ˜์น˜ํ˜• ์ž๋ฃŒ ๋ณ€ํ™˜ ๋ฐฉ์‹
1) ์Šค์ผ€์ผ๋ง - ์ •๊ทœํ™”, ํ‘œ์ค€ํ™”
2) ๋ฒ”์ฃผํ™”

์Šค์ผ€์ผ๋ง(Scaling)
๋ณ€์ˆ˜ ๊ฐ„ ๋ฒ”์œ„ ๋ฐ ํฌ๊ธฐ๋ฅผ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ์‹
๋ณ€์ˆ˜(feature)๊ฐ„์˜ ๋ฒ”์œ„๊ฐ€ ์ฐจ์ด๊ฐ€ ๋‚˜๋ฉด ์‚ฌ์šฉ

1) ์ •๊ทœํ™”(Normalization)
๋ณ€์ˆ˜ x๋ฅผ ์ •๊ทœํ™”ํ•œ ๊ฐ’ x'

2) ํ‘œ์ค€ํ™”
๋ณ€์ˆ˜ x๋ฅผ ํ‘œ์ค€ํ™”ํ•œ ๊ฐ’ x'

3) ๋ฒ”์ฃผํ™”
๋ณ€์ˆ˜์˜ ๊ฐ’๋ณด๋‹ค ๋ฒ”์ฃผ๊ฐ€ ์ค‘์š”ํ•œ ๊ฒฝ์šฐ ์‚ฌ์šฉ.

 


[์—ฐ์Šต๋ฌธ์ œ]
normal ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•˜๊ณ  Fare ๋ฐ์ดํ„ฐ๋ฅผ ์ •๊ทœํ™”ํ•˜์—ฌ Fare์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

import pandas as pd
from elice_utils import EliceUtils

elice_utils = EliceUtils()

#1. ์ •๊ทœํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
def normal(data):
    data = (data-data.min())/(data.max()-data.min())
    return data

# ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ต๋‹ˆ๋‹ค.
titanic = pd.read_csv('./data/titanic.csv')
print('๋ณ€ํ™˜ ์ „: \n',titanic['Fare'].head())

# normal ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •๊ทœํ™”ํ•ฉ๋‹ˆ๋‹ค.
Fare = normal(titanic['Fare'])

# ๋ณ€ํ™˜ํ•œ Fare ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
print('\n๋ณ€ํ™˜ ํ›„: \n',Fare.head())



[์—ฐ์Šต๋ฌธ์ œ2]
standard ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•˜๊ณ  Fare ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œ์ค€ํ™”ํ•˜์—ฌ Fare์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

import pandas as pd
from elice_utils import EliceUtils

elice_utils = EliceUtils()

#1. ํ‘œ์ค€ํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
def standard(data):
    data = (data-data.mean())/data.std()
    return data
    
# ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ต๋‹ˆ๋‹ค.
titanic = pd.read_csv('./data/titanic.csv')
print('๋ณ€ํ™˜ ์ „: \n',titanic['Fare'].head())

# standard ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‘œ์ค€ํ™”ํ•ฉ๋‹ˆ๋‹ค.
Fare = standard(titanic['Fare'])

# ๋ณ€ํ™˜ํ•œ Fare ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
print('\n๋ณ€ํ™˜ ํ›„: \n',Fare.head())



๊ฒฐ์ธก๊ฐ’(Missing data) ์ฒ˜๋ฆฌํ•˜๊ธฐ
์ผ๋ฐ˜์ ์ธ ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์˜ ์ž…๋ ฅ ๊ฐ’์œผ๋กœ ๊ฒฐ์ธก๊ฐ’์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค
๋”ฐ๋ผ์„œ Null, None, NaN ๋“ฑ์˜ ๊ฒฐ์ธก๊ฐ’์„ ์ฒ˜๋ฆฌํ•ด์•ผํ•œ๋‹ค.

๋Œ€ํ‘œ์ ์ธ ๊ฒฐ์ธก์น˜ ์ฒ˜๋ฆฌ ๋ฐฉ์‹
1) ๊ฒฐ์ธก๊ฐ’์ด ์กด์žฌํ•˜๋Š” ์ƒ˜ํ”Œ ์‚ญ์ œ
2) ๊ฒฐ์ธก๊ฐ’์ด ๋งŽ์ด ์กด์žฌํ•˜๋Š” ๋ณ€์ˆ˜ ์‚ญ์ œ
3) ๊ฒฐ์ธก๊ฐ’์„ ๋‹ค๋ฅธ ๊ฐ’(ํ‰๊ท , ์ค‘์•™๊ฐ’, ๋จธ์‹ ๋Ÿฌ๋‹ ์˜ˆ์ธก๊ฐ’)์œผ๋กœ ๋Œ€์ฒด


์ด์ƒ์น˜(Outlier) ์ฒ˜๋ฆฌํ•˜๊ธฐ
์ด์ƒ์น˜๊ฐ€ ์žˆ์œผ๋ฉด ๋ชจ๋ธ์˜ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ๋‹ค.
์ด์ƒ์น˜๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ „์ฒ˜๋ฆฌ ๊ณผ์ •์—์„œ ์ œ๊ฑฐํ•˜๋ฉฐ, ์–ด๋–ค ๊ฐ’์ด ์ด์ƒ์น˜์ธ์ง€ ํŒ๋‹จํ•˜๋Š” ๊ธฐ์ค€์ด ์ค‘์š”ํ•˜๋‹ค.

์ด์ƒ์น˜ ํŒ๋‹จ ๊ธฐ์ค€ ๋ฐฉ๋ฒ•
1) ํ†ต๊ณ„ ์ง€ํ‘œ(์นด์ด์ œ๊ณฑ๊ฒ€์ •, IQR์ง€ํ‘œ ๋“ฑ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒ๋‹จ
2) ๋ฐ์ดํ„ฐ ๋ถ„ํฌ๋ฅผ ๋ณด๊ณ  ์ง์ ‘ ํŒ๋‹จ
3) ๋จธ์‹ ๋Ÿฌ๋‹ ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด์ƒ์น˜ ๋ถ„๋ฅ˜

* ๋ฐ์ดํ„ฐ ๋ถ„๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ?
๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์„ ํ‰๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•™์Šต์— ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ํ‰๊ฐ€์šฉ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
์•ฝ 7:3~8:2๋น„์œจ๋กœ ํ•™์Šต์šฉ:ํ‰๊ฐ€์šฉ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„๋ฆฌํ•œ๋‹ค.


๋ฐ์ดํ„ฐ ์ •์ œ ๋ฐ ๋ถ„๋ฆฌํ•˜๊ธฐ
์ง€๋„ํ•™์Šต์˜ ๊ฒฝ์šฐ feature๋ฐ์ดํ„ฐ์™€ label๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ์ €์žฅํ•œ๋‹ค.
Feature๋ฐ์ดํ„ฐ : labeldmf ์˜ˆ์ธกํ•˜๊ธฐ ์œ„ํ•œ ์ž…๋ ฅ๊ฐ’
Label๋ฐ์ดํ„ฐ : ์˜ˆ์ธกํ•ด์•ผ ํ•  ๋Œ€์ƒ์ด ๋˜๋Š” ๋ฐ์ดํ„ฐ

 


[์—ฐ์Šต๋ฌธ์ œ]
drop ์„ ์‚ฌ์šฉํ•˜์—ฌ Cabin ๋ณ€์ˆ˜๋ฅผ ์‚ญ์ œํ•˜๊ณ  titanic_1์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
titanic_1์—์„œ dropna ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒฐ์ธก๊ฐ’์ด ์กด์žฌํ•˜๋Š” ์ƒ˜ํ”Œ์„ ์‚ญ์ œํ•˜๊ณ  titanic_2์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

import pandas as pd
from elice_utils import EliceUtils

elice_utils = EliceUtils()

    
# ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ต๋‹ˆ๋‹ค.
titanic = pd.read_csv('./data/titanic.csv')

# ๋ณ€์ˆ˜ ๋ณ„ ๋ฐ์ดํ„ฐ ์ˆ˜๋ฅผ ํ™•์ธํ•˜์—ฌ ๊ฒฐ์ธก ๊ฐ’์ด ์–ด๋””์— ๋งŽ์€์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
print(titanic.info(),'\n')

#1. Cabin ๋ณ€์ˆ˜๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
titanic_1 = titanic.drop(columns=['Cabin'])

# Cabin ๋ณ€์ˆ˜๋ฅผ ์ œ๊ฑฐ ํ›„ ๊ฒฐ์ธก๊ฐ’์ด ์–ด๋””์— ๋‚จ์•„ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
print('Cabin ๋ณ€์ˆ˜ ์ œ๊ฑฐ')
print(titanic_1.info(),'\n')

#2. ๊ฒฐ์ธก๊ฐ’์ด ์กด์žฌํ•˜๋Š” ์ƒ˜ํ”Œ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
titanic_2 = titanic_1.dropna()

# ๊ฒฐ์ธก๊ฐ’์ด ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
print('๊ฒฐ์ธก๊ฐ’์ด ์กด์žฌํ•˜๋Š” ์ƒ˜ํ”Œ ์ œ๊ฑฐ')
print(titanic_2.info())



[์—ฐ์Šต๋ฌธ์ œ2]
Age ๋ณ€์ˆ˜์—์„œ outlier ์— ์žˆ๋Š” ์ด์ƒ์น˜๋ฅผ ์ œ์™ธํ•œ ๋ฐ์ดํ„ฐ๋ฅผ titanic_3์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

import pandas as pd
import numpy as np
from elice_utils import EliceUtils

elice_utils = EliceUtils()


# ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ต๋‹ˆ๋‹ค.
titanic = pd.read_csv('./data/titanic.csv')

# Cabin ๋ณ€์ˆ˜๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
titanic_1 = titanic.drop(columns=['Cabin'])

# ๊ฒฐ์ธก๊ฐ’์ด ์กด์žฌํ•˜๋Š” ์ƒ˜ํ”Œ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
titanic_2 = titanic_1.dropna()

# (Age ๊ฐ’ - ๋‚ด๋ฆผ Age ๊ฐ’) 0 ๋ณด๋‹ค ํฌ๋‹ค๋ฉด ์†Œ์ˆ˜์ ์„ ๊ฐ–๋Š” ๋ฐ์ดํ„ฐ๋กœ ๋ถ„๋ฅ˜ํ•ฉ๋‹ˆ๋‹ค.
outlier = titanic_2[titanic_2['Age']-np.floor(titanic_2['Age']) > 0 ]['Age']

print('์†Œ์ˆ˜์ ์„ ๊ฐ–๋Š” Age ๋ณ€์ˆ˜ ์ด์ƒ์น˜')
print(outlier)
print('์ด์ƒ์น˜ ์ฒ˜๋ฆฌ ์ „ ์ƒ˜ํ”Œ ๊ฐœ์ˆ˜: %d' %(len(titanic_2)))
print('์ด์ƒ์น˜ ๊ฐœ์ˆ˜: %d' %(len(outlier)))

1. ์ด์ƒ์น˜๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
titanic_3 = titanic_2[titanic_2['Age']-np.floor(titanic_2['Age']) == 0 ]
print('์ด์ƒ์น˜ ์ฒ˜๋ฆฌ ํ›„ ์ƒ˜ํ”Œ ๊ฐœ์ˆ˜: %d' %(len(titanic_3)))



[์—ฐ์Šต๋ฌธ์ œ3]
titanic_3 ์—์„œ Survived ๋ณ€์ˆ˜๋ฅผ ์ œ๊ฑฐํ•˜์—ฌ X์— ์ €์žฅํ•˜๊ณ  Survived ๋ณ€์ˆ˜์˜ ๋ฐ์ดํ„ฐ๋Š” pandas์˜ Series ํ˜•ํƒœ๋กœ y์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
train_test_split ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค. test_size๋Š” 0.3, random_state๋Š” 42๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from elice_utils import EliceUtils

elice_utils = EliceUtils()

# ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ต๋‹ˆ๋‹ค.
titanic = pd.read_csv('./data/titanic.csv')

# Cabin ๋ณ€์ˆ˜๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
titanic_1 = titanic.drop(columns=['Cabin'])

# ๊ฒฐ์ธก๊ฐ’์ด ์กด์žฌํ•˜๋Š” ์ƒ˜ํ”Œ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
titanic_2 = titanic_1.dropna()

# ์ด์ƒ์น˜๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
titanic_3 = titanic_2[titanic_2['Age']-np.floor(titanic_2['Age']) == 0 ]
print('์ „์ฒด ์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜: %d' %(len(titanic_3)))

#1. feature ๋ฐ์ดํ„ฐ์™€ label ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
X = titanic_3.drop(columns=['Survived'])
y = titanic_3['Survived']
print('X ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜: %d' %(len(X)))
print('y ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜: %d' %(len(y)))

#2. ํ•™์Šต์šฉ, ํ‰๊ฐ€์šฉ ๋ฐ์ดํ„ฐ๋กœ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# ๋ถ„๋ฆฌํ•œ ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
print('ํ•™์Šต์šฉ ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜: %d' %(len(X_train)))
print('ํ‰๊ฐ€์šฉ ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜: %d' %(len(X_test)))

+ Recent posts