๋”ฅ๋Ÿฌ๋‹/Today I learned :

[๋”ฅ๋Ÿฌ๋‹] ํ”ผ๋งˆ ์ธ๋””์–ธ ๋‹น๋‡จ๋ณ‘ ์˜ˆ์ธกํ•˜๊ธฐ

์ฃผ์˜ ๐Ÿฑ 2021. 3. 22. 13:07
728x90
๋ฐ˜์‘ํ˜•
ํ”ผ๋งˆ์ธ๋””์–ธ์€ ์šฐ๋ฆฌ๋‚˜๋ผ ์‚ฌ๋žŒ๊ณผ ๊ฐ™์€ ๋ฟŒ๋ฆฌ๋ฅผ ๊ฐ€์ง„ ‘๋ชฝ๊ณจ๋กœ์ด๋“œ๊ณ„’๋กœ ์ฃผ์‹์€ ์ฝฉ๊ณผ ํ˜ธ๋ฐ•๊ฐ™์€ ์‹๋ฌผ์ด์—ˆ๊ณ , ๋จน์„ ๊ฒƒ์€ ํ•ญ์ƒ ํ’์กฑํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. ์ด ๋•Œ๋ฌธ์— ๊ทธ๋“ค์€ ์กฐ๊ธˆ๋งŒ ๋จน์–ด๋„ ์ž˜ ์ƒ์กดํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ชธ์†์— ์Œ์‹์„ ์ถ•์ ํ•ด ๋†“์œผ๋ ค๋Š” ์œ ์ „์ž๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋˜์—ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋ฏธ๊ตญ์œผ๋กœ ์ด์ฃผํ•˜๊ณ  ์‹์ƒํ™œ์ด ์„œ๊ตฌํ™”๋˜๋ฉด์„œ ๋ชป ๋จน๋Š” ์ƒํ™ฉ์— ์œ ๋ฆฌํ•˜๊ฒŒ ์ ์‘ํ•œ ์œ ์ „์ž๊ฐ€ ๋น„๋งŒ์„ ์ดˆ๋ž˜ํ•ด ๊ฐ์ข… ์„ฑ์ธ๋ณ‘์„ ์œ ๋ฐœํ–ˆ๋‹ค. ๊ทธ ํ›„ ๊ทธ๋“ค์˜ ์ž์‹, ๊ทธ ์ž์‹์˜ ์ž์‹๋“ค๊นŒ์ง€ ๋น„๋งŒ, ๋‹น๋‡จ๋ณ‘ ๋“ฑ ์„ฑ์ธ๋ณ‘ ๋ฐœ๋ณ‘๋ฅ ์ด ์ฆ๊ฐ€ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค.

ํ”ผ๋งˆ์ธ๋””์–ธ์€ ์„ธ๊ณ„์—์„œ ๋‹น๋‡จ๋ณ‘ ๋ฐœ๋ณ‘๋ฅ ์ด ๊ฐ€์žฅ ๋งŽ์€ ์ข…์กฑ์ด ๋˜์—ˆ๊ณ , ํ”ผ๋งˆ ์กฑ์˜ ๋‚จ์ž 63%, ์—ฌ์ž 70%๊ฐ€ ๋‹น๋‡จ๋ณ‘์— ๊ฑธ๋ ธ๋‹ค๋Š” ๋ณด๊ณ ๊ฐ€ ์ตœ๊ทผ ๋ฐœํ‘œ๋˜๊ธฐ๋„ ํ–ˆ๋‹ค.

pima-indians-diabetes.csv :  768๋ช…์˜ ์ธ๋””์–ธ์œผ๋กœ๋ถ€ํ„ฐ 8๊ฐœ์˜ ์ •๋ณด์™€ 1๊ฐœ์˜ ํด๋ž˜์Šค๋ฅผ ์ถ”์ถœํ•œ ๋ฐ์ดํ„ฐ

 

pima-indians-diabetes.csv

