반응형
아래는 지도학습에서 모델을 만들고 이용하는 전체 과정이며, 코드예시는 딥러닝 알고리즘 사용 기반이다.
1. 과거의 데이터를 준비합니다. ( 독립변수와 종속변수를 분리해서 데이터를 준비하는 과정. 독립변수가 몇개인지 종속변수가 몇개인지 살피는 것이 중요-> 다음 과정에서 독립변수/종속변수의 갯수를 맞춰서 모델을 만들어야하기때문)
레모네이드 = pd.read_csv('lemonade.csv')
독립 = 레모네이드[['온도']]
종속 = 레모네이드[['판매량']]
print(독립.shape, 종속.shape)
2. 모델의 구조를 만듭니다. ( 모델을 만듦 )
X = tf.keras.layers.Input(shape=[1]) # 1 = 독립변수의 갯수
Y = tf.keras.layers.Dense(1)(X) # 1 = 종속변수의 갯수
model = tf.keras.models.Model(X, Y)
model.compile(loss='mse')
3. 데이터로 모델을 학습(FIT)합니다. ( 학습 )
model.fit(독립, 종속, epochs=1000) # 전체 데이터를 몇 번 반복하여 학습할지.
# 무엇인가를 배울 때 한 번에 알아듣는 사람이 있는가 반면, 여러번 학습해야 알아듣는 나같은 사람이 있다. 모델도 마찬가지로 여러번 반복해서 학습해야한다.
이 학습 과정에서 출력되는 loss 값이 있다.
loss : 모델이 내놓는 결과가 실제 정답과 차이가 있는지 알아보기 위한 지표. 학습이 얼마나 진행되었는지 알려줌. 각 학습이 끝날 때 마다 그 시점에 모델이 얼마나 정답에 가까이 맞추고 있는지 평가하는 지표.
문제 유형에 맞게 loss를 다르게 지정해줘야한다.
회귀에서 사용하는 loss : mse
분류에서 사용하는 loss : categorical_crossentropy
둘 다 0에 가까울수록 정확도가 높다는 것을 뜻한다. loss가 원하는 값 까지 떨어질때 까지 반복해서 학습을 시키면 된다.
+ 참고로 분류에서는 loss 보다 더 사람에게 직관적인 '정확도' 가 있다. 이 값은 1에 가까울수록 정확도가 높음을 뜻한다
4. 모델을 이용합니다. ( 값 예측 )
print("Predictions : ", model.predict([[15]]))
실습 1. 레모네이드 판매량 ( 독립변수 : 종속변수 = 1 : 1 )
# 라이브러리 사용
import tensorflow as tf
import pandas as pd
---
# 데이터 준비
파일경로 = 'https://raw.githubusercontent.com/blackdew/tensorflow1/master/csv/lemonade.csv'
데이터 = pd.read_csv(파일경로)
print(데이터.head())
온도 판매량
0 20 40
1 21 42
2 22 44
3 23 46
4 24 48
---
# 데이터 준비 2 - 독립변수 / 종속변수 구분
독립 = 데이터[['온도']]
종속 = 데이터[['판매량']]
print(독립.shape, 종속.shape)
(6, 1) (6, 1)
---
# 모델을 만든다.
X = tf.keras.layers.Input(shape=[1])
Y = tf.keras.layers.Dense(1)(X)
model = tf.keras.models.Model(X, Y)
model.compile(loss='mse')
---
# 모델을 학습시킴
model.fit(독립, 종속, epochs=10)
# 참고로 10000번의 작업을 하고 난 후임
Epoch 1/10
1/1 [==============================] - 0s 1ms/step - loss: 2.4390e-04
Epoch 2/10
1/1 [==============================] - 0s 2ms/step - loss: 2.4384e-04
Epoch 3/10
1/1 [==============================] - 0s 2ms/step - loss: 2.4374e-04
Epoch 4/10
1/1 [==============================] - 0s 1ms/step - loss: 2.4368e-04
Epoch 5/10
1/1 [==============================] - 0s 2ms/step - loss: 2.4361e-04
Epoch 6/10
1/1 [==============================] - 0s 3ms/step - loss: 2.4352e-04
Epoch 7/10
1/1 [==============================] - 0s 2ms/step - loss: 2.4338e-04
Epoch 8/10
1/1 [==============================] - 0s 954us/step - loss: 2.4327e-04
Epoch 9/10
1/1 [==============================] - 0s 3ms/step - loss: 2.4317e-04
Epoch 10/10
1/1 [==============================] - 0s 3ms/step - loss: 2.4306e-04
<tensorflow.python.keras.callbacks.History at 0x7f41a1f555f8>
---
# 모델을 이용
model.predict(독립) # 기존데이터를 넣어보고 결과를 비교해보는 것 뿐
array([[40.005146],
[41.998684],
[43.99222 ],
[45.98576 ],
[47.979298],
[49.972836]], dtype=float32)
# 실전 예측
model.predict([[15]])
array([[30.037458]], dtype=float32)
출처 - opentutorials.org/
반응형
'[인공지능]' 카테고리의 다른 글
[TensorFlow] 딥러닝 학습원리 (0) | 2020.12.15 |
---|---|
[TensorFlow] 지도학습 전체과정 2 (Feat. 딥러닝) (0) | 2020.12.15 |
[TensorFlow] 표를 다루는 도구, 판다스 (0) | 2020.12.15 |
[TensorFlow] 목표 : Tensorflow를 이용해 지도학습 문제 해결 (Feat. 딥러닝) (0) | 2020.12.15 |
[오렌지] 모델/알고리즘의 특징 비교 (0) | 2020.12.13 |