Codelog

[AIB] Tensorflow 신경망 예제 - Iris 데이터 분류하기 본문

Boot Camp/section4

[AIB] Tensorflow 신경망 예제 - Iris 데이터 분류하기

minzeros 2022. 1. 7. 17:54

전체 특성 중 2개의 특성 sepal length, petal length 만을 선택하여 사용하고,

150개의 데이터 중 Setosa 50개, Versicolor 50개만을 추출하여 100개의 데이터에 대해서 이진 분류를 진행한다.

 

 

1. 먼저 필요한 패키지와 라이브러리를 불러온다.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import tensorflow as tf

 

2. 시드(Seed)를 고정한다.

np.random.seed(42)
tf.random.set_seed(42)

 

3. Iris 데이터셋을 DataFrame 형태로 불러온 후 데이터 형태를 살핀다.

df = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data')

df.head()

df.shape
>>> (150, 5)

 

4. Setosa, Vericolor 데이터만 추출하여 전처리를 진행한다.

label = df.iloc[0:100, 4].values
label

 

5. 타겟 레이블을 Setosa=0, versicolor=1 로 변경해준다.

label = np.where(label == 'Iris-setosa', 0, 1)
label.astype(object)
label

 

6. 데이터 분포 시각화

features = df.iloc[0:100, [0,2]].values
features.shape
>>> (100, 2)

plt.scatter(features[:50, 0], features[:50, 1], color='red', marker='o', label='setosa')
plt.scatter(features[50:, 0], features[50:, 1], color='blue', marker='x', label='versicolor')
plt.xlabel('sepal length')
plt.ylabel('petal length')
plt.legend(loc='upper left')
plt.show()

 

7. 신경망 모델을 구축하고 컴파일한 후 학습시킨다.

.compile 에서는 신경망에서 사용할 옵티마이저(optimizer), 손실함수(loss), 지표(metrics)를 설정한다.

from sklearn.model_selection import train_test_split

# 학습 데이터, 시험 데이터 설정
X_train, X_test, y_train, y_test = train_test_split(features, label, test_size=0.2, random_state=42)

# 신경망 구축
model = tf.keras.models.Sequential([
	tf.keras.layers.Dense(1, activation='sigmoid')
])

# 컴파일
model.compile(optimizer='sgd', loss='binary_crossentropy', metrics=['accuracy'])

# 신경망 학습
model.fit(X_train, y_train, epochs=30)

Epoch 1/30
3/3 [==============================] - 2s 5ms/step - loss: 1.0814 - accuracy: 0.5250
Epoch 2/30
3/3 [==============================] - 0s 4ms/step - loss: 1.0017 - accuracy: 0.5250
Epoch 3/30
3/3 [==============================] - 0s 4ms/step - loss: 0.9433 - accuracy: 0.5250
Epoch 4/30
3/3 [==============================] - 0s 4ms/step - loss: 0.8986 - accuracy: 0.5250
Epoch 5/30
3/3 [==============================] - 0s 4ms/step - loss: 0.8627 - accuracy: 0.5250
Epoch 6/30
3/3 [==============================] - 0s 4ms/step - loss: 0.8413 - accuracy: 0.5250
Epoch 7/30
3/3 [==============================] - 0s 4ms/step - loss: 0.8181 - accuracy: 0.5250
Epoch 8/30
3/3 [==============================] - 0s 4ms/step - loss: 0.8036 - accuracy: 0.5250
Epoch 9/30
3/3 [==============================] - 0s 4ms/step - loss: 0.7901 - accuracy: 0.5250
Epoch 10/30
3/3 [==============================] - 0s 4ms/step - loss: 0.7797 - accuracy: 0.5250
Epoch 11/30
3/3 [==============================] - 0s 4ms/step - loss: 0.7695 - accuracy: 0.5250
Epoch 12/30
3/3 [==============================] - 0s 4ms/step - loss: 0.7611 - accuracy: 0.5250
Epoch 13/30
3/3 [==============================] - 0s 4ms/step - loss: 0.7554 - accuracy: 0.5250
Epoch 14/30
3/3 [==============================] - 0s 7ms/step - loss: 0.7450 - accuracy: 0.5250
Epoch 15/30
3/3 [==============================] - 0s 4ms/step - loss: 0.7369 - accuracy: 0.5250
Epoch 16/30
3/3 [==============================] - 0s 4ms/step - loss: 0.7281 - accuracy: 0.5250
Epoch 17/30
3/3 [==============================] - 0s 4ms/step - loss: 0.7241 - accuracy: 0.5250
Epoch 18/30
3/3 [==============================] - 0s 4ms/step - loss: 0.7130 - accuracy: 0.5250
Epoch 19/30
3/3 [==============================] - 0s 4ms/step - loss: 0.7049 - accuracy: 0.5250
Epoch 20/30
3/3 [==============================] - 0s 4ms/step - loss: 0.6979 - accuracy: 0.5250
Epoch 21/30
3/3 [==============================] - 0s 5ms/step - loss: 0.6894 - accuracy: 0.5250
Epoch 22/30
3/3 [==============================] - 0s 4ms/step - loss: 0.6852 - accuracy: 0.5250
Epoch 23/30
3/3 [==============================] - 0s 4ms/step - loss: 0.6755 - accuracy: 0.5250
Epoch 24/30
3/3 [==============================] - 0s 4ms/step - loss: 0.6706 - accuracy: 0.5250
Epoch 25/30
3/3 [==============================] - 0s 5ms/step - loss: 0.6619 - accuracy: 0.5250
Epoch 26/30
3/3 [==============================] - 0s 4ms/step - loss: 0.6544 - accuracy: 0.5250
Epoch 27/30
3/3 [==============================] - 0s 4ms/step - loss: 0.6483 - accuracy: 0.5250
Epoch 28/30
3/3 [==============================] - 0s 4ms/step - loss: 0.6419 - accuracy: 0.5250
Epoch 29/30
3/3 [==============================] - 0s 5ms/step - loss: 0.6353 - accuracy: 0.5250
Epoch 30/30
3/3 [==============================] - 0s 5ms/step - loss: 0.6285 - accuracy: 0.5250

 
model.evaluate(X_test, y_test, verbose=2)

 

'Boot Camp > section4' 카테고리의 다른 글

[AIB] Artificial Neural Network  (0) 2022.01.07