• ์ƒ˜ํ”Œ ์ˆ˜: 768

• ์†์„ฑ: 8

- ์ •๋ณด 1 (pregnant): ๊ณผ๊ฑฐ ์ž„์‹  ํšŸ์ˆ˜

- ์ •๋ณด 2 (plasma): ํฌ๋„๋‹น ๋ถ€ํ•˜ ๊ฒ€์‚ฌ 2์‹œ๊ฐ„ ํ›„ ๊ณต๋ณต ํ˜ˆ๋‹น ๋†๋„(mm Hg)

- ์ •๋ณด 3 (pressure): ํ™•์žฅ๊ธฐ ํ˜ˆ์••(mm Hg)

- ์ •๋ณด 4 (thickness): ์‚ผ๋‘๊ทผ ํ”ผ๋ถ€ ์ฃผ๋ฆ„ ๋‘๊ป˜(mm)

- ์ •๋ณด 5 (insulin): ํ˜ˆ์ฒญ ์ธ์Š๋ฆฐ(2-hour, mu U/ml)

- ์ •๋ณด 6 (BMI): ์ฒด์งˆ๋Ÿ‰ ์ง€์ˆ˜(BMI, weight in kg/(height in m)2)

- ์ •๋ณด 7 (pedigree): ๋‹น๋‡จ๋ณ‘ ๊ฐ€์กฑ๋ ฅ

- ์ •๋ณด 8 (age): ๋‚˜์ด

• ํด๋ž˜์Šค: ๋‹น๋‡จ(1), ๋‹น๋‡จ ์•„๋‹˜(0)


pandas๋ฅผ ํ™œ์šฉํ•œ ๋ฐ์ดํ„ฐ ๋ถ„์„

 

import pandas as pd
# ํ”ผ๋งˆ ์ธ๋””์–ธ ๋‹น๋‡จ๋ณ‘ ๋ฐ์ดํ„ฐ์…‹์„ ๋ถˆ๋Ÿฌ์˜ต๋‹ˆ๋‹ค. ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ ๊ฐ ์ปฌ๋Ÿผ์— ํ•ด๋‹นํ•˜๋Š” ์ด๋ฆ„์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
df = pd.read_csv('../dataset/pima-indians-diabetes.csv',
               names = ["pregnant", "plasma", "pressure", "thickness", "insulin", "BMI", "pedigree", "age", "class"])

read_csv() : csv ๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

csv ํŒŒ์ผ์—๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์„ค๋ช…ํ•˜๋Š” ํ•œ ์ค„์ด ํŒŒ์ผ ๋งจ ์ฒ˜์Œ์— ๋‚˜์˜ต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ—ค๋”(header)๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์ง„ csv ํŒŒ์ผ์—๋Š” ํ—ค๋”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ด์— names๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์†์„ฑ๋ณ„ ํ‚ค์›Œ๋“œ๋ฅผ ์ง€์ •ํ•ด ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

 

# ์ฒ˜์Œ 5์ค„์„ ๋ด…๋‹ˆ๋‹ค.
print(df.head(5))

์‹คํ–‰ ๊ฒฐ๊ณผ

# ๋ฐ์ดํ„ฐ์˜ ์ „๋ฐ˜์ ์ธ ์ •๋ณด๋ฅผ ํ™•์ธํ•ด ๋ด…๋‹ˆ๋‹ค.
print(df.info())
# ๊ฐ ์ •๋ณด๋ณ„ ํŠน์ง•์„ ์ข€๋” ์ž์„ธํžˆ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
print(df.describe())

์‹คํ–‰ ๊ฒฐ๊ณผ

 

๋ฐ์ดํ„ฐ์˜ ์ผ๋ถ€ ์ปฌ๋Ÿผ๋งŒ ๋ณด๊ณ  ์‹ถ์„ ๋•Œ, ์˜ˆ๋ฅผ ๋“ค์–ด ์ž„์‹  ํšŸ์ˆ˜(pregnant)์™€ ๋‹น๋‡จ๋ณ‘ ๋ฐœ๋ณ‘ ์—ฌ๋ถ€(class)๋งŒ ํ™•์ธํ•ด ๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

