본문 바로가기
프로그램

[파이썬] iris.csv 분류 (tensorflow 기초)

by 오디세이99 2022. 11. 29.
728x90
반응형
import tensorflow as tf
from tensorflow.keras import layers
import pandas as pd
import numpy as np
from tensorflow.keras import datasets, layers, models
from tensorflow.keras.utils import to_categorical
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import train_test_split

df = pd.read_csv('iris_training.csv')   # csv 파일 읽기

X = df.iloc[:,0:4].values               # 학습데이터
y = df.iloc[:,4].values                 # target

encoder =  LabelEncoder()
y1 = encoder.fit_transform(y)
Y = pd.get_dummies(y1).values

X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.2, random_state=0)   # 학습/테스트 데이터 분리

model = tf.keras.Sequential([                         # 모델 만들기
    tf.keras.layers.Dense(10, activation='relu'),
    tf.keras.layers.Dense(10, activation='relu'),
    tf.keras.layers.Dense(3, activation='softmax')
  ])

model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])

model.fit(X_train, y_train, batch_size=50, epochs=200)       # 학습

loss, accuracy = model.evaluate(X_test, y_test, verbose=0)   # 합습loss, accuracy 확인
print('Test loss:', loss)
print('Test accuracy:', accuracy)

y_pred = model.predict(X_test)                               # 예측

actual = np.argmax(y_test,axis=1)
predicted = np.argmax(y_pred,axis=1)
print(f"Actual: {actual}")
print(f"Predicted: {predicted}")

결과

Epoch 1/200
2/2 [==============================] - 1s 13ms/step - loss: 2.0949 - accuracy: 0.3474
Epoch 2/200
2/2 [==============================] - 0s 12ms/step - loss: 1.9264 - accuracy: 0.3474
Epoch 3/200
2/2 [==============================] - 0s 11ms/step - loss: 1.8115 - accuracy: 0.3474
Epoch 4/200
2/2 [==============================] - 0s 9ms/step - loss: 1.7207 - accuracy: 0.3474
Epoch 5/200
2/2 [==============================] - 0s 8ms/step - loss: 1.6461 - accuracy: 0.3474
Epoch 6/200
2/2 [==============================] - 0s 10ms/step - loss: 1.5834 - accuracy: 0.3474
...
Epoch 197/200
2/2 [==============================] - 0s 8ms/step - loss: 0.1742 - accuracy: 0.9789
Epoch 198/200
2/2 [==============================] - 0s 9ms/step - loss: 0.1696 - accuracy: 0.9789
Epoch 199/200
2/2 [==============================] - 0s 7ms/step - loss: 0.1698 - accuracy: 0.9789
Epoch 200/200
2/2 [==============================] - 0s 7ms/step - loss: 0.1696 - accuracy: 0.9789
Test loss: 0.17050610482692719
Test accuracy: 0.9583333134651184
Actual: [2 0 0 0 1 2 1 1 0 2 2 1 0 2 1 0 1 0 0 1 1 1 2 0]
Predicted: [2 0 0 0 2 2 1 1 0 2 2 1 0 2 1 0 1 0 0 1 1 1 2 0]

iris_training.csv
0.00MB

728x90
반응형

댓글