Skip to content
Snippets Groups Projects
Commit 0b6322d7 authored by Jan Habscheid's avatar Jan Habscheid
Browse files

predict for model implemented

parent 61e057f5
No related branches found
No related tags found
1 merge request!2Sni rom models
Showing with 1745 additions and 6294 deletions
......@@ -5,7 +5,7 @@ from xml.etree import ElementTree as ET
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import StandardScaler, MinMaxScaler
import joblib
from miscellaneous.DataPreparation import load_xml_to_numpy, remove_rows
from miscellaneous.DataPreparation import load_xml_to_numpy, remove_rows_abstract, remove_rows, remove_rows_iloc
import os
import shutil
......@@ -15,7 +15,7 @@ VELOCITY_SIZE = 3840
PRESSURE_SIZE = 1080
for stage in ['train', 'test']:
df = pd.read_excel(f'Data/{stage}/Parameter_input.xlsx').transpose()
df = pd.read_excel(f'Data/{stage}/parameter_input.xlsx').transpose()
N_FILES_STAGE = df.shape[1]
# Initialize empty arrays
......@@ -26,13 +26,17 @@ for stage in ['train', 'test']:
file_identifier = f'{index}.xml'
velocity_file = f'Data/{stage}/velocities/velocity_field_{file_identifier}'
pressure_file = f'Data/{stage}/Pressure/pressure_field_{file_identifier}'
pressure_file = f'Data/{stage}/pressure/pressure_field_{file_identifier}'
velocity_matrix[:,index] = load_xml_to_numpy(velocity_file)
pressure_matrix[:,index] = load_xml_to_numpy(pressure_file)
velocity_matrix, velocity_removed_rows_identifier = remove_rows(velocity_matrix, atol=1e-4, remove_nan=True)
pressure_matrix, pressure_removed_rows_identifier = remove_rows(pressure_matrix, atol=1e-4, remove_nan=True)
if stage == 'train':
velocity_matrix, velocity_removed_rows_identifier = remove_rows(velocity_matrix, 1e-4, True)
pressure_matrix, pressure_removed_rows_identifier = remove_rows(pressure_matrix, 1e-4, True)
elif stage == 'test':
velocity_matrix = remove_rows_iloc(velocity_matrix, velocity_removed_rows_identifier)
pressure_matrix = remove_rows_iloc(pressure_matrix, velocity_removed_rows_identifier)
# Save the data
if os.path.exists(f'Data/{stage}/matrices'):
......
......@@ -6,4 +6,8 @@ regMod = RegressionModels()
linregMod = LinearRegressionModel()
X_r_velocity, X_r_pressure = linregMod.POD(10)
model_velocity, model_pressure = linregMod.train(X_r_velocity, X_r_pressure)
\ No newline at end of file
model_velocity, model_pressure = linregMod.train(X_r_velocity, X_r_pressure)
predict_velocity_test, predict_pressure_test = linregMod.predict_test(model_velocity, model_pressure, scale=False)
predict_velocity_test_rescaled, predict_pressure_test_rescaled = linregMod.predict_test(model_velocity, model_pressure, scale=True)
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -15,7 +15,11 @@ def load_xml_to_numpy(file_path):
return data
def remove_rows_abstract(matrix, atol, remove_nan, stage, removed_rows_identifier):
if stage == 'train':
return remove_rows(matrix=matrix, atol=atol, remove_nan=remove_nan)
elif stage == 'test':
return remove_rows_iloc(matrix=matrix, removed_rows_identifier=removed_rows_identifier, remove_nan=remove_nan)
def remove_rows(matrix, atol=1e-8, remove_nan=True):
i = 0
......@@ -30,6 +34,20 @@ def remove_rows(matrix, atol=1e-8, remove_nan=True):
i += 1
removed_rows_counter += 1
matrix = np.nan_to_num(matrix, copy=False, nan=0.0, posinf=0.0, neginf=0.0)
if remove_nan:
matrix = np.nan_to_num(matrix, copy=False, nan=0.0, posinf=0.0, neginf=0.0)
return matrix, np.array(removed_rows_identifier)
def remove_rows_iloc(matrix, removed_rows_identifier, remove_nan=True):
i = 0
while i < matrix.shape[0]:
if i in removed_rows_identifier:
matrix = np.concatenate((matrix[:i,:], matrix[i+1:,:]), axis=0)
continue
i += 1
if remove_nan:
matrix = np.nan_to_num(matrix, copy=False, nan=0.0, posinf=0.0, neginf=0.0)
return matrix, np.array(removed_rows_identifier)
\ No newline at end of file
return matrix
\ No newline at end of file
File added
......@@ -16,7 +16,5 @@ class LinearRegressionModel(RegressionModels):
return model_velocity, model_pressure
# def predict(self, input, model_velocity, model_pressure, scaled=True):
# predict_velocity = model_velocity.predict(, self.param_matrix_test, scaled)
# return model.predict(X_test)
\ No newline at end of file
def predict_test(self, model_velocity, model_pressure, scale=True):
return super().predict_test(model_velocity, model_pressure, scale)
\ No newline at end of file
......@@ -49,4 +49,21 @@ class RegressionModels:
X_r_velocity = U_r_velocity @ (S_r_velocity @ V_r_velocity)
X_r_pressure = U_r_pressure @ (S_r_pressure @ V_r_pressure)
return X_r_velocity, X_r_pressure
\ No newline at end of file
return X_r_velocity, X_r_pressure
def scale_(self, data_velocity, data_pressure):
return self.scaler_velocity.transform(data_velocity), self.scaler_pressure.transform(data_pressure)
def inverse_scale_(self, data_velocity, data_pressure):
return self.scaler_velocity.inverse_transform(data_velocity), self.scaler_pressure.inverse_transform(data_pressure)
def predict_test(self, model_velocity, model_pressure, scale=True):
prediction_velocity = model_velocity.predict(self.param_matrix_test)
prediction_pressure = model_pressure.predict(self.param_matrix_test)
if scale==True:
prediction_velocity, prediction_pressure = self.inverse_scale_(
prediction_velocity,
prediction_pressure
)
return prediction_velocity.T, prediction_pressure.T
\ No newline at end of file
File added
File added
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment