AI/모두의 딥러닝

[Deep Learning] Wine Classification Problem

LiDARian 2021. 11. 2. 13:00
반응형


이번 예제는 화이트와인과 레드와인을 구분하는 예제이다.

산도, 당도, pH등을 이용해서 12번 인덱스에 있는 두 클래스(화이트와인, 레드와인)을 구분하자.

# 데이터 입력
from google.colab import files
uploaded = files.upload()
my_data = 'wine.csv'

# !pip install -q tensorflow-gpu==1.15.0
# %tensorflow_version 1.x
import tensorflow as tf
import pandas as pd
import numpy
import matplotlib.pyplot as plt

from keras.models import Sequential
from keras.layers import Dense
from keras.callbacks import ModelCheckpoint, EarlyStopping

# seed 값 설정
seed = 0
numpy.random.seed(seed)
tf.compat.v1.set_random_seed(3)

sample()함수를 사용하면 데이터의 일부만 추출할 수 있다.
df = df_pre.sample(frac=1)라고하면 원본 데이터의 100%를 가져온다.

평소처럼 print(df.head(5)), print(df.info())를 이용해서 데이터를 살펴보자.

# 데이터 적용
df_pre = pd.read_csv(my_data, header=None)
df = df_pre.sample(frac=1)

dataset = df.values
X = dataset[:,0:12]
Y = dataset[:,12]

print(df.head(5))
print(df.info())

 

전에 해봤던 예제들과 비슷하게 모델의 층을 쌓고, 컴파일하고, fit()하면 된다.

# 모델 설정
model = Sequential()
model.add(Dense(30,  input_dim=12, activation='relu'))
model.add(Dense(12, 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=200)

# 결과 출력
print("\n Accuracy: %.4f" % (model.evaluate(X, Y)[1]))

반응형