데이터분석/Tensorflow

keras : 단순선형회귀 모델

이규승 2022. 5. 19. 01:37
728x90
import tensorflow as tf
from keras.models import Sequential
from keras.layers import Dense
from keras import optimizers
import numpy as np
# x_data, y_data 설정하고 상관계수 확인
x_data = [1.,2.,3.,4.,5.]
y_data = [1.2,2.0,3.0,3.5,5.5]
print('상관계수 : ', np.corrcoef([x_data, y_data]))
# 모델 입력, 컴파일
model = Sequential()
model.add(Dense(units = 1, input_dim = 1, activation = 'linear' ))

model.compile(optimizer = 'sgd', loss='mse', metrics= ['mse'])
model.fit(x_data, y_data, batch_size = 1, epochs= 100, verbose=2)
print(model.evaluate(x_data, y_data))

Dense의 주요 인자

units : 출력 뉴런의 수를 설정

input_dim : 입력 뉴런의 수를 설정

Activation : 활성화 함수를 설정 (linear, sigmoid, softmax, relu

 

compile의 주요 인자

optimizer (정규화기) : 최적화 알고리즘 설정 (adam, sgd, rmsprop, adagrad)

loss function (손실함수) : mse, categorical_crossentropy, binary_crossentropy

metric (평가지표) : 분류에서는 accuracy, 회귀에서는 mse, rmse, r2, mae, mspe, mape, msle

 

epochs : 학습 횟수

batch_size : 1epchs를 batch_size만큼 쪼개서 학습한다?

verbose : 상세한 정보를 내보낼것인가?

# 모델 예측, 설명력 확인
pred = model.predict(x_data)
print('pred:', pred.flatten())
print('read:', y_data)

from sklearn.metrics import r2_score
print('설명력:',r2_score(y_data, pred))

# 새로운 값 예측
new_x = [3.5, 9.0]
print('새로운 에측 결과:', model.predict(new_x).flatten())
# 예측 값 시각화
import matplotlib.pyplot as plt
plt.plot(x_data, y_data, 'ro', label='real')
plt.plot(x_data, pred, 'b-', label='pred')
plt.xlabel('w')
plt.ylabel('cost')
plt.show()

728x90

'데이터분석 > Tensorflow' 카테고리의 다른 글

TensorBoard  (0) 2022.05.19
단순선형회귀모델 세 가지 방법으로 작성  (0) 2022.05.19
Tensorflow : 단순선형회귀 모델  (0) 2022.05.19
Tensorflow 와 Keras  (0) 2022.05.19
Tensorflow Basic  (0) 2022.05.18