# ๋ฐ์ดํ„ฐ ์ค‘ ์ž„์‹  ์ •๋ณด์™€ ํด๋ž˜์Šค ๋งŒ์„ ์ถœ๋ ฅํ•ด ๋ด…๋‹ˆ๋‹ค.
print(df[['plasma', 'class']])

 

 


๋ฐ์ดํ„ฐ ๊ฐ€๊ณตํ•˜๊ธฐ - ์ž„์‹  ํšŸ์ˆ˜๋‹น ๋‹น๋‡จ๋ณ‘ ๋ฐœ๋ณ‘ ํ™•๋ฅ  ๊ณ„์‚ฐ

 

 

์ด ํ”„๋กœ์ ํŠธ์˜ ๋ชฉ์ ์€ ๋‹น๋‡จ๋ณ‘ ๋ฐœ๋ณ‘์„ ์˜ˆ์ธกํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๋ชจ๋“  ์ •๋ณด๋Š” ๋‹น๋‡จ๋ณ‘ ๋ฐœ๋ณ‘๊ณผ ์–ด๋–ค ๊ด€๊ณ„๊ฐ€ ์žˆ๋Š”์ง€๋ฅผ ์ค‘์ ์— ๋†“์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

print(df[[‘pregnant’,‘class’]].groupby([‘pregnant’], as_index=False).mean().sort_values(by=‘pregnant’, ascending=True))

๋จผ์ € groupby() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด pregnant ์ •๋ณด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•˜๋Š” ์ƒˆ ๊ทธ๋ฃน์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. 

as_index=False๋Š” pregnant ์ •๋ณด ์˜†์— ์ƒˆ๋กœ์šด ์ธ๋ฑ์Šค(index)๋ฅผ ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค.

mean() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ํ‰๊ท ์„ ๊ตฌํ•˜๊ณ  sort_values() ํ•จ์ˆ˜๋ฅผ ์จ์„œ pregnant ์ปฌ๋Ÿผ์„ ์˜ค๋ฆ„์ฐจ์ˆœ(ascending)์œผ๋กœ ์ •๋ฆฌํ•˜๊ฒŒ๋” ์„ค์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

 

 

 


matplotlib๋ฅผ ์ด์šฉํ•ด ๊ทธ๋ž˜ํ”„๋กœ ํ‘œํ˜„ํ•˜๊ธฐ

 

matplotlib ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ข€ ๋” ์ •๊ตํ•œ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๊ฒŒ๋” ๋„์™€์ฃผ๋Š” 

seaborn ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด ๊ฐ ์ •๋ณด๋ผ๋ฆฌ ์–ด๋–ค ์ƒ๊ด€๊ด€๊ณ„๊ฐ€ ์žˆ๋Š”์ง€๋ฅผ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

import matplotlib.pyplot as plt
import seaborn as sns

 

 

# ๋ฐ์ดํ„ฐ ๊ฐ„์˜ ์ƒ๊ด€๊ด€๊ณ„๋ฅผ ๊ทธ๋ž˜ํ”„๋กœ ํ‘œํ˜„ํ•ด ๋ด…๋‹ˆ๋‹ค.

colormap = plt.cm.gist_heat   #๊ทธ๋ž˜ํ”„์˜ ์ƒ‰์ƒ ๊ตฌ์„ฑ์„ ์ •ํ•ฉ๋‹ˆ๋‹ค.
plt.figure(figsize=(12,12))   #๊ทธ๋ž˜ํ”„์˜ ํฌ๊ธฐ๋ฅผ ์ •ํ•ฉ๋‹ˆ๋‹ค.

