from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
X_train.shape, y_train.shape
((5469, 18), (5469,))
# 모델 생성
model = Sequential()
model.add(Dense(64, activation='relu'), input_shape=(18,)) # 첫 번째 Hidden Layer, 64개의 뉴런
model.add(Dense(64, activation='relu')) # 두 번째 Hidden Layer , 64개의 뉴런
model.add(Dense(1)) # 출력층, 회귀 문제이므로 활성화 함수 없음
# 모델 컴파일
model.compile(optimizer='adam', loss='mean_squared_error')
# 모델 학습
history = model.fit(X_train, y_train, epochs=100, batch_size=32, validation_data=(X_val, y_val))
import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics import mean_squared_error
# 학습 및 검증 손실(MSE) 시각화
plt.plot(history.history['loss'], label='Train MSE')
plt.plot(history.history['val_loss'], label='Validation MSE')
plt.xlabel('Epoch')
plt.ylabel('Mean Squared Error')
plt.legend()
plt.show()
# 검증 데이터로 예측 수행
y_pred_train = model.predict(X_train)
y_pred_val = model.predict(X_val)
# 학습 MSE 계산
train_mse = mean_squared_error(y_train, y_pred_train)
print(f'Train MSE: {train_mse}')
# 검증 MSE 계산
val_mse = mean_squared_error(y_val, y_pred_val)
print(f'Validation MSE: {val_mse}')
* 예제: 회귀 문제에서 MSE와 MAE를 사용하는 예제
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.losses import MeanSquaredError
from tensorflow.keras.metrics import MeanAbsoluteError
# 모델 생성
model = Sequential()
model.add(Dense(64, activation='relu', input_shape=(10,))) # input_shape 사용
model.add(Dense(64, activation='relu'))
model.add(Dense(1)) # 출력층 (회귀 문제이므로 출력 뉴런은 1개)
# 모델 컴파일
model.compile(optimizer='adam',
loss=MeanSquaredError(), # 손실 함수로 MSE 사용
metrics=[MeanAbsoluteError()]) # MAE를 평가 지표로 사용
# 데이터 준비 (임의의 데이터)
import numpy as np
X_train = np.random.rand(1000, 10)
y_train = X_train.sum(axis=1) + np.random.normal(0, 0.1, 1000)
# 모델 학습
history = model.fit(X_train, y_train, epochs=10, batch_size=32)
# 학습 과정 시각화
import matplotlib.pyplot as plt
# 손실 시각화
plt.plot(history.history['loss'], label='Train Loss (MSE)')
plt.plot(history.history['mean_absolute_error'], label='Train MAE')
plt.xlabel('Epoch')
plt.ylabel('Loss/MAE')
plt.legend()
plt.show()