1. 데이터 준비 및 분석
주어진 데이터셋에는 730개의 샘플이 있으며, 각 샘플은 7개의 열로 이루어져 있다.
변수 구성:
- DHI: 수평면에 도달하는 산란 일사량
- DNI: 수직으로 도달하는 직접 일사량
- WS: 풍속
- RH: 상대 습도
- T: 기온
- TARGET: 예측해야 하는 목표값
- ID: 데이터 식별자
주어진 데이터를 바탕으로 TARGET을 예측하는 모델을 구축하기 위해 TARGET 외의 모든 변수는 독립 변수로 사용된다.
2. 데이터 전처리
데이터 전처리는 머신러닝 모델의 성능을 높이기 위해 중요한 단계로,
결측치 처리
- 주어진 데이터셋에는 결측치가 존재하지 않았다. 모든 변수는 730개의 유효한 값을 가지고 있었기 때문에, 결측치를 처리할 필요가 없었다.
데이터 스케일링
- 데이터의 개수가 적고, 변수들 간의 분포가 고르게 분포되어 있어 스케일링을 진행하지 않았다. 이 경우, 스케일링을 진행하지 않아도 모델이 학습에 큰 어려움을 겪지 않을 것으로 판단하여, 데이터셋의 크기가 작은 상황에서 각 변수들이 이미 비슷한 분포를 가지고 있고, 극단적인 이상치나 편향된 데이터가 없기 때문에 스케일링을 적용하지 않아도 충분히 모델이 효과적으로 학습할 수 있다고 판단하였다.
데이터 분리
- 데이터셋을 훈련용(train), 검증용(validation), 테스트용(test) 데이터셋으로 분리했다. 데이터의 70%는 훈련 데이터로, 20%는 검증 데이터로, 10%는 테스트 데이터로 나누어 모델의 일반화 성능을 검증할 수 있었다. 이때 , 각 데이터셋이 대표성을 가질 수 있도록 분리하여 과적합을 피할 수 있도록 설계하였다.
3. 모델링 및 학습
수집 및 가공한 데이터를 최종 모델 구축하고 학습하는 단계로,
입력 계층
모델의 입력 데이터는 5개의 특성(DHI, DNI, WS, RH, T)으로 이루어져 있다. 각 특성은 환경 변수에 대한 정보를 제공하며, 이 5개의 특성을 모델에 입력으로 사용한다. 입력 계층은 다음과 같이 설정하였다:
- 입력 뉴런 수: 5개 (각 특성마다 하나의 뉴런)
- 활성화 함수: ReLU (Rectified Linear Unit) 함수 사용
은닉 계층
모델은 3개의 은닉 계층으로 구성되었다. 각 은닉 계층은 Dense 계층으로 설정되었으며, 모든 은닉 계층에는 ReLU 활성화 함수를 적용하여 비선형성을 추가하고 모델의 표현 능력을 향상시켰다. 은닉 계층의 구성은 다음과 같다:
- L1: 5개의 뉴런, 입력과 연결된 첫 번째 은닉 계층
- L2: 16개의 뉴런
- L3: 4개의 뉴런
출력 계층
출력 계층은 하나의 뉴런으로 구성되며, 회귀 문제를 해결하기 위해 활성화 함수는 사용하지 않았다. 이는 목표 변수인 target이 연속형 변수이기 때문이다. 출력 계층의 구성은 다음과 같다:
- 출력 뉴런 수: 1개
- 활성화 함수: 없음 (회귀 문제)
모델 학습
모델은 Adam 옵티마이저와 MSE (Mean Squared Error) 손실 함수를 사용하여 학습을 진행하였다.
MSE는 회귀 문제에서 자주 사용되는 손실 함수로, 예측값과 실제값 간의 차이를 제곱하여 평균을 구한 값이다.
이를 통해 모델의 예측값이 실제값에 얼마나 근접하는지를 평가할 수 있다.
모델 학습은 train_x와 train_y 데이터셋을 사용하여 100번의 에포크 동안 진행되며, 배치 크기는 32로 설정하였다.
또한, 검증 데이터셋(val_x, val_y)을 제공하여 학습 중에 과적합을 방지하고 모델 성능을 모니터링할 수 있도록 했다.
import pandas as pd
import numpy as np
import random
import os
import random
import tensorflow as tf
import warnings
from sklearn.model_selection import train_test_split
warnings.filterwarnings('ignore')
#시드값을 고정하여 코드 실행마다 동일한 결괏값을 얻을 수 있음
def my_seed_everywhere(seed):
random.seed(seed) # 랜덤함수
np.random.seed(seed) # numpy
os.environ["PYTHONHASHSEED"] = str(seed)
tf.random.set_seed(seed) # 텐서플로우
my_seed = 42
my_seed_everywhere(my_seed)
train_df = pd.read_csv('train.csv') # train 변수에 "train.csv" 읽어서 저장
train_df
| ID | DHI | DNI | WS | RH | T | TARGET | |
|---|---|---|---|---|---|---|---|
| 0 | 1 | 0.315650 | 0.885087 | 3.129167 | -0.563454 | -0.106409 | 33.659014 |
| 1 | 2 | 0.075239 | 0.756084 | 3.068750 | -1.030301 | 0.317479 | 20.747731 |
| 2 | 3 | 0.148714 | 0.628092 | 1.547917 | -1.190128 | 0.411156 | 18.263065 |
| 3 | 4 | 0.821308 | 0.283800 | 3.020833 | -0.218049 | 1.308111 | 21.072718 |
| 4 | 5 | 0.174578 | 0.592866 | 2.056250 | 0.286934 | -0.312498 | 16.076963 |
| ... | ... | ... | ... | ... | ... | ... | ... |
| 725 | 726 | 0.501543 | 0.642224 | 2.918750 | -1.219349 | -0.094699 | 25.604709 |
| 726 | 727 | 0.082733 | 0.774102 | 3.110417 | -0.612778 | -0.563083 | 20.438856 |
| 727 | 728 | 0.587950 | 0.385512 | 2.704167 | 1.294474 | 0.839727 | 21.876819 |
| 728 | 729 | 0.816605 | 0.195044 | 1.656250 | 1.413581 | 0.811624 | 17.209349 |
| 729 | 730 | 0.486995 | 0.588857 | 2.735417 | -0.422407 | 0.317479 | 26.987259 |
730 rows × 7 columns
#종속변수인 TARGET, 불필요한ID를 제외하여 train_x를 만들고,
data_x = train_df.drop(columns=['TARGET', 'ID']).to_numpy()
#종속변수인 TARGET만을 사용하여 train_y를 만든다.
data_y = train_df['TARGET'].to_numpy()
print(data_x.shape)
(730, 5)
train_x, validation_x, train_y, validation_y = train_test_split(data_x, data_y, test_size=0.2, shuffle=True, random_state=44) # 학습용 데이터와 학습이 잘 되었는지 검증하는 데이터 분리
model = tf.keras.Sequential( # 텐서플로우 모델 구축
[
tf.keras.layers.Dense(5, input_shape=(5,), activation="relu", name="L1"), #활성화 함수로는 relu를 사용
tf.keras.layers.Dense(16, activation="relu", name="L2"),
tf.keras.layers.Dense(4, activation="relu", name="L3"),
tf.keras.layers.Dense(1, activation="relu", name="L4"),
]
)
model.summary() # 구축 모델 요약
Model: "sequential"
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓
┃ Layer (type) ┃ Output Shape ┃ Param # ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩
│ L1 (Dense) │ (None, 5) │ 30 │
├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤
│ L2 (Dense) │ (None, 16) │ 96 │
├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤
│ L3 (Dense) │ (None, 4) │ 68 │
├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤
│ L4 (Dense) │ (None, 1) │ 5 │
└──────────────────────────────────────┴─────────────────────────────┴─────────────────┘
Total params: 199 (796.00 B)
Trainable params: 199 (796.00 B)
Non-trainable params: 0 (0.00 B)
model.compile(loss='mse', optimizer='adam', metrics=['mse']) # 손실 함수는 평균제곱오차, Optimizer는 Adam 사용
model.fit(train_x, train_y, epochs=100, batch_size=32, validation_data=(validation_x, validation_y)) # 학습 실행
Epoch 1/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 1s 10ms/step - loss: 333.6555 - mse: 333.6555 - val_loss: 347.9037 - val_mse: 347.9037
Epoch 2/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 320.2668 - mse: 320.2668 - val_loss: 330.4492 - val_mse: 330.4492
Epoch 3/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 303.2314 - mse: 303.2314 - val_loss: 307.9324 - val_mse: 307.9324
Epoch 4/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 279.8467 - mse: 279.8467 - val_loss: 278.5961 - val_mse: 278.5961
Epoch 5/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 251.9310 - mse: 251.9310 - val_loss: 240.9966 - val_mse: 240.9966
Epoch 6/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 215.6830 - mse: 215.6830 - val_loss: 196.1030 - val_mse: 196.1030
Epoch 7/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 172.8224 - mse: 172.8224 - val_loss: 147.5280 - val_mse: 147.5280
Epoch 8/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 127.4027 - mse: 127.4027 - val_loss: 101.0619 - val_mse: 101.0619
Epoch 9/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 85.3479 - mse: 85.3479 - val_loss: 65.9597 - val_mse: 65.9597
Epoch 10/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 55.4229 - mse: 55.4229 - val_loss: 47.7646 - val_mse: 47.7646
Epoch 11/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 40.7984 - mse: 40.7984 - val_loss: 41.8318 - val_mse: 41.8318
Epoch 12/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 36.1336 - mse: 36.1336 - val_loss: 40.0157 - val_mse: 40.0157
Epoch 13/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 34.5931 - mse: 34.5931 - val_loss: 38.6272 - val_mse: 38.6272
Epoch 14/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 33.4433 - mse: 33.4433 - val_loss: 37.2875 - val_mse: 37.2875
Epoch 15/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 32.3968 - mse: 32.3968 - val_loss: 36.0872 - val_mse: 36.0872
Epoch 16/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 31.4817 - mse: 31.4817 - val_loss: 34.9878 - val_mse: 34.9878
Epoch 17/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 30.6804 - mse: 30.6804 - val_loss: 33.9792 - val_mse: 33.9792
Epoch 18/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 29.9245 - mse: 29.9245 - val_loss: 32.9911 - val_mse: 32.9911
Epoch 19/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 29.1798 - mse: 29.1798 - val_loss: 32.0236 - val_mse: 32.0236
Epoch 20/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 28.4321 - mse: 28.4321 - val_loss: 31.0726 - val_mse: 31.0726
Epoch 21/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 27.6722 - mse: 27.6722 - val_loss: 30.1653 - val_mse: 30.1653
Epoch 22/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 26.9157 - mse: 26.9157 - val_loss: 29.2723 - val_mse: 29.2723
Epoch 23/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 26.1470 - mse: 26.1470 - val_loss: 28.4031 - val_mse: 28.4031
Epoch 24/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 25.3848 - mse: 25.3848 - val_loss: 27.5421 - val_mse: 27.5421
Epoch 25/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 24.6523 - mse: 24.6523 - val_loss: 26.7228 - val_mse: 26.7228
Epoch 26/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 23.9227 - mse: 23.9227 - val_loss: 25.9251 - val_mse: 25.9251
Epoch 27/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 23.1900 - mse: 23.1900 - val_loss: 25.1072 - val_mse: 25.1072
Epoch 28/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 22.4460 - mse: 22.4460 - val_loss: 24.2881 - val_mse: 24.2881
Epoch 29/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 21.7056 - mse: 21.7056 - val_loss: 23.4897 - val_mse: 23.4897
Epoch 30/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 20.9593 - mse: 20.9593 - val_loss: 22.7068 - val_mse: 22.7068
Epoch 31/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 20.1799 - mse: 20.1799 - val_loss: 21.8916 - val_mse: 21.8916
Epoch 32/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 19.4158 - mse: 19.4158 - val_loss: 21.0829 - val_mse: 21.0829
Epoch 33/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 18.6323 - mse: 18.6323 - val_loss: 20.3177 - val_mse: 20.3177
Epoch 34/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 17.8974 - mse: 17.8974 - val_loss: 19.5727 - val_mse: 19.5727
Epoch 35/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 17.1867 - mse: 17.1867 - val_loss: 18.8913 - val_mse: 18.8913
Epoch 36/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 16.5230 - mse: 16.5230 - val_loss: 18.2418 - val_mse: 18.2418
Epoch 37/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 15.9120 - mse: 15.9120 - val_loss: 17.6203 - val_mse: 17.6203
Epoch 38/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 15.3228 - mse: 15.3228 - val_loss: 17.0258 - val_mse: 17.0258
Epoch 39/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 14.7787 - mse: 14.7787 - val_loss: 16.4743 - val_mse: 16.4743
Epoch 40/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 14.2843 - mse: 14.2843 - val_loss: 15.9668 - val_mse: 15.9668
Epoch 41/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 13.7754 - mse: 13.7754 - val_loss: 15.4978 - val_mse: 15.4978
Epoch 42/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 13.3179 - mse: 13.3179 - val_loss: 15.0467 - val_mse: 15.0467
Epoch 43/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 12.8785 - mse: 12.8785 - val_loss: 14.6197 - val_mse: 14.6197
Epoch 44/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 12.4551 - mse: 12.4551 - val_loss: 14.2164 - val_mse: 14.2164
Epoch 45/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 12.0579 - mse: 12.0579 - val_loss: 13.8402 - val_mse: 13.8402
Epoch 46/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 11.7017 - mse: 11.7017 - val_loss: 13.4851 - val_mse: 13.4851
Epoch 47/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 11.3377 - mse: 11.3377 - val_loss: 13.1436 - val_mse: 13.1436
Epoch 48/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 11.0024 - mse: 11.0024 - val_loss: 12.8169 - val_mse: 12.8169
Epoch 49/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 10.6835 - mse: 10.6835 - val_loss: 12.5064 - val_mse: 12.5064
Epoch 50/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 10.3807 - mse: 10.3807 - val_loss: 12.1980 - val_mse: 12.1980
Epoch 51/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 10.0899 - mse: 10.0899 - val_loss: 11.9028 - val_mse: 11.9028
Epoch 52/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 9.8101 - mse: 9.8101 - val_loss: 11.6226 - val_mse: 11.6226
Epoch 53/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 9.5477 - mse: 9.5477 - val_loss: 11.3456 - val_mse: 11.3456
Epoch 54/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 9.3124 - mse: 9.3124 - val_loss: 11.0854 - val_mse: 11.0854
Epoch 55/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 9.0497 - mse: 9.0497 - val_loss: 10.8347 - val_mse: 10.8347
Epoch 56/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 8.8714 - mse: 8.8714 - val_loss: 10.5938 - val_mse: 10.5938
Epoch 57/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 8.5990 - mse: 8.5990 - val_loss: 10.3581 - val_mse: 10.3581
Epoch 58/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 8.3862 - mse: 8.3862 - val_loss: 10.1373 - val_mse: 10.1373
Epoch 59/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 8.1877 - mse: 8.1877 - val_loss: 9.9208 - val_mse: 9.9208
Epoch 60/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 8.0114 - mse: 8.0114 - val_loss: 9.7123 - val_mse: 9.7123
Epoch 61/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 7.8116 - mse: 7.8116 - val_loss: 9.5103 - val_mse: 9.5103
Epoch 62/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 7.6354 - mse: 7.6354 - val_loss: 9.3147 - val_mse: 9.3147
Epoch 63/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 7.4667 - mse: 7.4667 - val_loss: 9.1235 - val_mse: 9.1235
Epoch 64/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 7.3044 - mse: 7.3044 - val_loss: 8.9370 - val_mse: 8.9370
Epoch 65/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 7.1595 - mse: 7.1595 - val_loss: 8.7566 - val_mse: 8.7566
Epoch 66/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 6.9980 - mse: 6.9980 - val_loss: 8.5811 - val_mse: 8.5811
Epoch 67/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 6.8530 - mse: 6.8530 - val_loss: 8.4099 - val_mse: 8.4099
Epoch 68/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 6.7425 - mse: 6.7425 - val_loss: 8.2424 - val_mse: 8.2424
Epoch 69/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 6.6090 - mse: 6.6090 - val_loss: 8.0798 - val_mse: 8.0798
Epoch 70/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 6.4404 - mse: 6.4404 - val_loss: 7.9201 - val_mse: 7.9201
Epoch 71/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 6.3114 - mse: 6.3114 - val_loss: 7.7638 - val_mse: 7.7638
Epoch 72/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 6.1859 - mse: 6.1859 - val_loss: 7.6105 - val_mse: 7.6105
Epoch 73/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 6.0641 - mse: 6.0641 - val_loss: 7.4610 - val_mse: 7.4610
Epoch 74/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 5.9458 - mse: 5.9458 - val_loss: 7.3146 - val_mse: 7.3146
Epoch 75/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 5.8306 - mse: 5.8306 - val_loss: 7.1716 - val_mse: 7.1716
Epoch 76/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 5.7185 - mse: 5.7185 - val_loss: 7.0324 - val_mse: 7.0324
Epoch 77/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 5.6099 - mse: 5.6099 - val_loss: 6.8962 - val_mse: 6.8962
Epoch 78/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 5.5041 - mse: 5.5041 - val_loss: 6.7636 - val_mse: 6.7636
Epoch 79/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 5.4011 - mse: 5.4011 - val_loss: 6.6352 - val_mse: 6.6352
Epoch 80/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 5.3003 - mse: 5.3003 - val_loss: 6.5086 - val_mse: 6.5086
Epoch 81/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 5.2014 - mse: 5.2014 - val_loss: 6.3856 - val_mse: 6.3856
Epoch 82/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - loss: 5.1053 - mse: 5.1053 - val_loss: 6.2669 - val_mse: 6.2669
Epoch 83/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 5.0117 - mse: 5.0117 - val_loss: 6.1515 - val_mse: 6.1515
Epoch 84/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 4.9206 - mse: 4.9206 - val_loss: 6.0405 - val_mse: 6.0405
Epoch 85/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 4.8327 - mse: 4.8327 - val_loss: 5.9318 - val_mse: 5.9318
Epoch 86/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 4.7434 - mse: 4.7434 - val_loss: 5.8272 - val_mse: 5.8272
Epoch 87/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 4.6558 - mse: 4.6558 - val_loss: 5.7305 - val_mse: 5.7305
Epoch 88/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 4.5713 - mse: 4.5713 - val_loss: 5.6344 - val_mse: 5.6344
Epoch 89/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 4.4894 - mse: 4.4894 - val_loss: 5.5375 - val_mse: 5.5375
Epoch 90/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 4.4048 - mse: 4.4048 - val_loss: 5.4312 - val_mse: 5.4312
Epoch 91/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 4.3126 - mse: 4.3126 - val_loss: 5.3190 - val_mse: 5.3190
Epoch 92/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 4.2336 - mse: 4.2336 - val_loss: 5.2174 - val_mse: 5.2174
Epoch 93/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 4.1411 - mse: 4.1411 - val_loss: 5.1258 - val_mse: 5.1258
Epoch 94/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 4.0606 - mse: 4.0606 - val_loss: 5.0302 - val_mse: 5.0302
Epoch 95/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 3.9816 - mse: 3.9816 - val_loss: 4.9328 - val_mse: 4.9328
Epoch 96/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 3.9199 - mse: 3.9199 - val_loss: 4.8269 - val_mse: 4.8269
Epoch 97/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 3.8434 - mse: 3.8434 - val_loss: 4.7384 - val_mse: 4.7384
Epoch 98/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 3.7806 - mse: 3.7806 - val_loss: 4.6537 - val_mse: 4.6537
Epoch 99/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 3.7189 - mse: 3.7189 - val_loss: 4.5699 - val_mse: 4.5699
Epoch 100/100
19/19 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - loss: 3.6611 - mse: 3.6611 - val_loss: 4.4874 - val_mse: 4.4874
<keras.src.callbacks.history.History at 0x1e8583560c0>
19/19 [==============================] - 0s 3ms/step - loss: 1.0052 - mse: 1.0052 - val_loss: 1.0436 - val_mse: 1.0436
Epoch 978/1000
19/19 [==============================] - 0s 3ms/step - loss: 1.0107 - mse: 1.0107 - val_loss: 1.0536 - val_mse: 1.0536
Epoch 979/1000
19/19 [==============================] - 0s 3ms/step - loss: 1.0171 - mse: 1.0171 - val_loss: 1.0858 - val_mse: 1.0858
Epoch 980/1000
19/19 [==============================] - 0s 2ms/step - loss: 1.0064 - mse: 1.0064 - val_loss: 1.1026 - val_mse: 1.1026
Epoch 981/1000
19/19 [==============================] - 0s 3ms/step - loss: 1.0406 - mse: 1.0406 - val_loss: 1.0527 - val_mse: 1.0527
Epoch 982/1000
19/19 [==============================] - 0s 3ms/step - loss: 1.0078 - mse: 1.0078 - val_loss: 1.0792 - val_mse: 1.0792
Epoch 983/1000
19/19 [==============================] - 0s 3ms/step - loss: 1.0086 - mse: 1.0086 - val_loss: 1.0524 - val_mse: 1.0524
Epoch 984/1000
19/19 [==============================] - 0s 3ms/step - loss: 1.0006 - mse: 1.0006 - val_loss: 1.0366 - val_mse: 1.0366
Epoch 985/1000
19/19 [==============================] - 0s 3ms/step - loss: 0.9942 - mse: 0.9942 - val_loss: 1.0460 - val_mse: 1.0460
Epoch 986/1000
19/19 [==============================] - 0s 3ms/step - loss: 1.0210 - mse: 1.0210 - val_loss: 1.0764 - val_mse: 1.0764
Epoch 987/1000
19/19 [==============================] - 0s 3ms/step - loss: 1.0058 - mse: 1.0058 - val_loss: 1.0422 - val_mse: 1.0422
Epoch 988/1000
19/19 [==============================] - 0s 3ms/step - loss: 0.9955 - mse: 0.9955 - val_loss: 1.0528 - val_mse: 1.0528
Epoch 989/1000
19/19 [==============================] - 0s 3ms/step - loss: 0.9916 - mse: 0.9916 - val_loss: 1.0520 - val_mse: 1.0520
Epoch 990/1000
19/19 [==============================] - 0s 4ms/step - loss: 1.0317 - mse: 1.0317 - val_loss: 1.0624 - val_mse: 1.0624
Epoch 991/1000
19/19 [==============================] - 0s 3ms/step - loss: 1.0084 - mse: 1.0084 - val_loss: 1.0502 - val_mse: 1.0502
Epoch 992/1000
19/19 [==============================] - 0s 3ms/step - loss: 1.0210 - mse: 1.0210 - val_loss: 1.0444 - val_mse: 1.0444
Epoch 993/1000
19/19 [==============================] - 0s 3ms/step - loss: 1.0646 - mse: 1.0646 - val_loss: 1.0478 - val_mse: 1.0478
Epoch 994/1000
19/19 [==============================] - 0s 3ms/step - loss: 1.0387 - mse: 1.0387 - val_loss: 1.0574 - val_mse: 1.0574
Epoch 995/1000
19/19 [==============================] - 0s 3ms/step - loss: 0.9918 - mse: 0.9918 - val_loss: 1.0535 - val_mse: 1.0535
Epoch 996/1000
19/19 [==============================] - 0s 3ms/step - loss: 1.0035 - mse: 1.0035 - val_loss: 1.0395 - val_mse: 1.0395
Epoch 997/1000
19/19 [==============================] - 0s 3ms/step - loss: 0.9949 - mse: 0.9949 - val_loss: 1.0371 - val_mse: 1.0371
Epoch 998/1000
19/19 [==============================] - 0s 3ms/step - loss: 1.0143 - mse: 1.0143 - val_loss: 1.0733 - val_mse: 1.0733
Epoch 999/1000
19/19 [==============================] - 0s 3ms/step - loss: 0.9987 - mse: 0.9987 - val_loss: 1.0659 - val_mse: 1.0659
Epoch 1000/1000
19/19 [==============================] - 0s 2ms/step - loss: 1.0076 - mse: 1.0076 - val_loss: 1.0374 - val_mse: 1.0374
<keras.callbacks.History at 0x1b055045d50>
test_df = pd.read_csv('test.csv')
test_x = test_df.drop(columns=['ID']).to_numpy()
result_arr = model.predict(test_x)
12/12 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step
submit = pd.read_csv('sample_submission.csv')
submit['TARGET'] = result_arr
print(submit)
ID TARGET
0 1 16.244801
1 2 30.394522
2 3 13.638926
3 4 21.907686
4 5 20.683220
.. ... ...
360 361 15.278719
361 362 13.124855
362 363 11.245464
363 364 10.684749
364 365 21.600473
[365 rows x 2 columns]
submit.to_csv('submission1.csv', index = False)

'AI' 카테고리의 다른 글
| 고려대_세종캠퍼스_ai_pbl_개인프로젝트_산출물 (0) | 2024.12.10 |
|---|---|
| Malware 예측 프로젝트 (0) | 2024.12.01 |
| AI 데이터 분석 (예측 프로젝트) (4) | 2024.11.09 |
| AI #9 (TensorFlow vs PyTorch) (0) | 2024.10.30 |
| AI #8 (머신러닝 모델) (0) | 2024.10.29 |