# ๊ทธ๋ž˜ํ”„์˜ ์†์„ฑ์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. vmax์˜ ๊ฐ’์„ 0.5๋กœ ์ง€์ •ํ•ด 0.5์— ๊ฐ€๊นŒ์šธ ์ˆ˜๋ก ๋ฐ์€ ์ƒ‰์œผ๋กœ ํ‘œ์‹œ๋˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
sns.heatmap(df.corr(),linewidths=0.1,vmax=0.5, cmap=colormap, linecolor='white', annot=True)
plt.show()

heatmap() ํ•จ์ˆ˜๋Š” ๋‘ ํ•ญ๋ชฉ์”ฉ ์ง์„ ์ง€์€ ๋’ค ๊ฐ๊ฐ ์–ด๋–ค ํŒจํ„ด์œผ๋กœ ๋ณ€ํ™”ํ•˜๋Š”์ง€๋ฅผ ๊ด€์ฐฐํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.

๋‘ ํ•ญ๋ชฉ์ด ์ „ํ˜€ ๋‹ค๋ฅธ ํŒจํ„ด์œผ๋กœ ๋ณ€ํ™”ํ•˜๊ณ  ์žˆ์œผ๋ฉด 0์„, ์„œ๋กœ ๋น„์Šทํ•œ ํŒจํ„ด์œผ๋กœ ๋ณ€ํ• ์ˆ˜๋ก 1์— ๊ฐ€๊นŒ์šด ๊ฐ’์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

 

vmax๋Š” ์ƒ‰์ƒ์˜ ๋ฐ๊ธฐ๋ฅผ ์กฐ์ ˆํ•˜๋Š” ์ธ์ž์ž…๋‹ˆ๋‹ค.

cmap์€ ๋ฏธ๋ฆฌ ์ •ํ•ด์ง„ matplotlib ์ƒ‰์ƒ์˜ ์„ค์ •๊ฐ’์„ ๋ถˆ๋Ÿฌ์˜ต๋‹ˆ๋‹ค.

์ƒ‰์ƒ ์„ค์ •๊ฐ’์€ https://matplotlib.org/users/colormaps.html์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์‹คํ–‰ ๊ฒฐ๊ณผ

 

๋‹น๋‡จ๋ณ‘ ๋ฐœ๋ณ‘ ์—ฌ๋ถ€๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” class ํ•ญ๋ชฉ์„ ๋ณด๋ฉด pregnant๋ถ€ํ„ฐ age๊นŒ์ง€ ์ƒ๊ด€๋„๊ฐ€ ์ˆซ์ž๋กœ ํ‘œ์‹œ๋˜์–ด ์žˆ๊ณ , ์ˆซ์ž๊ฐ€ ๋†’์„์ˆ˜๋ก ๋ฐ์€ ์ƒ‰์ƒ

๊ทธ๋ž˜ํ”„๋ฅผ ํ†ตํ•ด plasma ํ•ญ๋ชฉ(๊ณต๋ณต ํ˜ˆ๋‹น ๋†๋„)์ด class ํ•ญ๋ชฉ๊ณผ ๊ฐ€์žฅ ์ƒ๊ด€๊ด€๊ณ„๊ฐ€ ๋†’๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฆ‰, ์ด ํ•ญ๋ชฉ์ด ๊ฒฐ๋ก ์„ ๋งŒ๋“œ๋Š” ๋ฐ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ด์ œ plasma์™€ class ํ•ญ๋ชฉ๋งŒ ๋”ฐ๋กœ ๋–ผ์–ด ๋‘ ํ•ญ๋ชฉ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๊ทธ๋ž˜ํ”„๋กœ ๋‹ค์‹œ ํ•œ๋ฒˆ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

grid = sns.FacetGrid(df, col='class')
grid.map(plt.hist, 'plasma',  bins=10)
plt.show()

์‹คํ–‰ ๊ฒฐ๊ณผ

