1.회귀문제_2_보스턴
- -
layout: single
title: "jupyter notebook 변환하기!"
categories: coding
tag: [python, blog, jekyll]
toc: true
author_profile: false
보스턴 집값 예측 문제
import warnings
warnings.filterwarnings(action='ignore')
1. scikit-learn 패키지는 머신러닝 교육을 위한 최고의 파이썬 패키지입니다.
scikit-learn를 별칭(alias) sk로 임포트하는 코드를 작성하고 실행하세요.
# 여기에 답안코드를 작성하세요.
import sklearn as sk
2. Pandas는 데이터 분석을 위해 널리 사용되는 파이썬 라이브러리입니다.
Pandas를 사용할 수 있도록 별칭(alias)을 pd로 해서 불러오세요.
# 여기에 답안코드를 작성하세요.
import pandas as pd
3. 모델링을 위해 분석 및 처리할 데이터 파일을 읽어오려고 합니다.
Pandas함수로 데이터 파일을 읽어 데이터프레임 변수명 df에 할당하는 코드를 작성하세요.
path = 'https://raw.githubusercontent.com/khw11044/csv_dataset/master/boston.csv'
df = pd.read_csv(path)
df.head()
crim | zn | indus | chas | nox | rm | age | dis | rad | tax | ptratio | black | lstat | medv | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0.00632 | 18.0 | 2.31 | 0 | 0.538 | 6.575 | 65.2 | 4.0900 | 1 | 296 | 15.3 | 396.90 | 4.98 | 24.0 |
1 | 0.02731 | 0.0 | 7.07 | 0 | 0.469 | 6.421 | 78.9 | 4.9671 | 2 | 242 | 17.8 | 396.90 | 9.14 | 21.6 |
2 | 0.02729 | 0.0 | 7.07 | 0 | 0.469 | 7.185 | 61.1 | 4.9671 | 2 | 242 | 17.8 | 392.83 | 4.03 | 34.7 |
3 | 0.03237 | 0.0 | 2.18 | 0 | 0.458 | 6.998 | 45.8 | 6.0622 | 3 | 222 | 18.7 | 394.63 | 2.94 | 33.4 |
4 | 0.06905 | 0.0 | 2.18 | 0 | 0.458 | 7.147 | 54.2 | 6.0622 | 3 | 222 | 18.7 | 396.90 | 5.33 | 36.2 |
결측치 확인
# 여기에 답안코드를 작성하세요.
print(df.isnull().sum())
crim 0 zn 0 indus 0 chas 0 nox 0 rm 0 age 0 dis 0 rad 0 tax 0 ptratio 0 black 0 lstat 0 medv 0 dtype: int64
데이터 설명
crim: 자치시(Town)별 1인당 범죄율
zn: 25,000 평방피트를 초과하는 거주지역 비율
indus: 비소매상업지역이 점유하고 있는 토지 비율
chas: 찰스강에 대한 더미 변수 (= 1 강 경계에 위치; 0 나머지)
nox: 10ppm당 농축 일산화질소
rm: 주택 1가구당 평균 방 개수
age: 1940년 이전에 건축된 소유주택 비율
dis: 5개 보스턴 직업센터까지 접근성 지수
rad: 방사형 도로까지의 접근성 지수
tax: 10,000달러 당 재산세율
ptratio: 자치시(Town)별 학생/교사 비율
black: 1000(Bk - 0.63)^2, 여기서 Bk는 자치시별 흑인의 비율을 의미
lstat: 모집단 하위 계층의 비율(%)
medv: 본인 소유 주택가격(중앙값) (단위:$1,000)-> 예측 타겟
다음 문항을 풀기 전에 아래 코드를 실행하세요.
# 여기에 답안코드를 작성하세요.
import seaborn as sns
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'Malgun Gothic'
4. rad(방사형 도로까지의 접근성 지수)에 대한 분포도를 알아 보려고 합니다.
rad(방사형 도로까지의 접근성 지수)에 대해 countplot그래프로 만들고 아래 가이드에 따라 답하세요.
Seaborn을 활용하세요.
rad(방사형 도로까지의 접근성 지수)에 대해서 분포를 보여주는 countplot그래프 그리세요.
# 여기에 답안코드를 작성하세요.
sns.countplot(x='rad', data=df) # rad
plt.show()
5. medv(주택가격)에 대한 분포도를 알아 보려고 합니다.
medv(주택가격)에 대해 밀도함수와 히스토그램을 만들고 아래 가이드에 따라 답하세요.
Seaborn을 활용하세요.
medv(주택가격)에 대해서 분포를 보여주는 histplot그래프 그리세요.
30개의 bar가 보이게 그래프를 그리세요
# medv 값 시각화
sns.histplot(x='medv', data = df, bins=30, kde = True)
plt.show()
6.rm(평균 방 개수)과 medv(주택가격)의 분포를 같이 확인하려고 합니다.
.rm(평균 방 개수)과 medv(주택가격)을 jointplot 그래프로 만드세요.
Seaborn을 활용하세요.
X축에는 rm을 표시하고 Y축에는 medv을 표시하세요.
# 여기에 답안코드를 작성하세요.
import seaborn as sns
import matplotlib.pyplot as plt
import scipy.stats as st
graph = sns.jointplot(x=df['rm'], y=df['medv'], kind='scatter')
graph.set_axis_labels(xlabel='rm', ylabel='medv')
plt.show()
# 방이 많을 수록 주택가격이 높다
7.lstat(하위 계층의 비율)과 medv(주택가격)의 분포를 같이 확인하려고 합니다.
.lstat(하위 계층의 비율)과 medv(주택가격)을 jointplot 그래프로 만드세요.
Seaborn을 활용하세요.
X축에는 lstat을 표시하고 Y축에는 medv을 표시하세요.
# 여기에 답안코드를 작성하세요.
import seaborn as sns
import matplotlib.pyplot as plt
import scipy.stats as st
graph = sns.jointplot(x=df['lstat'], y=df['medv'], kind='scatter')
graph.set_axis_labels(xlabel='lstat', ylabel='medv')
plt.show()
# 하위계측의 비율이 높을 수록 주택가격이 낮아진다. 비슷한계층의 사람들끼리 같이 산다
8. 각 컬럼의 상관관계를 알아 보려고 합니다.
상관관계 히트맵을 그리세요.
numeric_only를 통해 숫자형 컬럼들만 나타내세요
cmap은 Blues로 하세요
cbar는 보이지 않습니다
소수점은 소수점 3번째 자리 까지 나타내세요
# 여기에 답안코드를 작성하세요.
import seaborn as sns
import matplotlib.pyplot as plt
# 상관관계 시각화
plt.figure(figsize=(12,12))
sns.heatmap(df.corr(numeric_only=True),
annot=True,
cmap='Blues',
cbar=False, # 옆에 칼라 바 제거
square=True,
fmt='.3f', # 소수점
annot_kws={'size':9}
)
plt.show()
9. 훈련과 검증 각각에 사용할 데이터셋을 분리하려고 합니다.
medv(주택가격) 컬럼을 label값 y로, 나머지 컬럼을 feature값 X로 할당한 후 훈련데이터셋과 검증데이터셋으로 분리하세요.
대상 데이터프레임: df
훈련과 검증 데이터셋 분리
훈련 데이터셋 label: y_train, 훈련 데이터셋 Feature: X_train
검증 데이터셋 label: y_valid, 검증 데이터셋 Feature: X_valid
훈련 데이터셋과 검증데이터셋 비율은 80:20
random_state: 42
Scikit-learn의 train_test_split 함수를 활용하세요.
스케일링 수행
sklearn.preprocessing의 MinMaxScaler 함수 사용
훈련데이터셋의 Feature는 MinMaxScaler의 fit_transform 함수를 활용하여 X_train 변수로 할당
검증데이터셋의 Feature는 MinMaxScaler의 transform 함수를 활용하여 X_valid 변수로 할당
# 여기에 답안코드를 작성하세요.
from sklearn.model_selection import train_test_split
target = 'medv'
x = df.drop(target, axis=1)
y = df[target]
X_train, X_valid, y_train, y_valid = train_test_split(x,y, test_size=0.2, random_state=42)
print(X_train.shape, X_valid.shape, y_train.shape, y_valid.shape)
(404, 13) (102, 13) (404,) (102,)
from sklearn.preprocessing import MinMaxScaler, StandardScaler, RobustScaler
scaler = MinMaxScaler()
X_train_s = scaler.fit_transform(X_train)
X_valid_s = scaler.transform(X_valid)
10. medv(주택가격)을 예측하는 머신러닝 모델을 만들려고 합니다.
아래 가이드에 따라 다음 모델을 만들고 학습을 진행하세요.
의사결정나무(Decisiontree)
트리의 최대 깊이: 5로 설정
노드를 분할하기 위한 최소한의 샘플 데이터 수(min_sample_split): 3으로 설정
random_state: 120으로 설정
의사결정나무(decision tree) 모델을 dt 변수에 저장해주세요.
랜덤포레스트(RandomForest)
트리의 최대 깊이: 5로 설정
노드를 분할하기 위한 최소한의 샘플 데이터 수(min_sample_split): 3으로 설정
random_state: 120으로 설정
랜덤포레스트(RandomForest) 모델을 rf 변수에 저장해주세요.
선형회쉬(LinearRegression)
- 선형회쉬(LinearRegression)모델을 lr 변수에 저장해주세요.
K최근접(KNeighborsRegressor)
가장 가까운 이웃의 'K'개의 값(n_neighbors): 5로 설정
weights를 'distance'로 설정 # distance와 uniform이 있음
K최근접(KNeighborsRegressor)모델을 kr 변수에 저장해주세요.
from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import RandomForestRegressor
from sklearn.linear_model import LinearRegression
from sklearn.neighbors import KNeighborsRegressor
from xgboost import XGBRegressor
from lightgbm import LGBMRegressor
dt = DecisionTreeRegressor(max_depth=5, min_samples_split=3, random_state=120)
rf = RandomForestRegressor(max_depth=5, min_samples_split=3, random_state=120)
lr = LinearRegression()
kr = KNeighborsRegressor(n_neighbors=5, weights='distance')
# XGBRegressor(max_depth=5, random_state=120)
# LGBMRegressor(random_state=120,verbose=-1)
dt.fit(X_train_s, y_train)
rf.fit(X_train_s, y_train)
lr.fit(X_train_s, y_train)
kr.fit(X_train_s, y_train)
KNeighborsRegressor(weights='distance')In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
KNeighborsRegressor(weights='distance')
11. 위 모델들의 성능을 평가하려고 합니다.
예측 결과의 mae(Mean Absolute Error)를 구하세요.
성능 평가는 검증 데이터셋 (X_valid, y_valid)을 활용하세요.
의사결정나무(Decisiontree) 모델
11번 문제에서 만든 의사결정나무(decision tree) 모델로 y값을 예측(predict)하여 y_pred_dt에 저장하세요.
검증 정답(y_valid)과 예측값(y_pred_dt)의 mae(Mean Absolute Error)를 구하고 dt_mae 변수에 저장하세요.
랜덤포레스트(RandomForest) 모델
11번 문제에서 만든 랜덤포레스트(RandomForest) 모델로 y값을 예측(predict)하여 y_pred_rf에 저장하세요.
검증 정답(y_valid)과 예측값(y_pred_rf)의 mae(Mean Absolute Error)를 구하고 rf_mae 변수에 저장하세요.
선형회쉬(LinearRegression) 모델
11번 문제에서 만든 선형회쉬(LinearRegression) 모델로 y값을 예측(predict)하여 y_pred_lr에 저장하세요.
검증 정답(y_valid)과 예측값(y_pred_lr)의 mae(Mean Absolute Error)를 구하고 lr_mae 변수에 저장하세요.
K최근접(KNeighborsRegressor) 모델
11번 문제에서 만든 K최근접(KNeighborsRegressor) 모델로 y값을 예측(predict)하여 y_pred_kr에 저장하세요.
검증 정답(y_valid)과 예측값(y_pred_kr)의 mae(Mean Absolute Error)를 구하고 kr_mae 변수에 저장하세요.
훈련시킨 모델들에 대한 mae 성능평가 결과를 확인하여 가장 성능이 좋은 모델 이름을 답안12 변수에 저장하세요
- 예. 답안12 = 'Decisiontree' 혹은 'RandomForest' 혹은 'LinearRegression' 혹은 'KNeighborsRegressor'
# 여기에 답안코드를 작성하세요.
from sklearn.metrics import mean_absolute_error
y_pred_dt = dt.predict(X_valid_s)
dt_mae = mean_absolute_error(y_valid, y_pred_dt)
print('dt MAE:', dt_mae)
y_pred_rf = rf.predict(X_valid_s)
rf_mae = mean_absolute_error(y_valid, y_pred_rf)
print('rf MAE:', rf_mae)
y_pred_lr = lr.predict(X_valid_s)
lr_mae = mean_absolute_error(y_valid, y_pred_lr)
print('lr MAE:', lr_mae)
y_pred_kr = kr.predict(X_valid_s)
kr_mae = mean_absolute_error(y_valid, y_pred_kr)
print('kr MAE:', kr_mae)
dt MAE: 2.271882306528849 rf MAE: 2.251120778009001 lr MAE: 3.189091965887846 kr MAE: 2.510026683029674
답안12 = 'RandomForest'
다음 문항을 풀기 전에 아래 코드를 실행하세요.
import tensorflow as tf
from tensorflow.keras.models import Sequential, load_model, Model
from tensorflow.keras.layers import Dense, Activation, Dropout, BatchNormalization
from tensorflow.keras.callbacks import EarlyStopping, ModelCheckpoint
from tensorflow.keras.utils import to_categorical
tf.random.set_seed(1)
12. medv(주택가격)을 예측하는 딥러닝 모델을 만들려고 합니다.
아래 가이드에 따라 모델링하고 학습을 진행하세요.
Tensoflow framework를 사용하여 딥러닝 모델을 만드세요.
히든레이어(hidden layer) 2개이상으로 모델을 구성하세요.
dropout 비율 0.2로 Dropout 레이어 1개를 추가해 주세요.
손실함수는 MSE(Mean Squared Error)를 사용하세요.
하이퍼파라미터 epochs: 100, batch_size: 16으로 설정해주세요.
각 에포크마다 loss와 metrics 평가하기 위한 데이터로 X_valid, y_valid 사용하세요.
학습정보는 history 변수에 저장해주세요
# 여기에 답안코드를 작성하세요.
model = Sequential()
nfeatures = X_train_s.shape[1]
model.add(Dense(128, activation='relu', input_shape=(nfeatures,)))
model.add(Dense(64, activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(16, activation='relu'))
model.add(Dense(1))
model.compile(optimizer='adam', loss='mse',metrics=['mae','mse'])
# es = EarlyStopping(monitor='val_loss', patience=4, mode='min', verbose=1) # val_loss
history = model.fit(X_train_s, y_train,
batch_size=16,
epochs=100,
# callbacks=[es],
validation_data=(X_valid_s, y_valid),
verbose=1).history
Epoch 1/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m1s[0m 6ms/step - loss: 581.3461 - mae: 22.4192 - mse: 581.0137 - val_loss: 406.7110 - val_mae: 17.7125 - val_mse: 396.0434 Epoch 2/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 377.9587 - mae: 16.9337 - mse: 377.7883 - val_loss: 133.7331 - val_mae: 8.7588 - val_mse: 131.2706 Epoch 3/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 129.4754 - mae: 8.9604 - mse: 129.1856 - val_loss: 97.3043 - val_mae: 7.2660 - val_mse: 93.5860 Epoch 4/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 86.9674 - mae: 7.0783 - mse: 86.7783 - val_loss: 69.7716 - val_mae: 5.8654 - val_mse: 63.1726 Epoch 5/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 65.4889 - mae: 5.9759 - mse: 65.5135 - val_loss: 57.8452 - val_mae: 4.9258 - val_mse: 47.7531 Epoch 6/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 55.8520 - mae: 5.4012 - mse: 55.8956 - val_loss: 55.0896 - val_mae: 4.7147 - val_mse: 42.9055 Epoch 7/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 52.0318 - mae: 5.3248 - mse: 52.1155 - val_loss: 52.1348 - val_mae: 4.3912 - val_mse: 38.7314 Epoch 8/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 48.8066 - mae: 4.9873 - mse: 48.8260 - val_loss: 48.5192 - val_mae: 4.2499 - val_mse: 35.5343 Epoch 9/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 43.2552 - mae: 4.8236 - mse: 43.3311 - val_loss: 45.5017 - val_mae: 4.0479 - val_mse: 32.3914 Epoch 10/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 41.5531 - mae: 4.6710 - mse: 41.6320 - val_loss: 42.3574 - val_mae: 3.8578 - val_mse: 29.7936 Epoch 11/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 37.1838 - mae: 4.4320 - mse: 37.2287 - val_loss: 39.8835 - val_mae: 3.6405 - val_mse: 27.3228 Epoch 12/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 33.2582 - mae: 4.1985 - mse: 33.2990 - val_loss: 37.8571 - val_mae: 3.5489 - val_mse: 25.6078 Epoch 13/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 31.6612 - mae: 4.1749 - mse: 31.7037 - val_loss: 35.9582 - val_mae: 3.2557 - val_mse: 23.5585 Epoch 14/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 30.2471 - mae: 4.0640 - mse: 30.2919 - val_loss: 35.5152 - val_mae: 2.9820 - val_mse: 22.6518 Epoch 15/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 27.1462 - mae: 3.6470 - mse: 27.1755 - val_loss: 33.9363 - val_mae: 3.0665 - val_mse: 22.1547 Epoch 16/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 26.6643 - mae: 3.7016 - mse: 26.7111 - val_loss: 35.0317 - val_mae: 2.8738 - val_mse: 22.0152 Epoch 17/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 25.0354 - mae: 3.5362 - mse: 25.0281 - val_loss: 33.2235 - val_mae: 2.8723 - val_mse: 21.1061 Epoch 18/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 28.9014 - mae: 3.7828 - mse: 28.9284 - val_loss: 32.8713 - val_mae: 2.8369 - val_mse: 20.6260 Epoch 19/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 25.6095 - mae: 3.5903 - mse: 25.6545 - val_loss: 32.0770 - val_mae: 2.8405 - val_mse: 20.5127 Epoch 20/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 25.0120 - mae: 3.6047 - mse: 25.0488 - val_loss: 32.1595 - val_mae: 2.7928 - val_mse: 20.3474 Epoch 21/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 24.7086 - mae: 3.5056 - mse: 24.7404 - val_loss: 32.0058 - val_mae: 2.7461 - val_mse: 19.9734 Epoch 22/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 25.9775 - mae: 3.5191 - mse: 26.0109 - val_loss: 31.9579 - val_mae: 2.7202 - val_mse: 19.8672 Epoch 23/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 21.8674 - mae: 3.2920 - mse: 21.9076 - val_loss: 31.4800 - val_mae: 2.7122 - val_mse: 19.6010 Epoch 24/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 24.9450 - mae: 3.5034 - mse: 24.9739 - val_loss: 30.9984 - val_mae: 2.6950 - val_mse: 19.2016 Epoch 25/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 22.9506 - mae: 3.2697 - mse: 22.9715 - val_loss: 30.6421 - val_mae: 2.7501 - val_mse: 19.1585 Epoch 26/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 26.2436 - mae: 3.4536 - mse: 26.1650 - val_loss: 30.5185 - val_mae: 2.7091 - val_mse: 18.9811 Epoch 27/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 23.6579 - mae: 3.4834 - mse: 23.6793 - val_loss: 30.5262 - val_mae: 2.6602 - val_mse: 18.7539 Epoch 28/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 20.0248 - mae: 3.1393 - mse: 20.0278 - val_loss: 30.2767 - val_mae: 2.6937 - val_mse: 18.7892 Epoch 29/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 24.1460 - mae: 3.3804 - mse: 24.1506 - val_loss: 29.9819 - val_mae: 2.6283 - val_mse: 18.3250 Epoch 30/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 21.4608 - mae: 3.3060 - mse: 21.4881 - val_loss: 29.7221 - val_mae: 2.6723 - val_mse: 18.3533 Epoch 31/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 26.1724 - mae: 3.5533 - mse: 26.2067 - val_loss: 28.1911 - val_mae: 2.6449 - val_mse: 17.5244 Epoch 32/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 23.4991 - mae: 3.3520 - mse: 23.5400 - val_loss: 28.3364 - val_mae: 2.5916 - val_mse: 17.3391 Epoch 33/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 21.0894 - mae: 3.2023 - mse: 21.1153 - val_loss: 28.9936 - val_mae: 2.6579 - val_mse: 17.9094 Epoch 34/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 21.7401 - mae: 3.2773 - mse: 21.7764 - val_loss: 28.3307 - val_mae: 2.6186 - val_mse: 17.4043 Epoch 35/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 22.2451 - mae: 3.2629 - mse: 22.2269 - val_loss: 27.8670 - val_mae: 2.6028 - val_mse: 17.1270 Epoch 36/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 21.2977 - mae: 3.2077 - mse: 21.3376 - val_loss: 28.0393 - val_mae: 2.5878 - val_mse: 17.1298 Epoch 37/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 21.4291 - mae: 3.2058 - mse: 21.4625 - val_loss: 26.9928 - val_mae: 2.5217 - val_mse: 16.4211 Epoch 38/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 21.8739 - mae: 3.1378 - mse: 21.8936 - val_loss: 26.9156 - val_mae: 2.5456 - val_mse: 16.4599 Epoch 39/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 21.8337 - mae: 3.2528 - mse: 21.8326 - val_loss: 27.1054 - val_mae: 2.5269 - val_mse: 16.4461 Epoch 40/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 20.5819 - mae: 3.1903 - mse: 20.6123 - val_loss: 26.8698 - val_mae: 2.5284 - val_mse: 16.3353 Epoch 41/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 20.9748 - mae: 3.2461 - mse: 21.0139 - val_loss: 27.1705 - val_mae: 2.5592 - val_mse: 16.6487 Epoch 42/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 21.4784 - mae: 3.1818 - mse: 21.5022 - val_loss: 26.1414 - val_mae: 2.4634 - val_mse: 15.8380 Epoch 43/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 22.0060 - mae: 3.2257 - mse: 22.0446 - val_loss: 24.6117 - val_mae: 2.5277 - val_mse: 15.3375 Epoch 44/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 20.6692 - mae: 3.0137 - mse: 20.7020 - val_loss: 24.6917 - val_mae: 2.5744 - val_mse: 15.5001 Epoch 45/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 19.3978 - mae: 3.2478 - mse: 19.4366 - val_loss: 25.5143 - val_mae: 2.4877 - val_mse: 15.6162 Epoch 46/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 22.5695 - mae: 3.2615 - mse: 22.5919 - val_loss: 25.1067 - val_mae: 2.4414 - val_mse: 15.2531 Epoch 47/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 17.8835 - mae: 2.9767 - mse: 17.9089 - val_loss: 23.2832 - val_mae: 2.4380 - val_mse: 14.5129 Epoch 48/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 21.2747 - mae: 3.1232 - mse: 21.2598 - val_loss: 23.5461 - val_mae: 2.4951 - val_mse: 14.7210 Epoch 49/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 19.6141 - mae: 3.0538 - mse: 19.6441 - val_loss: 23.3363 - val_mae: 2.4472 - val_mse: 14.4697 Epoch 50/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 21.1785 - mae: 3.2932 - mse: 21.2024 - val_loss: 24.0163 - val_mae: 2.4389 - val_mse: 14.6043 Epoch 51/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 21.1842 - mae: 3.1274 - mse: 21.1919 - val_loss: 23.5958 - val_mae: 2.4028 - val_mse: 14.3979 Epoch 52/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 20.6482 - mae: 3.1301 - mse: 20.6767 - val_loss: 24.3276 - val_mae: 2.4637 - val_mse: 14.8915 Epoch 53/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 16.5109 - mae: 2.8174 - mse: 16.5285 - val_loss: 22.9946 - val_mae: 2.3940 - val_mse: 14.1072 Epoch 54/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 17.4597 - mae: 3.0269 - mse: 17.4879 - val_loss: 22.0233 - val_mae: 2.4845 - val_mse: 13.9990 Epoch 55/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 19.5100 - mae: 2.9510 - mse: 19.5207 - val_loss: 22.1792 - val_mae: 2.4087 - val_mse: 13.7746 Epoch 56/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 19.8671 - mae: 3.1750 - mse: 19.8548 - val_loss: 22.2538 - val_mae: 2.3562 - val_mse: 13.5923 Epoch 57/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 17.5206 - mae: 2.7501 - mse: 17.5407 - val_loss: 21.5497 - val_mae: 2.3963 - val_mse: 13.4860 Epoch 58/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 3ms/step - loss: 16.9098 - mae: 2.8735 - mse: 16.9390 - val_loss: 21.5239 - val_mae: 2.6180 - val_mse: 14.1896 Epoch 59/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 17.7565 - mae: 2.9076 - mse: 17.7650 - val_loss: 21.0617 - val_mae: 2.3931 - val_mse: 13.2637 Epoch 60/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 17.8323 - mae: 2.8534 - mse: 17.8449 - val_loss: 20.8962 - val_mae: 2.3551 - val_mse: 12.9549 Epoch 61/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 16.9866 - mae: 2.9412 - mse: 17.0051 - val_loss: 21.8893 - val_mae: 2.4147 - val_mse: 13.4966 Epoch 62/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 18.1022 - mae: 2.8410 - mse: 18.1313 - val_loss: 21.4758 - val_mae: 2.3934 - val_mse: 13.2725 Epoch 63/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 18.0338 - mae: 2.9875 - mse: 18.0630 - val_loss: 22.5467 - val_mae: 2.3421 - val_mse: 13.4378 Epoch 64/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 17.8402 - mae: 2.8870 - mse: 17.8480 - val_loss: 21.1010 - val_mae: 2.3297 - val_mse: 12.8977 Epoch 65/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 17.9892 - mae: 2.8601 - mse: 18.0196 - val_loss: 20.8333 - val_mae: 2.3285 - val_mse: 12.7823 Epoch 66/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 20.0865 - mae: 3.0698 - mse: 20.1016 - val_loss: 20.2390 - val_mae: 2.3999 - val_mse: 12.7156 Epoch 67/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 20.8096 - mae: 3.0987 - mse: 20.8461 - val_loss: 20.8654 - val_mae: 2.3313 - val_mse: 12.7143 Epoch 68/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 16.1126 - mae: 2.8346 - mse: 16.1374 - val_loss: 20.3381 - val_mae: 2.3252 - val_mse: 12.6259 Epoch 69/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 17.8366 - mae: 2.8301 - mse: 17.8431 - val_loss: 19.8248 - val_mae: 2.2965 - val_mse: 12.3099 Epoch 70/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 16.8695 - mae: 2.8202 - mse: 16.8981 - val_loss: 20.4217 - val_mae: 2.2662 - val_mse: 12.3467 Epoch 71/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 16.6975 - mae: 3.0463 - mse: 16.7295 - val_loss: 19.8131 - val_mae: 2.3125 - val_mse: 12.2982 Epoch 72/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 15.3929 - mae: 2.8470 - mse: 15.3601 - val_loss: 20.3865 - val_mae: 2.3295 - val_mse: 12.4823 Epoch 73/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 17.1866 - mae: 2.7545 - mse: 17.2116 - val_loss: 19.5327 - val_mae: 2.2801 - val_mse: 12.1123 Epoch 74/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 16.0231 - mae: 2.8086 - mse: 16.0376 - val_loss: 19.4801 - val_mae: 2.3289 - val_mse: 12.1507 Epoch 75/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 17.5633 - mae: 2.9806 - mse: 17.5564 - val_loss: 20.6769 - val_mae: 2.3580 - val_mse: 12.6562 Epoch 76/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 14.6056 - mae: 2.6861 - mse: 14.6292 - val_loss: 19.0168 - val_mae: 2.3062 - val_mse: 11.9652 Epoch 77/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 17.9250 - mae: 2.9471 - mse: 17.9571 - val_loss: 19.3333 - val_mae: 2.2910 - val_mse: 11.8745 Epoch 78/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 16.6877 - mae: 2.8606 - mse: 16.7190 - val_loss: 19.9956 - val_mae: 2.2953 - val_mse: 12.1774 Epoch 79/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 17.3314 - mae: 2.7639 - mse: 17.3555 - val_loss: 19.8118 - val_mae: 2.3214 - val_mse: 12.2125 Epoch 80/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 16.6365 - mae: 2.9069 - mse: 16.6504 - val_loss: 21.0580 - val_mae: 2.3869 - val_mse: 13.0190 Epoch 81/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 16.2272 - mae: 2.7326 - mse: 16.2501 - val_loss: 21.1386 - val_mae: 2.3581 - val_mse: 12.8320 Epoch 82/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 3ms/step - loss: 15.8745 - mae: 2.7733 - mse: 15.8800 - val_loss: 19.1248 - val_mae: 2.3322 - val_mse: 12.0026 Epoch 83/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 17.5042 - mae: 2.8778 - mse: 17.5313 - val_loss: 20.3848 - val_mae: 2.3542 - val_mse: 12.5148 Epoch 84/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 14.3032 - mae: 2.6438 - mse: 14.3284 - val_loss: 20.2986 - val_mae: 2.3375 - val_mse: 12.4481 Epoch 85/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 18.0573 - mae: 2.8239 - mse: 18.0875 - val_loss: 19.4816 - val_mae: 2.2973 - val_mse: 12.0120 Epoch 86/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 17.1273 - mae: 2.8055 - mse: 17.1472 - val_loss: 20.3061 - val_mae: 2.3178 - val_mse: 12.3420 Epoch 87/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 15.1443 - mae: 2.6734 - mse: 15.1592 - val_loss: 19.1735 - val_mae: 2.3316 - val_mse: 11.8772 Epoch 88/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 15.6757 - mae: 2.6478 - mse: 15.7019 - val_loss: 19.1592 - val_mae: 2.2824 - val_mse: 11.8089 Epoch 89/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 17.1177 - mae: 2.9206 - mse: 17.1445 - val_loss: 19.6821 - val_mae: 2.2978 - val_mse: 12.0513 Epoch 90/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 15.9994 - mae: 2.8161 - mse: 16.0242 - val_loss: 19.2743 - val_mae: 2.2976 - val_mse: 11.8837 Epoch 91/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 14.7424 - mae: 2.7522 - mse: 14.7473 - val_loss: 19.2976 - val_mae: 2.3163 - val_mse: 11.9686 Epoch 92/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 17.1213 - mae: 2.8179 - mse: 17.1507 - val_loss: 19.8262 - val_mae: 2.3222 - val_mse: 12.2135 Epoch 93/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 15.3352 - mae: 2.7228 - mse: 15.3576 - val_loss: 18.8170 - val_mae: 2.3120 - val_mse: 11.7720 Epoch 94/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 14.2120 - mae: 2.8280 - mse: 14.1797 - val_loss: 18.6919 - val_mae: 2.3052 - val_mse: 11.7336 Epoch 95/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 15.7720 - mae: 2.7741 - mse: 15.7949 - val_loss: 18.4974 - val_mae: 2.2312 - val_mse: 11.3343 Epoch 96/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 14.4676 - mae: 2.6107 - mse: 14.4845 - val_loss: 18.6678 - val_mae: 2.2861 - val_mse: 11.5021 Epoch 97/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 16.3653 - mae: 2.7241 - mse: 16.3830 - val_loss: 19.2745 - val_mae: 2.3168 - val_mse: 11.8828 Epoch 98/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 15.5821 - mae: 2.8577 - mse: 15.6072 - val_loss: 19.7393 - val_mae: 2.3457 - val_mse: 12.2069 Epoch 99/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 14.6828 - mae: 2.5664 - mse: 14.6907 - val_loss: 18.8448 - val_mae: 2.3499 - val_mse: 11.8233 Epoch 100/100 [1m26/26[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 2ms/step - loss: 13.7037 - mae: 2.6120 - mse: 13.7273 - val_loss: 17.9055 - val_mae: 2.2817 - val_mse: 11.3358
13. 위 딥러닝의 성능을 평가하려고 합니다.
Matplotlib 라이브러리를 활용해서 학습 mse와 검증 mse를 그래프로 표기하세요.
1개의 그래프에 학습 loss와 검증 loss 2가지를 모두 표기하세요.
위 2가지 각각의 범례를 'loss'와 'val_loss'로 표기하세요.
그래프의 타이틀은 'Model Loss'로 표기하세요.
X축에는 'Epochs'라고 표시하고 Y축에는 "Loss'라고 표기하세요.
1개의 그래프에 학습 mse와 검증 mse 2가지를 모두 표기하세요.
위 2가지 각각의 범례를 'mse'와 'val_mse'로 표기하세요.
그래프의 타이틀은 'Model MSE'로 표기하세요.
X축에는 'Epochs'라고 표시하고 Y축에는 "MSE'라고 표기하세요.
- 위 딥러닝 모델에 대해 검증 정답(y_valid)과 예측값(y_pred_dl)의 mae(Mean Absolute Error)를 구하고 dl_mae 변수에 저장하세요.
# 함수로 만들어서 사용합시다.
def dl_history_plot(history):
plt.figure(figsize=(16,4))
plt.subplot(1,2,1)
plt.plot(history['loss'], label='loss', marker = '.')
plt.plot(history['val_loss'], label='val_loss', marker = '.')
plt.ylabel('Loss')
plt.xlabel('Epochs')
plt.legend()
plt.grid()
plt.subplot(1,2,2)
plt.plot(history['mse'], label='mse', marker = '.')
plt.plot(history['val_mse'], label='val_mse', marker = '.')
plt.ylabel('MSE')
plt.xlabel('Epochs')
plt.legend()
plt.grid()
plt.show()
dl_history_plot(history)
y_pred_dl = model.predict(X_valid_s, verbose=1)
dl_mae = mean_absolute_error(y_valid, y_pred_dl)
print('DL MAE:', dl_mae)
[1m4/4[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 11ms/step DL MAE: 2.281737972708309
MAE와 MAPE 그리고 R2를 나타내세요
from sklearn.metrics import mean_absolute_error, mean_absolute_percentage_error, r2_score
pred = model.predict(X_valid_s)
print('MAE : {:.2f}'.format(mean_absolute_error(y_valid, pred)))
print('MAPE: {:.2f}'.format(mean_absolute_percentage_error(y_valid, pred)))
print('R2 : {:.4f}'.format(r2_score(y_valid, pred)))
[1m4/4[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 665us/step MAE : 2.28 MAPE: 0.12 R2 : 0.8454
다중입력모델
| 변수 | 설명 |
| ---- | ---- |
| medv | 타운별 집값(중위수) |
| crim | 범죄율 |
| zn | 25,000 평방피트를 초과 거주지역 비율 |
| indus | 산업단지 면적비율 |
| chas | 찰스강변 위치(범주 : 강변1, 아니면 0) |
| nox | 일산화질소 농도 |
| rm | 주택당 방 수 |
| age | 1940년 이전에 건축된 주택의 비율 |
| dis | 직업센터의 거리 |
| rad | 고속도로 진입로까지의 거리 |
| tax | 재산세율 |
| ptratio | 학생/교사 비율 |
| lstat | 인구 중 하위 계층 비율 |
- 비율과 수로 나누기
- 비율: crim(범죄율), zn(평방피트 초과 거주지역 비율), indus(산업단지 면적비율), age(1940년 이전 건축된 주택의 비율), tax(재산세율), ptratio(학생/교사 비율), lstat(하위계층 비율)
- 수: chas(강변위치), nox(일산화질소 농도), rm(방수), dis(직업센터 거리), rad(고속도로 거리)
- 주택의 특징과 환경의 특징
주택: zn, chas, rm, age, tax, lstat,rad
환경: crim, indus, nox, dis, ptratio
X_train.head()
crim | zn | indus | chas | nox | rm | age | dis | rad | tax | ptratio | black | lstat | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
477 | 15.02340 | 0.0 | 18.10 | 0 | 0.6140 | 5.304 | 97.3 | 2.1007 | 24 | 666 | 20.2 | 349.48 | 24.91 |
15 | 0.62739 | 0.0 | 8.14 | 0 | 0.5380 | 5.834 | 56.5 | 4.4986 | 4 | 307 | 21.0 | 395.62 | 8.47 |
332 | 0.03466 | 35.0 | 6.06 | 0 | 0.4379 | 6.031 | 23.3 | 6.6407 | 1 | 304 | 16.9 | 362.25 | 7.83 |
423 | 7.05042 | 0.0 | 18.10 | 0 | 0.6140 | 6.103 | 85.1 | 2.0218 | 24 | 666 | 20.2 | 2.52 | 23.29 |
19 | 0.72580 | 0.0 | 8.14 | 0 | 0.5380 | 5.727 | 69.5 | 3.7965 | 4 | 307 | 21.0 | 390.95 | 11.28 |
# 입력1 : 주택과 직접 관련이 있는 변수들
in_col = [ 'zn', 'chas', 'rm', 'age', 'tax', 'lstat','rad' ]
x_train1 = X_train[in_col]
x_val1 = X_valid[in_col]
x_val1.head()
zn | chas | rm | age | tax | lstat | rad | |
---|---|---|---|---|---|---|---|
173 | 0.0 | 0 | 6.416 | 84.1 | 296 | 9.04 | 5 |
274 | 40.0 | 1 | 6.758 | 32.9 | 254 | 3.53 | 4 |
491 | 0.0 | 0 | 5.983 | 98.8 | 711 | 18.07 | 4 |
72 | 0.0 | 0 | 6.065 | 7.8 | 305 | 5.52 | 4 |
452 | 0.0 | 0 | 6.297 | 91.8 | 666 | 17.27 | 24 |
# 입력2 : 주택과 간접 관련이 있는 변수들
x_train2 = X_train.drop(in_col, axis = 1)
x_val2 = X_valid.drop(in_col, axis = 1)
x_val2.head()
crim | indus | nox | dis | ptratio | black | |
---|---|---|---|---|---|---|
173 | 0.09178 | 4.05 | 0.510 | 2.6463 | 16.6 | 395.50 |
274 | 0.05644 | 6.41 | 0.447 | 4.0776 | 17.6 | 396.90 |
491 | 0.10574 | 27.74 | 0.609 | 1.8681 | 20.1 | 390.11 |
72 | 0.09164 | 10.81 | 0.413 | 5.2873 | 19.2 | 390.91 |
452 | 5.09017 | 18.10 | 0.713 | 2.3682 | 20.2 | 385.09 |
(3) 다중 입력 모델링
nfeatures1 = x_train1.shape[1] # 판매관련 정보
nfeatures2 = x_train2.shape[1] # 외부 환경 정보
from tensorflow.keras.layers import Input, Dense, concatenate
from tensorflow.keras.regularizers import l1, l2
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.callbacks import EarlyStopping, ModelCheckpoint, ReduceLROnPlateau
# 모델 구성
# 첫 번째 입력을 위한 레이어
input_1 = Input(shape=(nfeatures1,), name='input_1')
hl1 = Dense(8, activation='relu', kernel_regularizer = l1(0.01))(input_1)
hl1 = Dense(16, activation='relu', kernel_regularizer = l1(0.01))(hl1)
# 두 번째 입력을 위한 레이어
input_2 = Input(shape=(nfeatures2,), name='input_2')
hl2 = Dense(8, activation='relu', kernel_regularizer = l1(0.01))(input_2)
hl2 = Dense(16, activation='relu', kernel_regularizer = l1(0.01))(hl2)
# 두 히든레이어 결합
cbl = concatenate([hl1, hl2])
# 추가 히든레이어
last = Dense(32, activation='relu',kernel_regularizer = l1(0.01))(cbl)
last = Dense(8, activation='relu')(last)
# 출력 레이어
output = Dense(1)(last)
# -------------------------
# 모델 선언
model = Model(inputs = [input_1, input_2], outputs = output)
model.compile(optimizer=Adam(learning_rate = 0.01), loss='mse',metrics=['mae','mse'])
# es = EarlyStopping(monitor='val_loss', patience=4, mode='min', verbose=1) # val_loss
es = EarlyStopping(monitor='val_loss',
min_delta=0, # 개선되고 있다고 판단하기 위한 최소 변화량
patience=100, # 개선 없는 epoch 얼마나 기다려 줄거야
mode='min',
verbose=1,
restore_best_weights=True)
lr_reduction = ReduceLROnPlateau(monitor='val_loss',
patience=10,
verbose=1,
factor=0.5, # 0.5를 lr에 곱해주겠다
min_lr=0.000001) # 가장 작은 lr
history = model.fit([x_train1, x_train2], y_train,
batch_size=64,
epochs=100,
# callbacks=[es],
validation_split= 0.2,
verbose=1).history
Epoch 1/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m2s[0m 36ms/step - loss: 753.0716 - mae: 23.0259 - mse: 766.0030 - val_loss: 93.8504 - val_mae: 6.4194 - val_mse: 85.5856 Epoch 2/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 113.4642 - mae: 8.4844 - mse: 115.0409 - val_loss: 88.5634 - val_mae: 7.6760 - val_mse: 86.8146 Epoch 3/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 89.8034 - mae: 7.1490 - mse: 88.6244 - val_loss: 75.0848 - val_mae: 5.5179 - val_mse: 62.8662 Epoch 4/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 69.0120 - mae: 6.1118 - mse: 69.1320 - val_loss: 83.6492 - val_mae: 6.5960 - val_mse: 69.6597 Epoch 5/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 71.4005 - mae: 6.4778 - mse: 70.3706 - val_loss: 81.2467 - val_mae: 5.5688 - val_mse: 62.3219 Epoch 6/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 12ms/step - loss: 62.7077 - mae: 5.8200 - mse: 62.4385 - val_loss: 89.0657 - val_mae: 6.2344 - val_mse: 67.7421 Epoch 7/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 67.3944 - mae: 6.2531 - mse: 66.4781 - val_loss: 78.4082 - val_mae: 5.2829 - val_mse: 59.6152 Epoch 8/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 60.1756 - mae: 5.6288 - mse: 60.3168 - val_loss: 78.1582 - val_mae: 5.8874 - val_mse: 62.1437 Epoch 9/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 5ms/step - loss: 63.3311 - mae: 5.9763 - mse: 63.1442 - val_loss: 73.3956 - val_mae: 5.3530 - val_mse: 58.0379 Epoch 10/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 59.2248 - mae: 5.6356 - mse: 59.5030 - val_loss: 76.4427 - val_mae: 5.6915 - val_mse: 60.5792 Epoch 11/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 5ms/step - loss: 59.4130 - mae: 5.7089 - mse: 59.5845 - val_loss: 75.9240 - val_mae: 5.5524 - val_mse: 59.7329 Epoch 12/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 58.2683 - mae: 5.6254 - mse: 58.5235 - val_loss: 77.1466 - val_mae: 5.6269 - val_mse: 60.6526 Epoch 13/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 5ms/step - loss: 58.1770 - mae: 5.6542 - mse: 58.5874 - val_loss: 73.4769 - val_mae: 5.4616 - val_mse: 58.6191 Epoch 14/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 57.2025 - mae: 5.5248 - mse: 57.7653 - val_loss: 75.9870 - val_mae: 5.6094 - val_mse: 60.0066 Epoch 15/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 56.9057 - mae: 5.5299 - mse: 57.3814 - val_loss: 76.0450 - val_mae: 5.5781 - val_mse: 59.9618 Epoch 16/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 56.4287 - mae: 5.5220 - mse: 57.0348 - val_loss: 74.0415 - val_mae: 5.4885 - val_mse: 59.0301 Epoch 17/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 55.5896 - mae: 5.4189 - mse: 56.2507 - val_loss: 76.1393 - val_mae: 5.6297 - val_mse: 60.2618 Epoch 18/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 55.4995 - mae: 5.4333 - mse: 56.1773 - val_loss: 74.3203 - val_mae: 5.5938 - val_mse: 59.2799 Epoch 19/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 55.0826 - mae: 5.4152 - mse: 55.7407 - val_loss: 74.2722 - val_mae: 5.5507 - val_mse: 58.6790 Epoch 20/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 54.5264 - mae: 5.3966 - mse: 55.2128 - val_loss: 73.2446 - val_mae: 5.4708 - val_mse: 57.7673 Epoch 21/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 5ms/step - loss: 53.4126 - mae: 5.3011 - mse: 54.0770 - val_loss: 73.9874 - val_mae: 5.5459 - val_mse: 58.1270 Epoch 22/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 5ms/step - loss: 53.4369 - mae: 5.3494 - mse: 54.1114 - val_loss: 72.3742 - val_mae: 5.4604 - val_mse: 56.9186 Epoch 23/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 52.3956 - mae: 5.2601 - mse: 53.0163 - val_loss: 73.1793 - val_mae: 5.5203 - val_mse: 57.2603 Epoch 24/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 52.3494 - mae: 5.2970 - mse: 53.0030 - val_loss: 71.6401 - val_mae: 5.4222 - val_mse: 55.8206 Epoch 25/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 5ms/step - loss: 50.9186 - mae: 5.1602 - mse: 51.5454 - val_loss: 71.2706 - val_mae: 5.4808 - val_mse: 55.7805 Epoch 26/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 5ms/step - loss: 50.7837 - mae: 5.1844 - mse: 51.4267 - val_loss: 70.9056 - val_mae: 5.4343 - val_mse: 55.0408 Epoch 27/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 49.4666 - mae: 5.0578 - mse: 50.0593 - val_loss: 71.5592 - val_mae: 5.5160 - val_mse: 55.9234 Epoch 28/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 5ms/step - loss: 49.4733 - mae: 5.0978 - mse: 50.0486 - val_loss: 70.4632 - val_mae: 5.4575 - val_mse: 54.8521 Epoch 29/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 5ms/step - loss: 48.2972 - mae: 5.0126 - mse: 48.8310 - val_loss: 69.8267 - val_mae: 5.4612 - val_mse: 54.6368 Epoch 30/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 5ms/step - loss: 47.5479 - mae: 4.9689 - mse: 48.0669 - val_loss: 70.7986 - val_mae: 5.5089 - val_mse: 54.5485 Epoch 31/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 47.2242 - mae: 4.9680 - mse: 47.6570 - val_loss: 64.9106 - val_mae: 5.2360 - val_mse: 50.3586 Epoch 32/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 5ms/step - loss: 44.0984 - mae: 4.7076 - mse: 44.3486 - val_loss: 73.6018 - val_mae: 6.0786 - val_mse: 59.8850 Epoch 33/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 5ms/step - loss: 48.9315 - mae: 5.2040 - mse: 49.3989 - val_loss: 70.3936 - val_mae: 5.6881 - val_mse: 55.7821 Epoch 34/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 5ms/step - loss: 46.3944 - mae: 5.0322 - mse: 46.2593 - val_loss: 86.3344 - val_mae: 7.0449 - val_mse: 71.9641 Epoch 35/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 5ms/step - loss: 54.2281 - mae: 5.7813 - mse: 54.3953 - val_loss: 63.3803 - val_mae: 6.2035 - val_mse: 56.4197 Epoch 36/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 11ms/step - loss: 49.9168 - mae: 5.3093 - mse: 49.0057 - val_loss: 91.1530 - val_mae: 6.6680 - val_mse: 69.4057 Epoch 37/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 49.4863 - mae: 5.4138 - mse: 49.5733 - val_loss: 57.0027 - val_mae: 5.1612 - val_mse: 46.2135 Epoch 38/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 45.4881 - mae: 5.0751 - mse: 45.5097 - val_loss: 53.5967 - val_mae: 4.4271 - val_mse: 39.4254 Epoch 39/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 37.9318 - mae: 4.4220 - mse: 37.7416 - val_loss: 64.8541 - val_mae: 5.0447 - val_mse: 47.3689 Epoch 40/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 36.6608 - mae: 4.3497 - mse: 36.5186 - val_loss: 55.4939 - val_mae: 4.9689 - val_mse: 43.1136 Epoch 41/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 37.1542 - mae: 4.5479 - mse: 36.9099 - val_loss: 55.9458 - val_mae: 5.0771 - val_mse: 43.8316 Epoch 42/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 37.0227 - mae: 4.6066 - mse: 36.8156 - val_loss: 60.7162 - val_mae: 5.3944 - val_mse: 47.7841 Epoch 43/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 5ms/step - loss: 37.1892 - mae: 4.6297 - mse: 37.1124 - val_loss: 59.7808 - val_mae: 5.4265 - val_mse: 48.0209 Epoch 44/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 36.9785 - mae: 4.6660 - mse: 36.8914 - val_loss: 64.7590 - val_mae: 5.7291 - val_mse: 52.2193 Epoch 45/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 38.2558 - mae: 4.7174 - mse: 38.3087 - val_loss: 66.9288 - val_mae: 6.2565 - val_mse: 56.2586 Epoch 46/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 5ms/step - loss: 38.3489 - mae: 4.8382 - mse: 38.2609 - val_loss: 72.2605 - val_mae: 6.4327 - val_mse: 61.3952 Epoch 47/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 5ms/step - loss: 44.1166 - mae: 5.1753 - mse: 43.9224 - val_loss: 55.4612 - val_mae: 5.1324 - val_mse: 43.9275 Epoch 48/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 40.1499 - mae: 4.9391 - mse: 39.1638 - val_loss: 47.1932 - val_mae: 3.8848 - val_mse: 32.0649 Epoch 49/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 5ms/step - loss: 34.5862 - mae: 4.4728 - mse: 33.6599 - val_loss: 46.2114 - val_mae: 3.6948 - val_mse: 30.6799 Epoch 50/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 30.0137 - mae: 4.1359 - mse: 29.4923 - val_loss: 45.3369 - val_mae: 3.6601 - val_mse: 29.9156 Epoch 51/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 5ms/step - loss: 27.2448 - mae: 3.7961 - mse: 26.7200 - val_loss: 45.3522 - val_mae: 3.8105 - val_mse: 30.9564 Epoch 52/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 24.9704 - mae: 3.5701 - mse: 24.3300 - val_loss: 50.7718 - val_mae: 4.7153 - val_mse: 39.1249 Epoch 53/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 27.5804 - mae: 3.9483 - mse: 26.9496 - val_loss: 59.3423 - val_mae: 5.5992 - val_mse: 49.7902 Epoch 54/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 33.3362 - mae: 4.4468 - mse: 32.8830 - val_loss: 64.2179 - val_mae: 6.1255 - val_mse: 55.8378 Epoch 55/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 5ms/step - loss: 38.6859 - mae: 4.8542 - mse: 38.2294 - val_loss: 58.6476 - val_mae: 5.5990 - val_mse: 48.8794 Epoch 56/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 39.2982 - mae: 4.8946 - mse: 38.3577 - val_loss: 45.0769 - val_mae: 4.0252 - val_mse: 31.9128 Epoch 57/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 5ms/step - loss: 32.6677 - mae: 4.4052 - mse: 31.5329 - val_loss: 42.9121 - val_mae: 3.5652 - val_mse: 27.8562 Epoch 58/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 26.6449 - mae: 3.9563 - mse: 25.8808 - val_loss: 42.8756 - val_mae: 3.5258 - val_mse: 27.8330 Epoch 59/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 5ms/step - loss: 24.2367 - mae: 3.6233 - mse: 23.5988 - val_loss: 42.1446 - val_mae: 3.6702 - val_mse: 28.5662 Epoch 60/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 5ms/step - loss: 22.6178 - mae: 3.4206 - mse: 21.9111 - val_loss: 46.8421 - val_mae: 4.4773 - val_mse: 36.0604 Epoch 61/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 5ms/step - loss: 25.2290 - mae: 3.7673 - mse: 24.4521 - val_loss: 51.2648 - val_mae: 5.0296 - val_mse: 41.7388 Epoch 62/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 29.6818 - mae: 4.1610 - mse: 28.8743 - val_loss: 48.7546 - val_mae: 4.6942 - val_mse: 38.2516 Epoch 63/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 30.3515 - mae: 4.2130 - mse: 29.4396 - val_loss: 42.0292 - val_mae: 3.7978 - val_mse: 29.5574 Epoch 64/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 13ms/step - loss: 26.4242 - mae: 3.9269 - mse: 25.4095 - val_loss: 39.8486 - val_mae: 3.5281 - val_mse: 26.2933 Epoch 65/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 22.7650 - mae: 3.6063 - mse: 21.8388 - val_loss: 39.3231 - val_mae: 3.4951 - val_mse: 25.8752 Epoch 66/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 20.9239 - mae: 3.3946 - mse: 20.0377 - val_loss: 39.6698 - val_mae: 3.5749 - val_mse: 26.9321 Epoch 67/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 20.2883 - mae: 3.2996 - mse: 19.3890 - val_loss: 43.3831 - val_mae: 4.1261 - val_mse: 32.7037 Epoch 68/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 7ms/step - loss: 22.6799 - mae: 3.5380 - mse: 21.8316 - val_loss: 46.8168 - val_mae: 4.7139 - val_mse: 38.2401 Epoch 69/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 7ms/step - loss: 26.4821 - mae: 3.9115 - mse: 25.6295 - val_loss: 49.2103 - val_mae: 4.9174 - val_mse: 40.1260 Epoch 70/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 29.0128 - mae: 4.0537 - mse: 28.1108 - val_loss: 42.6642 - val_mae: 4.0725 - val_mse: 31.8035 Epoch 71/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 5ms/step - loss: 26.4370 - mae: 3.9157 - mse: 25.3603 - val_loss: 39.9019 - val_mae: 3.6441 - val_mse: 27.0209 Epoch 72/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 5ms/step - loss: 22.9218 - mae: 3.6199 - mse: 21.8765 - val_loss: 37.8875 - val_mae: 3.3865 - val_mse: 24.6235 Epoch 73/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 20.0938 - mae: 3.3732 - mse: 19.1113 - val_loss: 38.8958 - val_mae: 3.5401 - val_mse: 25.7088 Epoch 74/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 19.2644 - mae: 3.2532 - mse: 18.3599 - val_loss: 39.3678 - val_mae: 3.7230 - val_mse: 28.0184 Epoch 75/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 19.8625 - mae: 3.3069 - mse: 18.9224 - val_loss: 43.5260 - val_mae: 4.2794 - val_mse: 33.8121 Epoch 76/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 22.5069 - mae: 3.5350 - mse: 21.5876 - val_loss: 45.7793 - val_mae: 4.5542 - val_mse: 36.5959 Epoch 77/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 7ms/step - loss: 24.8303 - mae: 3.7601 - mse: 23.9665 - val_loss: 44.7755 - val_mae: 4.4089 - val_mse: 34.9177 Epoch 78/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 25.1596 - mae: 3.7778 - mse: 24.2136 - val_loss: 41.2643 - val_mae: 3.9368 - val_mse: 30.2451 Epoch 79/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 23.3815 - mae: 3.6487 - mse: 22.3303 - val_loss: 39.7049 - val_mae: 3.7391 - val_mse: 27.5401 Epoch 80/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 21.4225 - mae: 3.4814 - mse: 20.3524 - val_loss: 37.7168 - val_mae: 3.4808 - val_mse: 24.9226 Epoch 81/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 19.0321 - mae: 3.2793 - mse: 17.9236 - val_loss: 39.3330 - val_mae: 3.5344 - val_mse: 25.8445 Epoch 82/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 5ms/step - loss: 18.4908 - mae: 3.2148 - mse: 17.4912 - val_loss: 36.7296 - val_mae: 3.4976 - val_mse: 25.1282 Epoch 83/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 18.0753 - mae: 3.1582 - mse: 17.0422 - val_loss: 40.1934 - val_mae: 3.8460 - val_mse: 28.9873 Epoch 84/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 7ms/step - loss: 19.0391 - mae: 3.2218 - mse: 18.0702 - val_loss: 40.3633 - val_mae: 4.0397 - val_mse: 30.9150 Epoch 85/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 20.3870 - mae: 3.3904 - mse: 19.4071 - val_loss: 45.3688 - val_mae: 4.5004 - val_mse: 35.8276 Epoch 86/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 22.8177 - mae: 3.5478 - mse: 21.9459 - val_loss: 42.6054 - val_mae: 4.3688 - val_mse: 33.8712 Epoch 87/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 5ms/step - loss: 23.1288 - mae: 3.6299 - mse: 22.1337 - val_loss: 42.7283 - val_mae: 4.1805 - val_mse: 32.0876 Epoch 88/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 22.5850 - mae: 3.5167 - mse: 21.5442 - val_loss: 37.0759 - val_mae: 3.7436 - val_mse: 26.8075 Epoch 89/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 5ms/step - loss: 20.3804 - mae: 3.4159 - mse: 19.2688 - val_loss: 37.9726 - val_mae: 3.6227 - val_mse: 25.8534 Epoch 90/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 19.1355 - mae: 3.2701 - mse: 18.0502 - val_loss: 35.4165 - val_mae: 3.4194 - val_mse: 23.6010 Epoch 91/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 5ms/step - loss: 17.3084 - mae: 3.1211 - mse: 16.1458 - val_loss: 36.6116 - val_mae: 3.3898 - val_mse: 23.8049 Epoch 92/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 5ms/step - loss: 16.5302 - mae: 3.0121 - mse: 15.4250 - val_loss: 35.3503 - val_mae: 3.3722 - val_mse: 23.4010 Epoch 93/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 5ms/step - loss: 16.3257 - mae: 2.9860 - mse: 15.2754 - val_loss: 36.4296 - val_mae: 3.5050 - val_mse: 24.8912 Epoch 94/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 16.4565 - mae: 2.9821 - mse: 15.3552 - val_loss: 33.7436 - val_mae: 3.4846 - val_mse: 23.9249 Epoch 95/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 5ms/step - loss: 16.4339 - mae: 2.9782 - mse: 15.3276 - val_loss: 35.4502 - val_mae: 3.5984 - val_mse: 25.4947 Epoch 96/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 6ms/step - loss: 16.8225 - mae: 3.0104 - mse: 15.7319 - val_loss: 33.4895 - val_mae: 3.5933 - val_mse: 24.9235 Epoch 97/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 5ms/step - loss: 17.3495 - mae: 3.0521 - mse: 16.2484 - val_loss: 34.9570 - val_mae: 3.6291 - val_mse: 25.6824 Epoch 98/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 5ms/step - loss: 16.9146 - mae: 3.0062 - mse: 15.8135 - val_loss: 33.9113 - val_mae: 3.6238 - val_mse: 25.2153 Epoch 99/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 5ms/step - loss: 17.3945 - mae: 3.0697 - mse: 16.3032 - val_loss: 34.3657 - val_mae: 3.5306 - val_mse: 24.7134 Epoch 100/100 [1m6/6[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 5ms/step - loss: 16.6184 - mae: 2.9819 - mse: 15.5379 - val_loss: 34.5381 - val_mae: 3.5341 - val_mse: 24.6397
dl_history_plot(history)
pred = model.predict([x_val1, x_val2])
# 평가
print('MAE : {:.2f}'.format(mean_absolute_error(y_valid, pred)))
print('MAPE: {:.2f}'.format(mean_absolute_percentage_error(y_valid, pred)))
print('R2 : {:.4f}'.format(r2_score(y_valid, pred)))
[1m4/4[0m [32m━━━━━━━━━━━━━━━━━━━━[0m[37m[0m [1m0s[0m 18ms/step MAE : 3.47 MAPE: 0.19 R2 : 0.6920
'Machine Learning' 카테고리의 다른 글
1.회귀문제_4_네비게이션 (0) | 2024.06.02 |
---|---|
1.회귀문제_3_따릉이 (0) | 2024.06.02 |
1.회귀문제_1_오존 (0) | 2024.06.02 |
keras 모델학습 과정 안 보이게 하기, verbose=0 (0) | 2024.03.21 |
4.2 성능평가 - 분류 모델 성능 평가 (0) | 2024.03.12 |
소중한 공감 감사합니다