728x90
[개발/머신러닝] - [생활코딩/머신러닝야학] 레몬네이드 판매량 예측(1) - pandas |
[개발/머신러닝] - [생활코딩/머신러닝야학] 레몬네이드 판매량 예측(2) - neural network |
[개발/머신러닝] - [생활코딩/머신러닝야학] 보스턴 집값 예측 |
[개발/머신러닝] - [생활코딩/머신러닝야학] 아이리스 품종 분류 |
- Input Layer- 데이터를 입력받는 계층(입력 계층)
- Hidden Layer - 입력 계층과 출력 계층 사이에 하나 이상의 계층이 끼어 있는 계층(은닉 계층)
- Output Layer - 결과값을 만들어 내는 계층(출력 계층)
- 이런 구조를 [딥러닝-인공신경망]이라 한다.
*실습
1. 모델 구조 확인은 model.summary()를 통해 할 수 있다.
2. 히든 레이어에서 사용되는 활성화 함수 'swish' 최근 발표된 가장 성능이 좋은 활성화 함수이다.(하지만 버전 상의 문제로 'relu'으로 대체
3. 출력층에서 입력되는 값은 입력층의 값(x)이 아니라 히든 레이어층의 값(H)이다.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 라이브러리 사용
import tensorflow as tf # pip install --upgrade tensorflow
import pandas as pd # pip install pandas
#1. 과거의 데이터 준비
iris = pd.read_csv('https://raw.githubusercontent.com/blackdew/tensorflow1/master/csv/iris.csv')
print(iris.head())
# 원샷인코딩
iris_incoding_ = pd.get_dummies(iris)
print(iris_incoding_.head())
print(iris_incoding_.columns)
# 독립변수, 종속변수
independent_var = iris_incoding_[['꽃잎길이', '꽃잎폭', '꽃받침길이', '꽃받침폭']] #독립변수
dependent_var = iris_incoding_[['품종_setosa', '품종_versicolor','품종_virginica']] #종속변수
print('iris 독립변수 = {}, 종속변수 = {}\n'.format(independent_var.shape ,dependent_var.shape))
independent_var_row = independent_var.shape[0] # 독립변수 행(row)
independent_var_col = independent_var.shape[1] # 독립변수 열(col)
dependent_var_row = dependent_var.shape[0] # 종속변수 행(row)
dependent_var_col = dependent_var.shape[1] # 종속변수 열(col)
#2. 모델의 구조를 만듬(모델생성) -- 멀티레이어 구조
X = tf.keras.layers.Input(shape=[4])# 독립변수의 컬럼개수
# 히든레이어를 3층을 쌓았다.(은닉층)
H = tf.keras.layers.Dense(8, activation="relu")(X)# 히든레이어, 입력층(input)으로 부터 값을 받아 8개의 노드를 생성.
H = tf.keras.layers.Dense(8, activation="relu")(H)# 히튼레이어, 입력값으로 앞의 히든레이어 값을 받아 8개의 노드를 생성.
H = tf.keras.layers.Dense(8, activation="relu")(H)
Y = tf.keras.layers.Dense(3, activation='softmax')(H)# 종속변수의 컬럼개수, 활성화함수 = sottmax 0~1사이의 비율로 결과 출력
model = tf.keras.models.Model(X, Y) # 모델 생성
model.compile(loss='categorical_crossentropy',metrics=['accuracy']) # 모델이 학습할 방법
# loss 외에도 정확도가 주요 평가 지표 정화도(accuracy)
# 모델 구조 확인
model.summary()
# 3. 데이터로 모델을 학습(FIT)
model.fit(independent_var, dependent_var, epochs=10) # epochs = 전체 데이터를 몇번반복 학습할 것인지를 결정해 주는 숫자
model.fit(independent_var, dependent_var, epochs=100, verbose=0) # verbose =0 출력(로그) 표시안함
# 4. 모델을 이용
print('**** predict ****')
print(model.predict(independent_var[5:10])) #독립변수 예측값 확인 [5~10개만]
print('******check result(test)********')# 종속변수 확인
print(dependent_var[5:10]) # 종속변수결과 출력하여 예측한 값이 맞는 지 확인
print('************************************')
# 맨 마지막 데이터 5개
print('**** predict ****')
print(model.predict(independent_var[-5:]))
print('******check result(test)********')
print(dependent_var[-5:])
# 모델의 수식 확인
# print(model.get_weights())
점점 재미있어지는 머신러닝😎 층을 많이 쌓는다고 좋은 건 아닌것 같다. 개인 적으로 좀 연구해보고 기록해야겠다.
opentutorials.org/course/4570/28988
728x90
'개발 > 머신러닝' 카테고리의 다른 글
[Google Colab Pro] 코랩 구독 하는 방법 (0) | 2022.06.28 |
---|---|
[생활코딩/머신러닝야학] 데이터 및 모델을 위한 팁(부록) (0) | 2021.01.21 |
[생활코딩/머신러닝야학] 아이리스 품종 분류 (0) | 2021.01.13 |
[생활코딩/머신러닝야학] 보스턴 집값 예측 (0) | 2021.01.12 |
[생활코딩/머신러닝야학] 레몬네이드 판매량 예측(2) - neural network (0) | 2021.01.11 |