본문 바로가기
머신러닝딥러닝/딥러닝

딥러닝(deel learning) #13 - 선형회귀 적용하기

by orangecode 2022. 4. 14.
728x90

선형회귀

 

수치를 예측하는 선형회귀

 

라이브러리 & 데이터 확인하기

# 라이브러리 설정
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from sklearn.model_selection import train_test_split

# seed 값 설정
seed = 0
np.random.seed(seed)
tf.set_random_seed(seed)

# 데이터 확인 및 분석
data = pd.read_csv("C:/Users/kwonk/juno1412-1/juno1412/DL/모두의 딥러닝/dataset/housing.csv", delim_whitespace=True, header=None)

- 주택가격 csv 읽어오기

- delim_whitespace = True 인수 -> 공백으로 구분된 값을 읽어오는 것.

 

 

데이터셋 설정 & train_test_split

# 데이터셋 설정
dataset = data.values # data.values = index를 제외한 나머지 칼럼들의 값
X = dataset[:, 0:13]
Y = dataset[:, 13]

# 훈련셋, 테스트셋 구분
x_train, x_test, y_train, y_test = train_test_split(X, Y, test_size=0.25, random_state=seed)

data.values() 함수 = index를 제외한 나머지 칼럼들의 값을 의미

 

 

딥러닝 모델 구축 & 컴파일 & 실행

# 딥러닝 모델 구축
model = Sequential()
model.add(Dense(30, input_dim=13, activation='relu'))
model.add(Dense(6, activation='relu'))
model.add(Dense(1)) # 선형회귀 데이터는 마지막에 참/거짓 구분 불필요

# 딥러닝 모델 컴파일 & 실행
model.compile(loss='mean_squared_error', optimizer='adam')
model.fit(x_train, y_train, epochs=200, batch_size = 10)

오차함수 : 평균제곱오차(mean_squared_error) 사용,

최적화함수 : adam 사용

 

 

결론도출 : 실제값 vs 예측값

# 결론 도출
# 실제값 VS 예측값
Y_prediction = model.predict(x_test).flatten()
for i in range(10):
    label = y_test[i]
    prediction = Y_prediction[i]
    print("실제가격: {:.3f}, 예상가격: {:.3f}".format(label, prediction))

model.predict() 함수 : 학습된 모델을 기반으로 이미지, 데이터에 대한 예측이 가능하게 하는 함수

 

model.predict.flatten() 

 - flatten() 함수 : 데이터 차원이 몇차원이든 모두 1차원으로 바꿔주는 함수

 - model.predict.flatten() : 1차원 함수화된 학습된 모델을 기반으로 이미지, 데이터에 대한 예측이 가능한 함수

 

print.format(label, prediction))

= {순서1} {순서2} 문자열.format(출력값1,출력값2)

반응형

댓글