실습과정 |
지도학습의 실습과정은 다음과 같습니다.
1. 과거의 데이터를 준비합니다.(과거의 데이터에서 원인과 결과 즉 독립변수와 종속변수를 찾아 냅니다.)
2. 모델의 구조를 만듭니다. (레모네이드 판매량이 온도에 따라 달라지는데 이때 온도를 독립변수, 판매량을 종속변수로 하는 모델을 만들어 봅니다.)
3. 데이터로 모델을 학습합니다.
4. 모델을 이용합니다.
실습 도구 |
https://colab.research.google.com/
실습은 코랩을 이용해서 진행하겠습니다.
과거 데이터 준비 |
###########################
# 라이브러리 사용
import pandas as pd
###########################
# 파일로부터 데이터 읽어오기
파일경로 = 'https://raw.githubusercontent.com/blackdew/tensorflow1/master/csv/lemonade.csv'
레모네이드 = pd.read_csv(파일경로)
pandas 라이브러리를 사용하기 위해 pandas를 import 합니다.
파일경로를 설정 후 레모네이드 데이터를 읽어 옵니다(판다스에서 csv 파일을 읽어 오는 명력은 read_csv)
###########################
# 데이터의 모양확인
print(레모네이드.shape)
###########################
# 데이터 확인
print(레모네이드)
데이터 모양을 확인하면 다음과 같습니다.
(6, 2)
이 데이터를 출력 해 보면 다음과 같이 생긴 것을 확인 할 수 있습니다.
즉 6개의 행과 2개의 열이 있는 표 이며 데이터 모양이 (6,2) 로 나오는 것을 확인 할 수 있습니다.
따라서 (6,2) 의 의미는 6개의 행과 2개의 열로 구성된 데이터 라는 것을 의미합니다.
또한 위의 데이터에서 온도는 독립변수,판매량은 종속변수라는 것을 찾을 수 있습니다.
데이터에서 칼럼 이름을 확인해 봅시다.
###########################
# 데이터 칼럼이름 확인
print(레모네이드.columns)
pandas 의 columns 를 출력하면 해당 데이터의 칼럼 이름을 확인할 수 있습니다.
Index(['온도', '판매량'], dtype='object')
이러한 데이터를 독립변수와 종속변수로 분리 하여 봅시다.
# 종속변수, 독립변수
독립 = 레모네이드[['온도']]
종속 = 레모네이드[['판매량']]
print(독립.shape, 종속.shape)
이렇게 분리한 변수로 모델을 만들어 봅시다.
import tensorflow as tf
# 모델을 만듭니다.
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')
여기서 tf.keras 는 딥러닝 오픈소스 중에서 텐서플로의 케라스를 사용합니다.
tf.keras.layers.Input(shape=[1]) 의 의미는 케라스의 독립변수 형태가 온도 1개의 열로 구성이 되어 있는 모양의 데이터라는 것을 의미합니다.
Y = tf.keras.layers.Dense(1)(X) 은 1개의 출력뉴런을 의미합니다.
model.compile(loss='mse') 에서 loss 는 손실 함수를 의미하며 손실 함수는 다시 다루어 보겠습니다.
mse 는 Mean_Squared_error 이라는 의미로 예측한 값과 실제값 사이의 평균제곱오차를 정의하는 방법입니다. 제곱으로 인해서 오차가 양수이든 음수이든 누적값이 증가 되는 원리입니다.
데이터로 모델을 학습(FIT) 합니다.
model.fit(독립,종속,epochs=1000)
epochs=1000 은 1000번을 학습시킨다는 의미입니다.
모델을 이용합니다.
print("Predictions: ",model.predict([[15]]))
독립변수 15도가 들어갔을때 종속변수 판매량이 몇개인지 예측해 보는 명령입니다.
전체 코드는 다음과 같습니다.
###########################
# 라이브러리 사용
import tensorflow as tf
import pandas as pd
###########################
# 데이터를 준비합니다.
파일경로 = 'https://raw.githubusercontent.com/blackdew/tensorflow1/master/csv/lemonade.csv'
레모네이드 = pd.read_csv(파일경로)
레모네이드.head()
# 종속변수, 독립변수
독립 = 레모네이드[['온도']]
종속 = 레모네이드[['판매량']]
print(독립.shape, 종속.shape)
###########################
# 모델을 만듭니다.
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=1000, verbose=0)
model.fit(독립, 종속, epochs=10)
###########################
# 모델을 이용합니다.
print(model.predict(독립))
print(model.predict([[15]])) #15도라면 몇개가 판매 될지 예측해 보자.
데이터를 준비하고 -> 모델의 구조를 만들고 -> 모델을 학습하고 -> 모델을 이용하는 개념을 가장 잘 쉽게 설명이 되어 있는 강좌가 바로 생활코딩의 강좌였던 것 같네요.
이렇게 데이터 준비하고,모델의 구조를 만들고, 모델을 학습하고, 모델을 이용하는 개념만 이해해도 머신러닝 공부하는 진입장벽이 많이 낮아지는 것을 느꼈습니다.
<출처>
생활코딩 - https://opentutorials.org/course/4570/28974
'강의자료 > 머신러닝' 카테고리의 다른 글
[딥러닝실습] 히든레이어 생성 실습 (13) | 2022.08.05 |
---|---|
[딥러닝실습] pandas와 tensorflow를 이용한 아이리스 품종 분류 (5) | 2022.07.12 |
[딥러닝파이썬] 02-5.파이썬의 Pandas를 다뤄 보자. (8) | 2022.06.08 |
[딥러닝파이썬] 02-4.파이썬의 Pandas를 다뤄 보자. (11) | 2022.05.24 |
[딥러닝파이썬] 02-3.파이썬의 Pandas를 다뤄 보자. (7) | 2022.05.19 |