add custom scaler steps

This commit is contained in:
Hannes Signer 2025-01-20 19:40:57 +01:00
parent f0a4ddddc6
commit 81d35796f8
2 changed files with 1047 additions and 126 deletions

File diff suppressed because one or more lines are too long

87
preprocessing.py Normal file
View File

@ -0,0 +1,87 @@
import keras
print("Running Keras in version {}".format(keras.__version__))
import h5py
import numpy as np
import pandas as pd
import time
import sklearn.model_selection as sk
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from imblearn.over_sampling import SMOTE
from imblearn.under_sampling import RandomUnderSampler
from imblearn.over_sampling import RandomOverSampler
from collections import Counter
import os
# preprocessing pipeline
#
def Safelog(val):
# get range of vector
if val > 0:
return np.log10(val)
elif val < 0:
return -np.log10(-val)
else:
return 0
def Safeexp(val):
if val > 0:
return -10 ** -val
elif val < 0:
return 10 ** val
else:
return 0
class FuncTransform():
'''
Class to transform and inverse transform data with given functions.
Transform and inverse transform functions have to be given as dictionaries in the following format:
{'key1': function1, 'key2': function2, ...}
'''
def __init__(self, func_transform, func_inverse):
self.func_transform = func_transform
self.func_inverse = func_inverse
def fit(self, X):
return self
def transform(self, X):
X = X.copy()
for key in X.keys():
if "Class" not in key:
X[key] = X[key].apply(self.func_transform[key])
return X
def fit_transform(self, X):
return self.fit(X).transform(X)
def inverse_transform(self, X_log):
X_log = X_log.copy()
for key in X_log.keys():
if "Class" not in key:
X_log[key] = X_log[key].apply(self.func_inverse[key])
return X_log
class DataSetSampling():
def __init__(self, X, y, sampling_strategy):
self.X = X
self.y = y
self.sampling_strategy = sampling_strategy
def fit(self, X):
return self
def transform(self):
return self
class Scaling():