๋‹น๋‡จ๋ณ‘ ํ™˜์ž์˜ ๊ฒฝ์šฐ(class=1) plasma ํ•ญ๋ชฉ์˜ ์ˆ˜์น˜๊ฐ€ 150 ์ด์ƒ์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ๊ฒฐ๊ณผ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์ด ํฐ ํ•ญ๋ชฉ์„ ๋ฐœ๊ฒฌํ•˜๋Š” ๊ฒƒ์ด ‘๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ ๊ณผ์ •’์˜ ํ•œ ์˜ˆ์ž…๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ ๊ณผ์ •์€ ๋”ฅ๋Ÿฌ๋‹์„ ๋น„๋กฏํ•˜์—ฌ ๋ชจ๋“  ๋จธ์‹ ๋Ÿฌ๋‹์˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ์— ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

 

๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ ๊ณผ์ •์€ ๋ชจ์•„์ง„ ๋ฐ์ดํ„ฐ์— ๋น ์ง„ ๊ฐ’์ด ์žˆ๋‹ค๋ฉด ํ‰๊ท ์ด๋‚˜ ์ค‘์•™๊ฐ’์œผ๋กœ ๋Œ€์น˜ํ•˜๋Š” ๋“ฑ์˜ ๊ณผ์ •, ์ „ํ˜€ ๊ด€๊ณ„์—†๋Š” ์ด์ƒ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ผ์–ด ์žˆ์ง€๋Š” ์•Š์€์ง€๋ฅผ ์ ๊ฒ€ํ•˜๋Š” ๊ณผ์ • ๋“ฑ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. SVM, RF๋“ฑ์˜ ๋จธ์‹ ๋Ÿฌ๋‹ ๊ธฐ๋ฒ•์€ ์ค‘์š”ํ•œ ์†์„ฑ์„ ๋ฝ‘์•„ ๋‚ด๋Š” Feature extraction ๊ณผ์ •๋„ ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ์— ํฌํ•จํ•˜์ง€๋งŒ, ๋”ฅ๋Ÿฌ๋‹์€ ์ค‘์š”ํ•œ ์†์„ฑ์„ ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฝ‘์•„๋‚ด๋ฏ€๋กœ ์ด ๊ณผ์ •์€ ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค.

 

 


keras ๋กœ ๋‹น๋‡จ๋ณ‘ ์—์ธก ์‹คํ–‰

 

# ๋”ฅ๋Ÿฌ๋‹์„ ๊ตฌ๋™ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ผ€๋ผ์Šค ํ•จ์ˆ˜๋ฅผ ๋ถˆ๋Ÿฌ์˜ต๋‹ˆ๋‹ค.
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

# ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ถˆ๋Ÿฌ์˜ต๋‹ˆ๋‹ค.
import numpy
import tensorflow as tf

# ์‹คํ–‰ํ•  ๋•Œ๋งˆ๋‹ค ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•ด ์„ค์ •ํ•˜๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.
numpy.random.seed(3)
tf.random.set_seed(3)

# ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ ์˜ต๋‹ˆ๋‹ค.
dataset = numpy.loadtxt("../dataset/pima-indians-diabetes.csv", delimiter=",")
X = dataset[:,0:8]
Y = dataset[:,8]

