From 3cbef17b0c40cc25082447fe0324524b2d7a2840 Mon Sep 17 00:00:00 2001 From: nuluh Date: Mon, 28 Jul 2025 05:20:10 +0700 Subject: [PATCH 1/2] feat(model_selection): add timing for model training and validation processes --- code/src/ml/model_selection.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/code/src/ml/model_selection.py b/code/src/ml/model_selection.py index 5243536..2c10474 100644 --- a/code/src/ml/model_selection.py +++ b/code/src/ml/model_selection.py @@ -117,11 +117,20 @@ def train_and_evaluate_model( result = {"model": model_name, "sensor": sensor_label, "success": False} try: + import time + start_time = time.time() + # Train the model model.fit(x_train, y_train) + result["elapsed_time_training"] = time.time() - start_time try: + # Predict on the test set (validation) + start_time = time.time() + y_pred = model.predict(x_test) + + result["elapsed_time_validation"] = time.time() - start_time result["y_pred"] = y_pred # Convert to numpy array except Exception as e: result["error"] = f"Prediction error: {str(e)}" From 3e2b153d11fa600c44dee0c86f9b7c18bc869ab9 Mon Sep 17 00:00:00 2001 From: nuluh Date: Mon, 28 Jul 2025 05:22:24 +0700 Subject: [PATCH 2/2] refactor(stft): comment out unused imports and update SVM model loading for consistency --- code/notebooks/stft.ipynb | 38 ++++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/code/notebooks/stft.ipynb b/code/notebooks/stft.ipynb index ceb9176..0f62cb6 100644 --- a/code/notebooks/stft.ipynb +++ b/code/notebooks/stft.ipynb @@ -636,11 +636,11 @@ "from sklearn.preprocessing import StandardScaler\n", "from sklearn.svm import SVC\n", "from sklearn.decomposition import PCA\n", - "from xgboost import XGBClassifier\n", - "from sklearn.ensemble import RandomForestClassifier, BaggingClassifier\n", - "from sklearn.tree import DecisionTreeClassifier\n", - "from sklearn.neighbors import KNeighborsClassifier\n", - "from sklearn.discriminant_analysis import LinearDiscriminantAnalysis\n", + "# from xgboost import XGBClassifier\n", + "# from sklearn.ensemble import RandomForestClassifier, BaggingClassifier\n", + "# from sklearn.tree import DecisionTreeClassifier\n", + "# from sklearn.neighbors import KNeighborsClassifier\n", + "# from sklearn.discriminant_analysis import LinearDiscriminantAnalysis\n", "from sklearn.neural_network import MLPClassifier\n", "\n" ] @@ -669,11 +669,11 @@ " # StandardScaler(),\n", " # SVC(kernel='rbf', probability=True)\n", " # ),\n", - " # \"SVM with StandardScaler and PCA\": make_pipeline(\n", - " # StandardScaler(),\n", - " # PCA(n_components=10),\n", - " # SVC(kernel='rbf')\n", - " # ),\n", + " \"SVM with StandardScaler and PCA\": make_pipeline(\n", + " StandardScaler(),\n", + " PCA(n_components=10),\n", + " SVC(kernel='rbf', probability=True)\n", + " ),\n", "\n", " # \"XGBoost\": XGBClassifier()\n", " \"MLPClassifier\": make_pipeline(\n", @@ -818,8 +818,22 @@ "source": [ "# 4. Sensor A Validate on Dataset B\n", "from joblib import load\n", - "svm_model = load('D:/thesis/models/sensor1/SVM.joblib')\n", - "y_pred_svm_1 = svm_model.predict(X1b)" + "svm_model = load('D:/thesis/models/Sensor A/SVM with StandardScaler and PCA.joblib')\n", + "y_pred_svm_1 = svm_model.predict_proba(X1b)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "# Set NumPy to display full decimal values\n", + "np.set_printoptions(suppress=True, precision=6) # Suppress scientific notation, set precision to 6 decimals\n", + "\n", + "y_pred_svm_1[1]" ] }, {