From 0f1a05f293d9469142ee101cd497d1cd30407b56 Mon Sep 17 00:00:00 2001 From: saeedkhosravi94 Date: Sun, 7 Dec 2025 08:26:57 +0100 Subject: [PATCH] features checking --- .gitignore | 3 +- 38323473-2aab-4553-b759-81bc15506d7e.png | Bin 0 -> 98608 bytes Electrocardiogram.Rproj | 13 ++ feature_selection_results.csv | 32 ++++ main.R | 222 +++++++++++++++++++++++ 5 files changed, 269 insertions(+), 1 deletion(-) create mode 100644 38323473-2aab-4553-b759-81bc15506d7e.png create mode 100644 Electrocardiogram.Rproj create mode 100644 feature_selection_results.csv create mode 100644 main.R diff --git a/.gitignore b/.gitignore index 6936905..7850657 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ data/ -.DS_Store \ No newline at end of file +.DS_Store +.Rproj.user diff --git a/38323473-2aab-4553-b759-81bc15506d7e.png b/38323473-2aab-4553-b759-81bc15506d7e.png new file mode 100644 index 0000000000000000000000000000000000000000..2cb47e4865d385f554299c29e6bdc205d5a618fe GIT binary patch literal 98608 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 F`4^u(U_k%? literal 0 HcmV?d00001 diff --git a/Electrocardiogram.Rproj b/Electrocardiogram.Rproj new file mode 100644 index 0000000..8e3c2eb --- /dev/null +++ b/Electrocardiogram.Rproj @@ -0,0 +1,13 @@ +Version: 1.0 + +RestoreWorkspace: Default +SaveWorkspace: Default +AlwaysSaveHistory: Default + +EnableCodeIndexing: Yes +UseSpacesForTab: Yes +NumSpacesForTab: 2 +Encoding: UTF-8 + +RnwWeave: Sweave +LaTeX: pdfLaTeX diff --git a/feature_selection_results.csv b/feature_selection_results.csv new file mode 100644 index 0000000..2d59e13 --- /dev/null +++ b/feature_selection_results.csv @@ -0,0 +1,32 @@ +"Num_Features","Features","Accuracy","F1_class1","F2_class1","Precision_class1","Recall_class1" +1,"freq_median_freq",0.9773,0.4111,0.3103,0.8966,0.2667 +2,"freq_median_freq, time_kurtosis",0.9806,0.5544,0.454,0.8778,0.4051 +3,"freq_median_freq, time_kurtosis, freq_peak_freq",0.9812,0.5859,0.4932,0.8529,0.4462 +4,"freq_median_freq, time_kurtosis, freq_peak_freq, acf_time_decay",0.9808,0.5743,0.4824,0.8416,0.4359 +5,"freq_median_freq, time_kurtosis, freq_peak_freq, acf_time_decay, time_ptp",0.9844,0.6928,0.627,0.8394,0.5897 +6,"freq_median_freq, time_kurtosis, freq_peak_freq, acf_time_decay, time_ptp, freq_centroid",0.9863,0.7305,0.6638,0.8777,0.6256 +7,"freq_median_freq, time_kurtosis, freq_peak_freq, acf_time_decay, time_ptp, freq_centroid, freq_top1_amp",0.9847,0.7024,0.6406,0.8369,0.6051 +8,"freq_median_freq, time_kurtosis, freq_peak_freq, acf_time_decay, time_ptp, freq_centroid, freq_top1_amp, freq_rolloff_95",0.9855,0.7164,0.6522,0.8571,0.6154 +9,"freq_median_freq, time_kurtosis, freq_peak_freq, acf_time_decay, time_ptp, freq_centroid, freq_top1_amp, freq_rolloff_95, acf_mean_abs",0.985,0.7118,0.6541,0.8345,0.6205 +10,"freq_median_freq, time_kurtosis, freq_peak_freq, acf_time_decay, time_ptp, freq_centroid, freq_top1_amp, freq_rolloff_95, acf_mean_abs, time_std",0.986,0.7278,0.6663,0.8601,0.6308 +11,"freq_median_freq, time_kurtosis, freq_peak_freq, acf_time_decay, time_ptp, freq_centroid, freq_top1_amp, freq_rolloff_95, acf_mean_abs, time_std, time_range_ratio",0.9863,0.7353,0.6757,0.8621,0.641 +12,"freq_median_freq, time_kurtosis, freq_peak_freq, acf_time_decay, time_ptp, freq_centroid, freq_top1_amp, freq_rolloff_95, acf_mean_abs, time_std, time_range_ratio, time_min",0.9852,0.7104,0.6467,0.85,0.6103 +13,"freq_median_freq, time_kurtosis, freq_peak_freq, acf_time_decay, time_ptp, freq_centroid, freq_top1_amp, freq_rolloff_95, acf_mean_abs, time_std, time_range_ratio, time_min, time_skew",0.9867,0.7449,0.6857,0.8699,0.6513 +14,"freq_median_freq, time_kurtosis, freq_peak_freq, acf_time_decay, time_ptp, freq_centroid, freq_top1_amp, freq_rolloff_95, acf_mean_abs, time_std, time_range_ratio, time_min, time_skew, acf_integral_time",0.986,0.7278,0.6663,0.8601,0.6308 +15,"freq_median_freq, time_kurtosis, freq_peak_freq, acf_time_decay, time_ptp, freq_centroid, freq_top1_amp, freq_rolloff_95, acf_mean_abs, time_std, time_range_ratio, time_min, time_skew, acf_integral_time, ar_r2",0.9875,0.7602,0.7012,0.8844,0.6667 +16,"freq_median_freq, time_kurtosis, freq_peak_freq, acf_time_decay, time_ptp, freq_centroid, freq_top1_amp, freq_rolloff_95, acf_mean_abs, time_std, time_range_ratio, time_min, time_skew, acf_integral_time, ar_r2, time_var",0.987,0.7493,0.6872,0.8819,0.6513 +17,"freq_median_freq, time_kurtosis, freq_peak_freq, acf_time_decay, time_ptp, freq_centroid, freq_top1_amp, freq_rolloff_95, acf_mean_abs, time_std, time_range_ratio, time_min, time_skew, acf_integral_time, ar_r2, time_var, acf_val_dom",0.986,0.7294,0.6703,0.8552,0.6359 +18,"freq_median_freq, time_kurtosis, freq_peak_freq, acf_time_decay, time_ptp, freq_centroid, freq_top1_amp, freq_rolloff_95, acf_mean_abs, time_std, time_range_ratio, time_min, time_skew, acf_integral_time, ar_r2, time_var, acf_val_dom, ar_resid_var",0.9864,0.739,0.6803,0.863,0.6462 +19,"freq_median_freq, time_kurtosis, freq_peak_freq, acf_time_decay, time_ptp, freq_centroid, freq_top1_amp, freq_rolloff_95, acf_mean_abs, time_std, time_range_ratio, time_min, time_skew, acf_integral_time, ar_r2, time_var, acf_val_dom, ar_resid_var, time_iqr",0.9855,0.7181,0.6562,0.8521,0.6205 +20,"freq_median_freq, time_kurtosis, freq_peak_freq, acf_time_decay, time_ptp, freq_centroid, freq_top1_amp, freq_rolloff_95, acf_mean_abs, time_std, time_range_ratio, time_min, time_skew, acf_integral_time, ar_r2, time_var, acf_val_dom, ar_resid_var, time_iqr, freq_bandwidth",0.9858,0.7257,0.6656,0.8542,0.6308 +21,"freq_median_freq, time_kurtosis, freq_peak_freq, acf_time_decay, time_ptp, freq_centroid, freq_top1_amp, freq_rolloff_95, acf_mean_abs, time_std, time_range_ratio, time_min, time_skew, acf_integral_time, ar_r2, time_var, acf_val_dom, ar_resid_var, time_iqr, freq_bandwidth, time_max",0.9861,0.7362,0.6828,0.8467,0.6513 +22,"freq_median_freq, time_kurtosis, freq_peak_freq, acf_time_decay, time_ptp, freq_centroid, freq_top1_amp, freq_rolloff_95, acf_mean_abs, time_std, time_range_ratio, time_min, time_skew, acf_integral_time, ar_r2, time_var, acf_val_dom, ar_resid_var, time_iqr, freq_bandwidth, time_max, freq_entropy",0.9863,0.7368,0.6796,0.8571,0.6462 +23,"freq_median_freq, time_kurtosis, freq_peak_freq, acf_time_decay, time_ptp, freq_centroid, freq_top1_amp, freq_rolloff_95, acf_mean_abs, time_std, time_range_ratio, time_min, time_skew, acf_integral_time, ar_r2, time_var, acf_val_dom, ar_resid_var, time_iqr, freq_bandwidth, time_max, freq_entropy, time_p5",0.986,0.7278,0.6663,0.8601,0.6308 +24,"freq_median_freq, time_kurtosis, freq_peak_freq, acf_time_decay, time_ptp, freq_centroid, freq_top1_amp, freq_rolloff_95, acf_mean_abs, time_std, time_range_ratio, time_min, time_skew, acf_integral_time, ar_r2, time_var, acf_val_dom, ar_resid_var, time_iqr, freq_bandwidth, time_max, freq_entropy, time_p5, ar1_coef",0.9864,0.739,0.6803,0.863,0.6462 +25,"freq_median_freq, time_kurtosis, freq_peak_freq, acf_time_decay, time_ptp, freq_centroid, freq_top1_amp, freq_rolloff_95, acf_mean_abs, time_std, time_range_ratio, time_min, time_skew, acf_integral_time, ar_r2, time_var, acf_val_dom, ar_resid_var, time_iqr, freq_bandwidth, time_max, freq_entropy, time_p5, ar1_coef, time_p95",0.9857,0.7219,0.6609,0.8531,0.6256 +26,"freq_median_freq, time_kurtosis, freq_peak_freq, acf_time_decay, time_ptp, freq_centroid, freq_top1_amp, freq_rolloff_95, acf_mean_abs, time_std, time_range_ratio, time_min, time_skew, acf_integral_time, ar_r2, time_var, acf_val_dom, ar_resid_var, time_iqr, freq_bandwidth, time_max, freq_entropy, time_p5, ar1_coef, time_p95, time_mean",0.9857,0.7251,0.6688,0.8435,0.6359 +27,"freq_median_freq, time_kurtosis, freq_peak_freq, acf_time_decay, time_ptp, freq_centroid, freq_top1_amp, freq_rolloff_95, acf_mean_abs, time_std, time_range_ratio, time_min, time_skew, acf_integral_time, ar_r2, time_var, acf_val_dom, ar_resid_var, time_iqr, freq_bandwidth, time_max, freq_entropy, time_p5, ar1_coef, time_p95, time_mean, time_p25",0.9861,0.7347,0.6789,0.8514,0.6462 +28,"freq_median_freq, time_kurtosis, freq_peak_freq, acf_time_decay, time_ptp, freq_centroid, freq_top1_amp, freq_rolloff_95, acf_mean_abs, time_std, time_range_ratio, time_min, time_skew, acf_integral_time, ar_r2, time_var, acf_val_dom, ar_resid_var, time_iqr, freq_bandwidth, time_max, freq_entropy, time_p5, ar1_coef, time_p95, time_mean, time_p25, freq_top1_freq",0.9866,0.7381,0.6732,0.8794,0.6359 +29,"freq_median_freq, time_kurtosis, freq_peak_freq, acf_time_decay, time_ptp, freq_centroid, freq_top1_amp, freq_rolloff_95, acf_mean_abs, time_std, time_range_ratio, time_min, time_skew, acf_integral_time, ar_r2, time_var, acf_val_dom, ar_resid_var, time_iqr, freq_bandwidth, time_max, freq_entropy, time_p5, ar1_coef, time_p95, time_mean, time_p25, freq_top1_freq, time_median",0.9855,0.7214,0.6641,0.8425,0.6308 +30,"freq_median_freq, time_kurtosis, freq_peak_freq, acf_time_decay, time_ptp, freq_centroid, freq_top1_amp, freq_rolloff_95, acf_mean_abs, time_std, time_range_ratio, time_min, time_skew, acf_integral_time, ar_r2, time_var, acf_val_dom, ar_resid_var, time_iqr, freq_bandwidth, time_max, freq_entropy, time_p5, ar1_coef, time_p95, time_mean, time_p25, freq_top1_freq, time_median, time_p75",0.9861,0.7284,0.663,0.8714,0.6256 +31,"freq_median_freq, time_kurtosis, freq_peak_freq, acf_time_decay, time_ptp, freq_centroid, freq_top1_amp, freq_rolloff_95, acf_mean_abs, time_std, time_range_ratio, time_min, time_skew, acf_integral_time, ar_r2, time_var, acf_val_dom, ar_resid_var, time_iqr, freq_bandwidth, time_max, freq_entropy, time_p5, ar1_coef, time_p95, time_mean, time_p25, freq_top1_freq, time_median, time_p75, time_rms",0.9869,0.7485,0.6904,0.8707,0.6564 diff --git a/main.R b/main.R new file mode 100644 index 0000000..ae120fe --- /dev/null +++ b/main.R @@ -0,0 +1,222 @@ +#install.packages("lightgbm", repos = "https://cran.r-project.org") +#install.packages("MLmetrics") + +library(lightgbm) +library(MLmetrics) + +# 1. Load your data +df <- read.csv("./data/Ketamine_icp_no_x.csv") + +# --- 2. Data Preparation --- +target_name <- "label" +target_index <- which(names(df) == target_name) + +# Prepare target variable +if (is.factor(df[, target_index])) { + y <- as.numeric(df[, target_index]) - 1 +} else { + y <- df[, target_index] +} + +# Create the data matrix for features +X <- as.matrix(df[, -target_index]) + +# --- 3. Split Data into Training and Testing Sets --- +set.seed(42) +train_index <- sample(nrow(X), size = 0.8 * nrow(X)) + +X_train <- X[train_index, ] +X_test <- X[-train_index, ] +y_train <- y[train_index] +y_test <- y[-train_index] + +# --- 4. Get Feature Importance from Full Model --- +lgb_train_full <- lgb.Dataset(data = X_train, label = y_train) + +params <- list( + objective = "binary", + metric = "binary_logloss", + boosting_type = "gbdt", + num_leaves = 20, + learning_rate = 0.05, + feature_fraction = 0.8 +) + +bst_full <- lgb.train( + params = params, + data = lgb_train_full, + nrounds = 100, + verbose = -1 +) + +# Get feature importance +importance <- lgb.importance(bst_full) +num_features <- nrow(importance) + +# Create a data frame to store results +results_df <- data.frame( + Num_Features = integer(), + Features = character(), + Accuracy = numeric(), + F1_class1 = numeric(), + F2_class1 = numeric(), + Precision_class1 = numeric(), + Recall_class1 = numeric() +) + +# --- 5. Loop through different numbers of top features --- +cat("Training models with different numbers of top features...\n") +cat("=====================================================\n") + +for (i in 1:num_features) { + cat(paste("Training model with top", i, "features...\n")) + + # Select top i features + top_features <- importance$Feature[1:i] + + # Subset training and test data + X_train_sub <- X_train[, top_features, drop = FALSE] + X_test_sub <- X_test[, top_features, drop = FALSE] + + # Create LightGBM dataset + lgb_train_sub <- lgb.Dataset(data = X_train_sub, label = y_train) + + # Train model with subset of features + bst_sub <- lgb.train( + params = params, + data = lgb_train_sub, + nrounds = 100, + verbose = -1 + ) + + # Make predictions + pred_prob_sub <- predict(bst_sub, X_test_sub) + pred_class_sub <- as.numeric(pred_prob_sub > 0.5) + + # Calculate metrics + accuracy <- mean(pred_class_sub == y_test) + + # For binary classification + if (length(unique(y_test)) == 2) { + # F1 score for class 1 + f1 <- F1_Score(y_true = y_test, y_pred = pred_class_sub, positive = 1) + + # Precision and Recall for class 1 + precision <- Precision(y_true = y_test, y_pred = pred_class_sub, positive = 1) + recall <- Recall(y_true = y_test, y_pred = pred_class_sub, positive = 1) + + # F2-score (beta = 2) + beta <- 2 + f2 <- (1 + beta^2) * (precision * recall) / (beta^2 * precision + recall) + + # Handle cases where precision or recall might be NaN + if (is.na(f2)) { + f2 <- 0 + } + } else { + # For multi-class classification + f1 <- NA + precision <- NA + recall <- NA + f2 <- NA + } + + # Store results + results_df <- rbind(results_df, data.frame( + Num_Features = i, + Features = paste(top_features, collapse = ", "), + Accuracy = round(accuracy, 4), + F1_class1 = round(f1, 4), + F2_class1 = round(f2, 4), + Precision_class1 = round(precision, 4), + Recall_class1 = round(recall, 4) + )) + + # Print progress + cat(paste(" Accuracy:", round(accuracy, 4), + "| F1:", round(f1, 4), + "| F2:", round(f2, 4), + "| Precision:", round(precision, 4), + "| Recall:", round(recall, 4), "\n")) +} + +cat("=====================================================\n") + +# --- 6. Display Results --- +cat("\nSummary of Results:\n") +cat("===================\n") +print(results_df) + +# Find best performing models based on different metrics +cat("\nBest Performing Models:\n") +cat("=======================\n") + +# Best by F1 score +if (!all(is.na(results_df$F1_class1))) { + best_f1_idx <- which.max(results_df$F1_class1) + cat(paste("Best F1-score (", results_df$F1_class1[best_f1_idx], + ") with", results_df$Num_Features[best_f1_idx], "features\n")) +} + +# Best by F2 score +if (!all(is.na(results_df$F2_class1))) { + best_f2_idx <- which.max(results_df$F2_class1) + cat(paste("Best F2-score (", results_df$F2_class1[best_f2_idx], + ") with", results_df$Num_Features[best_f2_idx], "features\n")) +} + +# Best by Accuracy +best_acc_idx <- which.max(results_df$Accuracy) +cat(paste("Best Accuracy (", results_df$Accuracy[best_acc_idx], + ") with", results_df$Num_Features[best_acc_idx], "features\n")) + +# --- 7. Optional: Plot metrics vs number of features --- +if (require(ggplot2)) { + library(ggplot2) + + # Plot F1 and F2 scores + p1 <- ggplot(results_df, aes(x = Num_Features)) + + geom_line(aes(y = F1_class1, color = "F1 Score"), size = 1) + + geom_line(aes(y = F2_class1, color = "F2 Score"), size = 1) + + geom_point(aes(y = F1_class1, color = "F1 Score"), size = 2) + + geom_point(aes(y = F2_class1, color = "F2 Score"), size = 2) + + labs(title = "F1 and F2 Scores vs Number of Features", + x = "Number of Top Features", + y = "Score Value") + + theme_minimal() + + scale_color_manual(values = c("F1 Score" = "blue", "F2 Score" = "red")) + + # Plot Accuracy + p2 <- ggplot(results_df, aes(x = Num_Features, y = Accuracy)) + + geom_line(color = "darkgreen", size = 1) + + geom_point(color = "darkgreen", size = 2) + + labs(title = "Accuracy vs Number of Features", + x = "Number of Top Features", + y = "Accuracy") + + theme_minimal() + + # Plot Precision and Recall + p3 <- ggplot(results_df, aes(x = Num_Features)) + + geom_line(aes(y = Precision_class1, color = "Precision"), size = 1) + + geom_line(aes(y = Recall_class1, color = "Recall"), size = 1) + + geom_point(aes(y = Precision_class1, color = "Precision"), size = 2) + + geom_point(aes(y = Recall_class1, color = "Recall"), size = 2) + + labs(title = "Precision and Recall (Class 1) vs Number of Features", + x = "Number of Top Features", + y = "Score Value") + + theme_minimal() + + scale_color_manual(values = c("Precision" = "purple", "Recall" = "orange")) + + # Display plots + print(p1) + print(p2) + print(p3) +} + +# --- 8. Save results to CSV --- +write.csv(results_df, "feature_selection_results.csv", row.names = FALSE) +cat("\nResults saved to 'feature_selection_results.csv'\n") + +# --- 9. Display top 20 feature importance plot --- +lgb.plot.importance(importance, top_n = min(20, num_features)) +