From 8d5d96812886aef88a2db7194a41d9defedb1ada Mon Sep 17 00:00:00 2001 From: Jonathan Herrewijnen Date: Sun, 29 Oct 2023 19:29:01 +0100 Subject: [PATCH] Added mlops --- debug.py | 6 ++++- herrewebpy/mlops/__init__.py | 1 + herrewebpy/mlops/anomaly_scoring.py | 35 +++++++++++++++++++++++++++++ herrewebpy/trains/ns_api.py | 3 ++- requirements.txt | 6 ++++- 5 files changed, 48 insertions(+), 3 deletions(-) create mode 100644 herrewebpy/mlops/__init__.py create mode 100644 herrewebpy/mlops/anomaly_scoring.py diff --git a/debug.py b/debug.py index 75247d6..72ef043 100644 --- a/debug.py +++ b/debug.py @@ -1 +1,5 @@ -import herrewebpy \ No newline at end of file +from herrewebpy.mlops import anomaly_scoring +import seaborn as sns + +df = sns.load_dataset('iris') +anomaly_scoring.train_model(df) \ No newline at end of file diff --git a/herrewebpy/mlops/__init__.py b/herrewebpy/mlops/__init__.py new file mode 100644 index 0000000..b974282 --- /dev/null +++ b/herrewebpy/mlops/__init__.py @@ -0,0 +1 @@ +from . import * \ No newline at end of file diff --git a/herrewebpy/mlops/anomaly_scoring.py b/herrewebpy/mlops/anomaly_scoring.py new file mode 100644 index 0000000..9af949a --- /dev/null +++ b/herrewebpy/mlops/anomaly_scoring.py @@ -0,0 +1,35 @@ +from herrewebpy import logger + +import pandas as pd +import numpy as np +import tensorflow as tf +from sklearn.preprocessing import StandardScaler + + +def perceptron_build_model(df, hidden_units=64): + numerical_features = df.select_dtypes(include=[np.number]) + + # Standardize the numerical features + scaler = StandardScaler() + scaled_data = scaler.fit_transform(numerical_features) + + # Define the Perceptron model + input_dim = scaled_data.shape[1] + + model = tf.keras.Sequential([ + tf.keras.layers.Input(shape=(input_dim,)), + tf.keras.layers.Dense(hidden_units, activation='relu'), + tf.keras.layers.Dense(1) # Output layer for regression + ]) + + # Compile the model + model.compile(optimizer='adam', loss='mean_squared_error') + return model, scaled_data + + +def train_model(df): + model, scaled_data = perceptron_build_model(df) + epochs = 100 + batch_size = 32 + + model.fit(scaled_data, scaled_data, epochs=epochs, batch_size=batch_size, verbose=1) diff --git a/herrewebpy/trains/ns_api.py b/herrewebpy/trains/ns_api.py index 3a67e2e..24f71ea 100644 --- a/herrewebpy/trains/ns_api.py +++ b/herrewebpy/trains/ns_api.py @@ -1,4 +1,5 @@ import requests from herrewebpy import logger -logger.info(f'Running here') \ No newline at end of file +logger.info(f'Running {__file__}') + diff --git a/requirements.txt b/requirements.txt index a11ef2f..74c894b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,6 @@ pandas -numpy \ No newline at end of file +numpy +tensorflow +sklearn +seaborn +scikit-learn \ No newline at end of file