https://github.com/sponsors/robcaulk
     """
 
-    version = "3.7.0"
+    version = "3.7.1"
 
     @cached_property
     def _optuna_config(self) -> dict:
         best_trials = study.best_trials
         if namespace == "label":
             range_sizes = [trial.values[1] for trial in best_trials]
-            mean_range_size = np.mean(range_sizes)
-            equal_mean_trials = [
+            median_range_size = np.median(range_sizes)
+            equal_median_trials = [
                 trial
                 for trial in best_trials
-                if np.isclose(trial.values[1], mean_range_size)
+                if np.isclose(trial.values[1], median_range_size)
             ]
-            if equal_mean_trials:
-                return max(equal_mean_trials, key=lambda trial: trial.values[0])
-            nearest_above_mean = (np.inf, -np.inf, None)
-            nearest_below_mean = (-np.inf, -np.inf, None)
+            if equal_median_trials:
+                return max(equal_median_trials, key=lambda trial: trial.values[0])
+            nearest_above_median = (np.inf, -np.inf, None)
+            nearest_below_median = (-np.inf, -np.inf, None)
             for idx, trial in enumerate(best_trials):
                 range_size = trial.values[1]
-                if range_size >= mean_range_size:
-                    if range_size < nearest_above_mean[0] or (
-                        range_size == nearest_above_mean[0]
-                        and trial.values[0] > nearest_above_mean[1]
+                if range_size >= median_range_size:
+                    if range_size < nearest_above_median[0] or (
+                        range_size == nearest_above_median[0]
+                        and trial.values[0] > nearest_above_median[1]
                     ):
-                        nearest_above_mean = (range_size, trial.values[0], idx)
-                if range_size <= mean_range_size:
-                    if range_size > nearest_below_mean[0] or (
-                        range_size == nearest_below_mean[0]
-                        and trial.values[0] > nearest_below_mean[1]
+                        nearest_above_median = (range_size, trial.values[0], idx)
+                if range_size <= median_range_size:
+                    if range_size > nearest_below_median[0] or (
+                        range_size == nearest_below_median[0]
+                        and trial.values[0] > nearest_below_median[1]
                     ):
-                        nearest_below_mean = (range_size, trial.values[0], idx)
-            if nearest_above_mean[2] is None or nearest_below_mean[2] is None:
+                        nearest_below_median = (range_size, trial.values[0], idx)
+            if nearest_above_median[2] is None or nearest_below_median[2] is None:
                 return None
-            above_mean_trial = best_trials[nearest_above_mean[2]]
-            below_mean_trial = best_trials[nearest_below_mean[2]]
-            if above_mean_trial.values[0] >= below_mean_trial.values[0]:
-                return above_mean_trial
+            above_median_trial = best_trials[nearest_above_median[2]]
+            below_median_trial = best_trials[nearest_below_median[2]]
+            if above_median_trial.values[0] >= below_median_trial.values[0]:
+                return above_median_trial
             else:
-                return below_mean_trial
+                return below_median_trial
         else:
             raise ValueError(f"Invalid namespace: {namespace}")
 
         peak_ranges.append(abs(peak_value - previous_value))
         previous_value = peak_value
 
-    return np.mean(peak_ranges), len(peak_ranges)
+    return np.median(peak_ranges), len(peak_ranges)
 
 
 def smoothed_max(series: pd.Series, temperature=1.0) -> float: