def initTrainPredict(modelList, retrain=False, plot=True, interpol=False): # 4. Initiate and train models mlModule.initModels(modelList) mlModule.trainModels(retrain) # 5. Predict modelNames, metrics_train, metrics_test, columnsList, deviationsList = mlModule.predictWithModels( plot=plot, interpol=interpol, )
lstm_2, lstm_3, lstm_4, ensemble1, ensemble2, ] # Define whether to retrain models or not retrain = False mlModule.initModels(modelList) mlModule.trainModels(retrain) modelNames, metrics_train, metrics_test, columnsList, deviationsList = mlModule.predictWithModels( plot=True, interpol=False, score=True, ) import src.utils.utilities as utils import src.utils.plots as plots import matplotlib.pyplot as plt df_fouling = utils.readDataFile('../master-thesis-db/datasets/D/foulingC.csv') df_fouling = utils.getDataWithTimeIndex(df_fouling) def foulingPlot(deviationsList, name): y1 = deviationsList[0][0][2] y2 = (-1) * df_fouling['Fouling'].values[mlModule._maxEnrolWindow:] x = mlModule._indexColumn
def featureComparison( irrelevantColumnsList, filename, columns, traintime, testtime, targetColumns, enrolWindow, ): global colors, models columnsLists = [] deviationsLists = [] names = [] trainmetrics = [] testmetrics = [] for i, irrelevantColumns in enumerate(irrelevantColumnsList): mlModule.reset() df = mlModule.initDataframe(filename, columns, irrelevantColumns) df_train, df_test = mlModule.getTestTrainSplit(traintime, testtime) X_train, y_train, X_test, y_test = mlModule.getFeatureTargetSplit( targetColumns) mlp_1 = mlModule.MLP('MLP 1x64 d0.2 mod' + models[i], layers=[64], dropout=0.2) mlp_2 = mlModule.MLP('MLP 1x128 d0.2 mod' + models[i], layers=[128], dropout=0.2) mlp_3 = mlModule.MLP('MLP 2x64 d0.2 mod' + models[i], layers=[64, 64], dropout=0.2) mlp_4 = mlModule.MLP('MLP 2x128 d0.2 mod' + models[i], layers=[128, 128], dropout=0.2) lstm_1 = mlModule.LSTM('LSTM 1x64 d0.2 mod' + models[i], layers=[64], dropout=0.2, recurrentDropout=0.2, enrolWindow=12) lstm_2 = mlModule.LSTM('LSTM 1x128 d0.2 mod' + models[i], layers=[128], dropout=0.2, recurrentDropout=0.2, enrolWindow=12) lstm_3 = mlModule.LSTM('LSTM 2x64 d0.2 mod' + models[i], layers=[64, 64], dropout=0.2, recurrentDropout=0.2, enrolWindow=12) lstm_4 = mlModule.LSTM('LSTM 2x128 d0.2 mod' + models[i], layers=[128, 128], dropout=0.2, recurrentDropout=0.2, enrolWindow=12) linear = mlModule.Linear_Regularized('Linear rCV mod' + models[i]) modelList = [ mlp_1, mlp_2, mlp_3, mlp_4, lstm_1, lstm_2, lstm_3, lstm_4, linear, ] mlModule.initModels(modelList) retrain = False mlModule.trainModels(retrain) modelNames, metrics_train, metrics_test, columnsList, deviationsList = mlModule.predictWithModels( plot=True, score=True) if i < 1: columnsLists = columnsList deviationsLists = deviationsList all_names = modelNames all_train_metrics = metrics_train all_test_metrics = metrics_test else: for j_target in range(len(columnsList)): for k_model in range(1, len(columnsList[j_target])): columnsLists[j_target].append( columnsList[j_target][k_model]) for k_model in range(0, len(deviationsList[j_target])): deviationsLists[j_target].append( deviationsList[j_target][k_model]) all_names = [*all_names, *modelNames] all_train_metrics = [*all_train_metrics, *metrics_train] all_test_metrics = [*all_test_metrics, *metrics_test] names.append(modelNames) trainmetrics.append(metrics_train) testmetrics.append(metrics_test) indexColumn = mlModule._indexColumn columnDescriptions = mlModule._columnDescriptions columnUnits = mlModule._columnUnits traintime = mlModule._traintime for i in range(len(deviationsLists)): for j in range(len(deviationsLists[i])): deviationsLists[i][j][3] = colors[j] for i in range(len(columnsLists)): columnsList[i][0][3] = 'red' for j in range(1, len(columnsLists[i])): columnsLists[i][j][3] = colors[j - 1] printModelScores( all_names, all_train_metrics, all_test_metrics, ) plotModelPredictions( plt, deviationsLists, columnsLists, indexColumn, columnDescriptions, columnUnits, traintime, interpol=False, ) plotModelScores( plt, all_names, all_train_metrics, all_test_metrics, )