import numpy as np
from .data import Data
from .. import config
from .. import utils
[docs]
class DataSet(Data):
"""Fitting Data set.
Args:
col_x: List of integers.
col_y: List of integers.
"""
def __init__(
self,
X_train=None,
y_train=None,
X_test=None,
y_test=None,
fname_train=None,
fname_test=None,
col_x=None,
col_y=None,
standardize=False,
):
if X_train is not None:
self.train_x = X_train.astype(config.real(np))
self.train_y = y_train.astype(config.real(np))
self.test_x = X_test.astype(config.real(np))
self.test_y = y_test.astype(config.real(np))
elif fname_train is not None:
train_data = np.loadtxt(fname_train)
self.train_x = train_data[:, col_x].astype(config.real(np))
self.train_y = train_data[:, col_y].astype(config.real(np))
test_data = np.loadtxt(fname_test)
self.test_x = test_data[:, col_x].astype(config.real(np))
self.test_y = test_data[:, col_y].astype(config.real(np))
else:
raise ValueError("No training data.")
self.scaler_x = None
if standardize:
self.scaler_x, self.train_x, self.test_x = utils.standardize(
self.train_x, self.test_x
)
[docs]
def losses(self, targets, outputs, loss_fn, inputs, model, aux=None):
return loss_fn(targets, outputs)
[docs]
def train_next_batch(self, batch_size=None):
return self.train_x, self.train_y
[docs]
def test(self):
return self.test_x, self.test_y