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)
반응형
'머신러닝딥러닝 > 딥러닝' 카테고리의 다른 글
딥러닝(Deep Learning) #15 - RNN (0) | 2022.04.15 |
---|---|
딥러닝(Deep Learning) #14 - CNN (0) | 2022.04.15 |
딥러닝(Deep Learning) #12 베스트 모델 구하기 (0) | 2022.04.14 |
딥러닝(Deep learning) #10 다중 분류 (0) | 2022.04.13 |
딥러닝(Deep learning) #9 데이터 분석 & 피마 인디언 당뇨병 예측 (0) | 2022.04.13 |
댓글