diff --git a/MaCh3PythonUtils/machine_learning/fml_interface.py b/MaCh3PythonUtils/machine_learning/fml_interface.py index 86d99bc..6a22cd6 100644 --- a/MaCh3PythonUtils/machine_learning/fml_interface.py +++ b/MaCh3PythonUtils/machine_learning/fml_interface.py @@ -7,6 +7,7 @@ from matplotlib.colors import LinearSegmentedColormap from sklearn import metrics +from sklearn.preprocessing import StandardScaler import matplotlib.pyplot as plt import scipy.stats as stats import numpy as np @@ -40,6 +41,7 @@ def __init__(self, chain: ChainHandler, prediction_variable: str) -> None: self._training_labels=None self._test_data=None self._test_labels=None + self._scalar = StandardScaler() def __separate_dataframe(self)->Tuple[pd.DataFrame, pd.DataFrame]: # Separates dataframe into features + labels @@ -52,6 +54,8 @@ def set_training_test_set(self, test_size: float): # Splits in traing + test_spit features, labels = self.__separate_dataframe() self._training_data, self._test_data, self._training_labels, self._test_labels = train_test_split(features, labels, test_size=test_size) + self._training_data = self._scalar.fit_transform(self._training_data) + @property def model(self)->Any: diff --git a/MaCh3PythonUtils/machine_learning/scikit_interface.py b/MaCh3PythonUtils/machine_learning/scikit_interface.py index 719f65e..3564bcb 100644 --- a/MaCh3PythonUtils/machine_learning/scikit_interface.py +++ b/MaCh3PythonUtils/machine_learning/scikit_interface.py @@ -26,8 +26,11 @@ def train_model(self): self._model.fit(self._training_data, self._training_labels) def model_predict(self, test_data: DataFrame): + + scale_data = self._scalar.transform(test_data) + if self._model is None: raise ValueError("No Model has been set!") - return self._model.predict(test_data) + return self._model.predict(scale_data) \ No newline at end of file diff --git a/MaCh3PythonUtils/machine_learning/tf_interface.py b/MaCh3PythonUtils/machine_learning/tf_interface.py index c61bd67..2f5c4c5 100644 --- a/MaCh3PythonUtils/machine_learning/tf_interface.py +++ b/MaCh3PythonUtils/machine_learning/tf_interface.py @@ -48,6 +48,9 @@ def save_model(self, output_file: str): def load_model(self, input_file: str): self._model = tf.saved_model.load(input_file) - def model_predict(self, testing_data): + def model_predict(self, test_data): + + scale_data = self._scalar.transform(test_data) + # Hacky but means it's consistent with sci-kit interface - return self._model.predict_on_batch(testing_data).T[0] + return self._model.predict_on_batch(scale_data).T[0] diff --git a/configs/tensorflow_config.yml b/configs/tensorflow_config.yml index 7fbc6c3..9d2d0f2 100644 --- a/configs/tensorflow_config.yml +++ b/configs/tensorflow_config.yml @@ -15,7 +15,7 @@ FitterSettings: FitterPackage : "TensorFlow" FitterName : "Sequential" - TestSize : 0.9 + TestSize : 0.4 FitterKwargs: BuildSettings: @@ -25,15 +25,18 @@ FitterSettings: Layers: - dense: units: 128 + activation: 'relu' - dense: units: 64 + activation: 'relu' - dropout: rate: 0.5 - dense: units: 16 + activation: 'relu' - dense: units: 1 FitSettings: batch_size: 100 - epochs: 10 \ No newline at end of file + epochs: 200 \ No newline at end of file