# ๋ชจ๋ธ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
model = Sequential()
model.add(Dense(12, input_dim=8, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

# ๋ชจ๋ธ์„ ์ปดํŒŒ์ผํ•ฉ๋‹ˆ๋‹ค.
model.compile(loss='binary_crossentropy',
             optimizer='adam',
             metrics=['accuracy'])

# ๋ชจ๋ธ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
model.fit(X, Y, epochs=200, batch_size=10)

# ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
print("\n Accuracy: %.4f" % (model.evaluate(X, Y)[1]))

seed ๊ฐ’์„ ์„ค์ •ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๊ทธ ๋žœ๋ค ํ…Œ์ด๋ธ” ์ค‘์—์„œ ๋ช‡ ๋ฒˆ์งธ ํ…Œ์ด๋ธ”์„ ๋ถˆ๋Ÿฌ์™€ ์“ธ์ง€๋ฅผ ์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ seed ๊ฐ’์ด ๊ฐ™์œผ๋ฉด ๋˜‘๊ฐ™์€ ๋žœ๋ค ๊ฐ’์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

 

์ง€๊ธˆ ์šฐ๋ฆฌ๊ฐ€ ๋ณด๊ณ  ์žˆ๋Š” ์ฝ”๋“œ์ฒ˜๋Ÿผ ๋„˜ํŒŒ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ํ…์„œํ”Œ๋กœ ๊ธฐ๋ฐ˜์œผ๋กœ ๋”ฅ๋Ÿฌ๋‹์„ ๊ตฌํ˜„ํ•  ๋•Œ๋Š” ์ผ์ •ํ•œ ๊ฒฐ๊ด๊ฐ’์„ ์–ป๊ธฐ ์œ„ํ•ด ๋„˜ํŒŒ์ด seed ๊ฐ’๊ณผ ํ…์„œํ”Œ๋กœ seed ๊ฐ’์„ ๋ชจ๋‘ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค

(๋‹จ, seed ๊ฐ’์„ ์ด๋ ‡๊ฒŒ ์ง€์ •ํ•ด๋„ ์—ฌ์ „ํžˆ ์ถœ๋ ฅ ๊ฐ’์ด ๋ฏธ์„ธํ•˜๊ฒŒ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํ…์„œํ”Œ๋กœ๋ฅผ ๊ตฌ๋™์‹œํ‚ค๋Š” cuDNN ๋“ฑ์˜ ๋‚ด๋ถ€ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์ž์ฒด์ ์œผ๋กœ ๋˜ ๋‹ค๋ฅธ ๋žœ๋ค ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์ธ๋ฐ, ํ˜„์žฌ ์ด ๋ถ€๋ถ„์˜ seed ๊ฐ’์„ ์ง€์ •ํ•  ๋ฐฉ๋ฒ•์€ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์•ž์„œ ์–ธ๊ธ‰ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ์ตœ์ข… ๋”ฅ๋Ÿฌ๋‹ ๊ฒฐ๊ณผ๋Š” ์—ฌ๋Ÿฌ ๋ฒˆ ์‹คํ–‰ํ•˜์—ฌ ํ‰๊ท ์„ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ ์ ˆํ•ฉ๋‹ˆ๋‹ค)

 

๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋ธ์— ์€๋‹‰์ธต์„ ํ•˜๋‚˜ ๋” ์ถ”๊ฐ€, ์ธต์„ ์ถ”๊ฐ€ํ•  ๋•Œ๋Š” model.add() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด ์ƒˆ๋กœ์šด ์ค„์„ ์ถ”๊ฐ€ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋‘˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์ดํ•ญ ๋ถ„๋ฅ˜(binary classification) ๋ฌธ์ œ์ด๋ฏ€๋กœ ์˜ค์ฐจ ํ•จ์ˆ˜๋Š” binary_crossentropy๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ์ตœ์ ํ™” ํ•จ์ˆ˜๋กœ adam์„ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ „์ฒด ์ƒ˜ํ”Œ์ด 200๋ฒˆ ๋ฐ˜๋ณตํ•ด์„œ ์ž…๋ ฅ๋  ๋•Œ๊นŒ์ง€ ์‹คํ—˜์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

ํ•œ ๋ฒˆ์— ์ž…๋ ฅ๋˜๋Š” ์ž…๋ ฅ ๊ฐ’์„ 10๊ฐœ๋กœ ํ•˜๊ณ  ์ข…ํ•ฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ”„๋กœ๊ทธ๋žจ์ด ์™„์„ฑ๋ฉ๋‹ˆ๋‹ค.

 

- 0s 109us/sample - loss: 0.5015 - accuracy: 0.7253
Accuracy: 0.7253

 

์•ฝ 72.53%์˜ ์˜ˆ์ธก ์ •ํ™•๋„

 

 

 

๋ฐ˜์‘ํ˜•