#독일어여서 예나라고 읽어야한다.
#VPmax 컬런같이 치우친 데이터들은 standard scaler 한방 때려주면 가운데로 모인드... VPdef역시 동일. (안먹히면 Minmax 때린다.)
#csv 파일의 컬런은 콤마 혹은 세미콜론으로 구분
import numpy as np
import pandas as pd
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScaler
#1. 데이터
path = './_data/kaggle_jena/'
datasets = pd.read_csv(path+'jena_climate_2009_2016.csv', index_col=0)
# print(datasets) #컬런은 연산 가능해야한다. 따라서 date time을 연산에 사용할 수는 없음. date time은 인덱스 형태, 때문에 index_col 해준다
#[420551 rows x 14 columns]
# print(datasets.columns) #판다스의 명령어는 잘 알아두자
# print(datasets.info()) # 결측치 없음
print(datasets.describe())
#T가 y이다. 온도
import matplotlib.pyplot as plt
scaler = MinMaxScaler()
datasets = scaler.fit_transform(datasets)
# print(datasets['T (degC)']) # 이 데이터의 형태는 판다스 형태이다.
# # 근데 시각화 하려면 넘파이 형태로 바꿔야함
# #방법 1.
# print(datasets['T (degC)'].values)
# #방법 2.
# print(datasets['T (degC)'].to_numpy()) #판다스를 넘파이로 바꾸는 방법
# plt.plot(datasets['T (degC)'].values)
# plt.show() #규칙성있는 시계열 데이터이다.
#swish 액티베이션 = relu 친구...
#rmse, r2로 계산
#그 다음날 온도 맞추기.
# 7:2:1로 나눈다. train(validation) : test : predict
#conv1d한번 쓰고 LSTM 사용 한다.
# train, test =train_test_split(datasets,
# train_size=0.7,
# shuffle=False,
# )
print(datasets.shape)
x, y = split_x(datasets, timesteps, 1)
print(x)
print(y)
bbb=split_x(datasets, timesteps)
print(bbb)
# x = datasets.drop(['T (degC)'], axis=1)
# y = datasets['T (degC)']
x_train, x_test, y_train, y_test = train_test_split(x, y,
train_size=0.7,
shuffle=False,
)
x_test, x_pred, y_test, y_pred = train_test_split(x_test, y_test,
train_size=0.67,
shuffle=False)
print(x_train.shape, x_test.shape, x_pred.shape) #(294385, 13) (84531, 13) (41635, 13)
#타임스텝스 10으로 짜르기