Deeplearning-chap10
import os
fname = os.path.join("jena_climate_2009_2016.csv")
with open(fname) as f:
data = f.read()
lines = data.split("\n")
header = lines[0].split(",")
lines = lines[1:]
print(header)
print(len(lines))
fname = os.path.join("jena_climate_2009_2016.csv")
:fname 변수에 "jena_climate_2009_2016.csv" 파일의 경로를 저장합니다. os.path.join() 함수를 사용하여 현재 작업 디렉토리와 파일 이름을 결합합니다.
with open(fname) as f:
:with 문을 사용하여 파일을 엽니다. 파일 핸들을 f로 지정합니다. 이 방식으로 파일을 열면 작업이 완료되면 자동으로 파일이 닫힙니다.
import numpy as np
temperature = np.zeros((len(lines),)) # 1차원 배열을 생성한다.
raw_data = np.zeros((len(lines), len(header) - 1)) # 온도를 제외한 값을 저장하는 배열 , 2차원 배열 생성
for i, line in enumerate(lines):
values = [float(x) for x in line.split(",")[1:]] # 첫번쨰 열(날짜)을 제외환 나머지 열의 값을 가져와서 부동 소수점으로 변환
temperature[i] = values[1] # 두번째 값(온도)을 저장한다
raw_data[i, :] = values[:] # 온도를 제외한 나머지 값들을 저장한다.
from matplotlib import pyplot as plt # pyplot 데이터를 시각화하는 함수들을 제공한다.
plt.plot(range(len(temperature)), temperature) # x축과 y축 설정해주기
plt.show()
num_train_samples = int(0.5 * len(raw_data)) # raw_data의 50퍼센트를 train에 저장
num_val_samples = int(0.25 * len(raw_data)) # 25퍼센트를 val에 저장
num_test_samples = len(raw_data) - num_train_samples - num_val_samples # 학습과 검증 데이터를 뺸것
print("num_train_samples:", num_train_samples)
print("num_val_samples:", num_val_samples)
print("num_test_samples:", num_test_samples)
mean = raw_data[:num_train_samples].mean(axis=0)
raw_data -= mean
std = raw_data[:num_train_samples].std(axis=0)
raw_data /= std #정규화 하는 것
import numpy as np
from tensorflow import keras
int_sequence = np.arange(10)
dummy_dataset = keras.utils.timeseries_dataset_from_array(
data=int_sequence[:-3],
targets=int_sequence[3:],
sequence_length=2,
batch_size=5,
)
for inputs, targets in dummy_dataset:
print(f"inputs.shape={inputs.shape}, targets.shape={targets.shape}")
for i in range(inputs.shape[0]):
print([int(x) for x in inputs[i]], int(targets[i]))
int_sequence = np.arange(100)
sampling_rate = 2
sequence_len = 5
delay = sampling_rate * (sequence_len + 4 - 1) # delay를 추가함
print(f"delay={delay}")
dummy_dataset = keras.utils.timeseries_dataset_from_array(
data=int_sequence[:-delay],
targets=int_sequence[delay:],
sampling_rate = sampling_rate,
sequence_length=sequence_len,
batch_size=3,
start_index = 10, # 인덱스 10-50까지 쓰겠다.
end_index = 50
)
sample_rate : 2
:data포인트를 나타낸다. (데이터끼리의 간격이다)
start_index : 사용할 시작 인덱스
end_index: 종료 인덱스
sampling_rate = 6
sequence_length = 120
delay = sampling_rate * (sequence_length + 24 - 1)
batch_size = 256
#traindata
train_dataset = keras.utils.timeseries_dataset_from_array( #t imeseries_dataset_from_array :
raw_data[:-delay],
targets=temperature[delay:],
sampling_rate=sampling_rate,
sequence_length=sequence_length,
shuffle=True,
batch_size=batch_size,
start_index=0,
end_index=num_train_samples)
#valdata
val_dataset = keras.utils.timeseries_dataset_from_array(
raw_data[:-delay],
targets=temperature[delay:],
sampling_rate=sampling_rate,
sequence_length=sequence_length,
shuffle=True,
batch_size=batch_size,
start_index=num_train_samples,
end_index=num_train_samples + num_val_samples)
# testdata
test_dataset = keras.utils.timeseries_dataset_from_array(
raw_data[:-delay],
targets=temperature[delay:],
sampling_rate=sampling_rate,
sequence_length=sequence_length,
shuffle=True,
batch_size=batch_size,
start_index=num_train_samples + num_val_samples)
for samples, targets in train_dataset:
print("샘플 크기:", samples.shape) #(batch_size, sequence_length, num_features) 형태로 표시 # 120:sequencelenght에 의해서 나온다.
print("타깃 크기:", targets.shape)
break