학교/인공지능

IRIS 분류

서윤-정 2024. 6. 8. 16:36
import tensorflow as tf
import pandas as pd

# 과거 데이터 준비
filepath = '/content/sample_data/iris.csv'
iris = pd.read_csv(filepath)
iris.head()

# one-hot encoding
after_encoding = pd.get_dummies(iris)
after_encoding.head()
print(after_encoding.columns)

# 독립변수, 종속변수
independent = after_encoding[['꽃잎길이', '꽃잎폭', '꽃받침길이', '꽃받침폭']]
dependent = after_encoding[['품종_setosa', '품종_versicolor', '품종_virginica']]
print(independent.shape, dependent.shape)

# 2. 모델 구조
X = tf.keras.layers.Input(shape=[4])
Y = tf.keras.layers.Dense(3, activation='softmax')(X)         # one-hot encoding 후 3개로
model = tf.keras.models.Model(X, Y)
model.compile(loss='categorical_crossentropy', metrics='accuracy')

# 3. 모델 학습(FIT)
model.fit(independent, dependent, epochs=90, verbose=0)
model.fit(independent, dependent, epochs=10)

# 4. 모델 이용. 맨 처음 데이터 5개
print(model.predict(independent[:5]))
print(dependent[:5])

# weight & bias 출력
print(model.get_weights())

 

 

 

 

 

1. 데이터 준비

import tensorflow as tf
import pandas as pd

# 과거 데이터 준비
filepath = '/content/sample_data/iris.csv'
iris = pd.read_csv(filepath)
iris.head()

 

 

 

  • import tensorflow as tf: TensorFlow 라이브러리를 tf라는 이름으로 임포트합니다.
  • import pandas as pd: Pandas 라이브러리를 pd라는 이름으로 임포트합니다.
  • filepath = '/content/sample_data/iris.csv': Iris 데이터셋 CSV 파일의 경로를 지정합니다.
  • iris = pd.read_csv(filepath): Pandas를 사용하여 CSV 파일을 데이터프레임으로 읽어옵니다.
  • iris.head(): 데이터프레임의 첫 5개 행을 출력합니다.

 

 

 

 

 

 

 

2. One-Hot Encoding

# one-hot encoding
after_encoding = pd.get_dummies(iris)
after_encoding.head()
print(after_encoding.columns)

 

 

 

  • after_encoding = pd.get_dummies(iris): Pandas의 get_dummies 함수를 사용하여 범주형 변수를 One-Hot Encoding합니다.
  • after_encoding.head(): One-Hot Encoding된 데이터프레임의 첫 5개 행을 출력합니다.
  • print(after_encoding.columns): One-Hot Encoding된 데이터프레임의 열 이름을 출력합니다.

 

 

 

 

 

3. 독립 변수와 종속 변수 분리

# 독립변수, 종속변수
independent = after_encoding[['꽃잎길이', '꽃잎폭', '꽃받침길이', '꽃받침폭']]
dependent = after_encoding[['품종_setosa', '품종_versicolor', '품종_virginica']]
print(independent.shape, dependent.shape)
 
 
  • independent: 예측에 사용되는 입력 데이터입니다. 여기서는 꽃잎 길이, 꽃잎 폭, 꽃받침 길이, 꽃받침 폭을 선택합니다.
  • dependent: 예측하고자 하는 목표 데이터입니다. 여기서는 각 품종에 대해 One-Hot Encoding된 열을 선택합니다.
  • print(independent.shape, dependent.shape): 독립 변수와 종속 변수의 크기를 출력합니다.
 
 

 

 

 

 

 

4. 모델 구조 생성

# 2. 모델 구조
X = tf.keras.layers.Input(shape=[4])
Y = tf.keras.layers.Dense(3, activation='softmax')(X)         # one-hot encoding 후 3개로 
model = tf.keras.models.Model(X, Y)
model.compile(loss='categorical_crossentropy', metrics='accuracy')
 
 
 
  • X = tf.keras.layers.Input(shape=[4]): 입력 레이어를 정의합니다. 입력 데이터의 형태는 4개의 피처를 가지는 1차원 벡터입니다.
  • Y = tf.keras.layers.Dense(3, activation='softmax')(X): 출력 레이어를 정의합니다. Dense 레이어는 3개의 뉴런을 가지며, 활성화 함수로 소프트맥스(softmax)를 사용하여 각 클래스의 확률을 출력합니다.
  • model = tf.keras.models.Model(X, Y): 입력 레이어 X와 출력 레이어 Y를 연결하여 모델을 만듭니다.
  • model.compile(loss='categorical_crossentropy', metrics='accuracy'): 모델을 컴파일합니다. 손실 함수로 categorical crossentropy를 사용하고, 정확도(metrics)도 함께 출력합니다.

 

 

 

 

 

 

 

5. 모델 학습(FIT)

# 3. 모델 학습(FIT)
model.fit(independent, dependent, epochs=90, verbose=0)
model.fit(independent, dependent, epochs=10)
 
 

 

  • model.fit(independent, dependent, epochs=90, verbose=0): 모델을 학습시킵니다. 독립 변수 independent와 종속 변수 dependent를 사용하여 90번의 에포크 동안 학습합니다. verbose=0은 학습 중 출력되는 로그를 생략합니다.
  • model.fit(independent, dependent, epochs=10): 추가로 10번의 에포크 동안 모델을 학습합니다. 이번에는 verbose를 생략하여 기본값(1)을 사용합니다.

 

 

 

 

 

 

 

 

6. 모델 이용(예측)

# 4. 모델 이용. 맨 처음 데이터 5개
print(model.predict(independent[:5]))
print(dependent[:5])
 
 

 

  • model.predict(independent[:5]): 학습된 모델을 사용하여 독립 변수의 첫 5개 데이터를 입력으로 주고 예측을 수행합니다.
  • print(dependent[:5]): 실제 종속 변수 값을 출력하여 예측 값과 비교합니다.

 

 

 

 

 

 

 

7. 모델 가중치와 편향 확인

# weight & bias 출력
print(model.get_weights())
 
 
 
model.get_weights(): 모델의 가중치(Weights)와 편향(Biases)을 출력합니다. 이 값들은 학습 과정에서 최적화된 값들로, 학습된 모델의 수식을 나타냅니다.

 

 

'학교 > 인공지능' 카테고리의 다른 글

Multi-Layer로 확장 (IRIS분류)  (0) 2024.06.08
Multi-Layer로 확장 (보스톤 집값)  (0) 2024.06.08
보스턴 집값 예측  (0) 2024.06.08
5_인공지능개론  (1) 2024.06.08
4_인공지능개론  (0) 2024.06.06