{ "cells": [ { "cell_type": "markdown", "id": "d67cb83f052624f", "metadata": {}, "source": [ "# Advanced Hyperparameter Search With Random Forest\n", "\n", "This notebook is a guided tour of advanced optimization controls available in `sklearn-genetic-opt`. We will tune a `RandomForestClassifier` on the breast cancer dataset, inspect optimizer telemetry, compare against a lightweight randomized-search baseline, and then reuse the same ideas for feature selection.\n", "\n", "## Menu\n", "\n", "1. [Problem Setup](#problem-setup)\n", "2. [Baseline Model](#baseline-model)\n", "3. [Define a Genetic Search Space](#define-a-genetic-search-space)\n", "4. [Configure GASearchCV](#configure-gasearchcv)\n", "5. [Inspect Results and Telemetry](#inspect-results-and-telemetry)\n", "6. [Compare With RandomizedSearchCV](#compare-with-randomizedsearchcv)\n", "7. [Feature Selection With GAFeatureSelectionCV](#feature-selection-with-gafeatureselectioncv)\n", "8. [Practical Takeaways](#practical-takeaways)" ] }, { "cell_type": "markdown", "id": "4007a1760483cc7c", "metadata": {}, "source": [ "## Problem Setup\n", "\n", "The breast cancer dataset is a binary classification task. It is small enough for a documentation example, but it still has enough numeric features to make model selection and feature selection meaningful.\n", "\n", "We use a fixed train/test split and a shuffled `StratifiedKFold` so the notebook is reproducible." ] }, { "cell_type": "code", "id": "b662d5c9f9617603", "metadata": { "execution": { "iopub.execute_input": "2026-06-20T05:22:28.415473Z", "iopub.status.busy": "2026-06-20T05:22:28.415222Z", "iopub.status.idle": "2026-06-20T05:22:36.465997Z", "shell.execute_reply": "2026-06-20T05:22:36.464752Z" }, "ExecuteTime": { "end_time": "2026-06-20T18:46:33.258632600Z", "start_time": "2026-06-20T18:46:30.178558Z" } }, "source": [ "import warnings\n", "from pprint import pprint\n", "\n", "import numpy as np\n", "import pandas as pd\n", "from sklearn.datasets import load_breast_cancer\n", "from sklearn.ensemble import RandomForestClassifier\n", "from sklearn.metrics import accuracy_score, balanced_accuracy_score, classification_report, roc_auc_score\n", "from sklearn.model_selection import RandomizedSearchCV, StratifiedKFold, train_test_split\n", "from scipy.stats import randint\n", "\n", "from sklearn_genetic import (\n", " EvolutionConfig,\n", " GAFeatureSelectionCV,\n", " GASearchCV,\n", " OptimizationConfig,\n", " PopulationConfig,\n", " RuntimeConfig,\n", ")\n", "from sklearn_genetic.callbacks import ConsecutiveStopping, DeltaThreshold, TimerStopping\n", "from sklearn_genetic.schedules import ExponentialAdapter, InverseAdapter\n", "from sklearn_genetic.space import Categorical, Continuous, Integer\n", "\n", "warnings.filterwarnings(\"ignore\", category=UserWarning)\n", "\n", "RANDOM_STATE = 42" ], "outputs": [], "execution_count": 1 }, { "cell_type": "code", "id": "8132fd06d5e9eb4", "metadata": { "execution": { "iopub.execute_input": "2026-06-20T05:22:36.468790Z", "iopub.status.busy": "2026-06-20T05:22:36.468235Z", "iopub.status.idle": "2026-06-20T05:22:36.521131Z", "shell.execute_reply": "2026-06-20T05:22:36.520097Z" }, "ExecuteTime": { "end_time": "2026-06-20T18:46:33.444070600Z", "start_time": "2026-06-20T18:46:33.260627Z" } }, "source": [ "data = load_breast_cancer(as_frame=True)\n", "X = data.data\n", "y = data.target\n", "\n", "X_train, X_test, y_train, y_test = train_test_split(\n", " X,\n", " y,\n", " test_size=0.30,\n", " stratify=y,\n", " random_state=RANDOM_STATE,\n", ")\n", "\n", "cv = StratifiedKFold(n_splits=3, shuffle=True, random_state=RANDOM_STATE)\n", "\n", "print(f\"Training shape: {X_train.shape}\")\n", "print(f\"Test shape: {X_test.shape}\")\n", "print(f\"Positive class rate: {y.mean():.3f}\")" ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Training shape: (398, 30)\n", "Test shape: (171, 30)\n", "Positive class rate: 0.627\n" ] } ], "execution_count": 2 }, { "cell_type": "markdown", "id": "f7c8aba2a6e26ac4", "metadata": {}, "source": [ "## Baseline Model\n", "\n", "Before tuning anything, train a plain random forest. This gives us a practical reference point: a genetic search should either improve the score, find a simpler configuration, or give us useful telemetry about the search process." ] }, { "cell_type": "code", "id": "b805f9cc008c1ec0", "metadata": { "execution": { "iopub.execute_input": "2026-06-20T05:22:36.523981Z", "iopub.status.busy": "2026-06-20T05:22:36.523606Z", "iopub.status.idle": "2026-06-20T05:22:36.777918Z", "shell.execute_reply": "2026-06-20T05:22:36.776695Z" }, "ExecuteTime": { "end_time": "2026-06-20T18:46:33.658761700Z", "start_time": "2026-06-20T18:46:33.445160300Z" } }, "source": [ "def evaluate_classifier(estimator, X_eval, y_eval):\n", " predictions = estimator.predict(X_eval)\n", " probabilities = estimator.predict_proba(X_eval)[:, 1]\n", " return {\n", " \"accuracy\": accuracy_score(y_eval, predictions),\n", " \"balanced_accuracy\": balanced_accuracy_score(y_eval, predictions),\n", " \"roc_auc\": roc_auc_score(y_eval, probabilities),\n", " }\n", "\n", "\n", "baseline = RandomForestClassifier(random_state=RANDOM_STATE, n_jobs=1)\n", "baseline.fit(X_train, y_train)\n", "\n", "baseline_metrics = evaluate_classifier(baseline, X_test, y_test)\n", "baseline_metrics" ], "outputs": [ { "data": { "text/plain": [ "{'accuracy': 0.935672514619883,\n", " 'balanced_accuracy': 0.9297605140186915,\n", " 'roc_auc': 0.991311331775701}" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "execution_count": 3 }, { "cell_type": "markdown", "id": "ca5d3f418e513766", "metadata": {}, "source": [ "## Define a Genetic Search Space\n", "\n", "`sklearn-genetic-opt` uses explicit search-space objects instead of sklearn parameter distributions. This keeps integer, continuous, and categorical choices clear.\n", "\n", "In this example we tune both model capacity and split behavior. The search space is intentionally moderate so the notebook runs quickly." ] }, { "cell_type": "code", "id": "21ec89c75ec94c66", "metadata": { "execution": { "iopub.execute_input": "2026-06-20T05:22:36.780478Z", "iopub.status.busy": "2026-06-20T05:22:36.780108Z", "iopub.status.idle": "2026-06-20T05:22:36.785227Z", "shell.execute_reply": "2026-06-20T05:22:36.784161Z" }, "ExecuteTime": { "end_time": "2026-06-20T18:46:33.671154Z", "start_time": "2026-06-20T18:46:33.660764400Z" } }, "source": [ "param_grid = {\n", " \"n_estimators\": Integer(40, 140),\n", " \"max_depth\": Integer(2, 12),\n", " \"min_samples_split\": Integer(2, 12),\n", " \"min_samples_leaf\": Integer(1, 8),\n", " \"max_features\": Categorical([\"sqrt\", \"log2\", None]),\n", " \"ccp_alpha\": Continuous(0.0, 0.03),\n", "}" ], "outputs": [], "execution_count": 4 }, { "cell_type": "markdown", "id": "61f8719786d17fde", "metadata": {}, "source": [ "## Configure GASearchCV\n", "\n", "This configuration demonstrates several optimizer controls:\n", "\n", "- `PopulationConfig(initializer=\"smart\")` seeds a more useful initial population using estimator defaults, stratified categorical choices, and Latin hypercube sampling for numeric dimensions.\n", "- `warm_start_configs` injects a known reasonable configuration into the first population.\n", "- `RuntimeConfig(parallel_backend=\"auto\")` lets the estimator decide whether to parallelize candidate evaluation or cross-validation.\n", "- `OptimizationConfig(local_search=True)` performs a short refinement around the best candidates at the end.\n", "- `OptimizationConfig(diversity_control=True)` increases mutation pressure and can inject random candidates when the population collapses too early.\n", "- `OptimizationConfig(fitness_sharing=True)` reduces crowding pressure so similar candidates do not dominate selection too soon.\n", "- adaptive schedules let crossover and mutation probabilities evolve over generations." ] }, { "cell_type": "code", "id": "eea7a93b7a0c4be5", "metadata": { "execution": { "iopub.execute_input": "2026-06-20T05:22:36.787946Z", "iopub.status.busy": "2026-06-20T05:22:36.787580Z", "iopub.status.idle": "2026-06-20T05:23:39.004083Z", "shell.execute_reply": "2026-06-20T05:23:39.002698Z" }, "ExecuteTime": { "end_time": "2026-06-20T18:50:49.963945800Z", "start_time": "2026-06-20T18:46:33.673172100Z" } }, "source": [ "callbacks = [\n", " ConsecutiveStopping(generations=10, metric=\"fitness_best\"),\n", " TimerStopping(total_seconds=240),\n", "]\n", "\n", "ga_search = GASearchCV(\n", " estimator=RandomForestClassifier(random_state=RANDOM_STATE, n_jobs=1),\n", " param_grid=param_grid,\n", " scoring=\"roc_auc\",\n", " cv=cv,\n", " evolution_config=EvolutionConfig(\n", " population_size=20,\n", " generations=15,\n", " crossover_probability=ExponentialAdapter(initial_value=0.8, end_value=0.4, adaptive_rate=0.15),\n", " mutation_probability=InverseAdapter(initial_value=0.25, end_value=0.05, adaptive_rate=0.2),\n", " tournament_size=3,\n", " elitism=True,\n", " keep_top_k=3,\n", " ),\n", " population_config=PopulationConfig(\n", " initializer=\"smart\",\n", " warm_start_configs=[\n", " {\n", " \"n_estimators\": 100,\n", " \"max_depth\": 6,\n", " \"min_samples_split\": 4,\n", " \"min_samples_leaf\": 2,\n", " \"max_features\": \"sqrt\",\n", " \"ccp_alpha\": 0.0,\n", " }\n", " ],\n", " ),\n", " runtime_config=RuntimeConfig(\n", " n_jobs=-1,\n", " parallel_backend=\"auto\",\n", " use_cache=True,\n", " verbose=True,\n", " return_train_score=False,\n", " ),\n", " optimization_config=OptimizationConfig(\n", " local_search=True,\n", " local_search_top_k=2,\n", " local_search_steps=1,\n", " local_search_radius=0.2,\n", " diversity_control=True,\n", " diversity_threshold=0.35,\n", " diversity_stagnation_generations=3,\n", " diversity_mutation_boost=1.8,\n", " random_immigrants_fraction=0.15,\n", " fitness_sharing=True,\n", " sharing_radius=0.35,\n", " sharing_alpha=1.0,\n", " ),\n", ")\n", "\n", "ga_search.fit(X_train, y_train, callbacks=callbacks)" ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " gen evals avg best div unique stag mut sel events\n", "---- ----- ------------- ------------- ------- ------- ----- ------- ----- ------------------\n", " 0 20 0.98625 0.99076 0.579 1.000 0 - - - \n", " 1 40 0.98519 0.99076 0.386 0.650 1 0.200 3 dup=1,share \n", " 2 40 0.98587 0.99076 0.342 0.900 2 0.217 3 dup=9,share \n", " 3 40 0.98676 0.99076 0.316 0.700 3 0.304 3 div,imm=6,dup=2,sh\n", " 4 40 0.98610 0.99076 0.307 0.750 4 0.315 3 div,imm=6,dup=2,sh\n", " 5 40 0.98464 0.99076 0.386 0.750 5 0.290 3 div,imm=6,dup=12,s\n", " 6 40 0.98632 0.99171 0.412 0.900 0 0.270 3 div,imm=6,dup=7,sh\n", " 7 40 0.98588 0.99171 0.421 0.800 1 0.141 3 dup=15,share \n", " 8 40 0.98520 0.99171 0.421 0.850 2 0.133 3 dup=17,share \n", " 9 40 0.98597 0.99171 0.404 0.750 3 0.127 3 dup=20,share \n", " 10 40 0.98640 0.99171 0.439 0.900 4 0.219 3 div,imm=6,dup=16,s\n", " 11 40 0.98589 0.99171 0.351 0.700 5 0.210 3 div,imm=6,dup=13,s\n", "INFO: TimerStopping callback met its criteria\n", "INFO: Stopping the algorithm\n" ] }, { "data": { "text/plain": [ "GASearchCV(crossover_probability=,\n", " cv=StratifiedKFold(n_splits=3, random_state=42, shuffle=True),\n", " diversity_control=True, diversity_mutation_boost=1.8,\n", " diversity_stagnation_generations=3, diversity_threshold=0.35,\n", " estimator=RandomForestClassifier(ccp_alpha=0.0083469934111643...\n", " 'max_features': 'sqrt',\n", " 'min_samples_leaf': 2,\n", " 'min_samples_split': 4,\n", " 'n_estimators': 100}]),\n", " population_size=20, random_immigrants_fraction=0.15,\n", " return_train_score=True,\n", " runtime_config=RuntimeConfig(n_jobs=-1,\n", " pre_dispatch='2*n_jobs',\n", " error_score=nan,\n", " return_train_score=False,\n", " use_cache=True,\n", " parallel_backend='auto',\n", " verbose=True),\n", " scoring='roc_auc', sharing_radius=0.35)" ], "text/html": [ "
GASearchCV(crossover_probability=<sklearn_genetic.schedules.schedulers.ExponentialAdapter object at 0x000001C5C12A12B0>,\n",
       "           cv=StratifiedKFold(n_splits=3, random_state=42, shuffle=True),\n",
       "           diversity_control=True, diversity_mutation_boost=1.8,\n",
       "           diversity_stagnation_generations=3, diversity_threshold=0.35,\n",
       "           estimator=RandomForestClassifier(ccp_alpha=0.0083469934111643...\n",
       "                                                                   'max_features': 'sqrt',\n",
       "                                                                   'min_samples_leaf': 2,\n",
       "                                                                   'min_samples_split': 4,\n",
       "                                                                   'n_estimators': 100}]),\n",
       "           population_size=20, random_immigrants_fraction=0.15,\n",
       "           return_train_score=True,\n",
       "           runtime_config=RuntimeConfig(n_jobs=-1,\n",
       "                                        pre_dispatch='2*n_jobs',\n",
       "                                        error_score=nan,\n",
       "                                        return_train_score=False,\n",
       "                                        use_cache=True,\n",
       "                                        parallel_backend='auto',\n",
       "                                        verbose=True),\n",
       "           scoring='roc_auc', sharing_radius=0.35)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "execution_count": 5 }, { "cell_type": "markdown", "id": "fc3a62331d4b68ab", "metadata": {}, "source": [ "## Inspect Results and Telemetry\n", "\n", "The usual sklearn-style attributes are available: `best_params_`, `best_score_`, and `best_estimator_`. The library also records optimization mechanics in `fit_stats_` and per-generation telemetry in `history`.\n", "\n", "These fields are especially useful when tuning performance. If `cache_hits` is high, the search is revisiting candidates. If diversity collapses early, try stronger mutation, more random immigrants, a larger population, or fitness sharing." ] }, { "cell_type": "code", "id": "eb4d1ff7cd365f19", "metadata": { "execution": { "iopub.execute_input": "2026-06-20T05:23:39.008399Z", "iopub.status.busy": "2026-06-20T05:23:39.007525Z", "iopub.status.idle": "2026-06-20T05:23:39.046686Z", "shell.execute_reply": "2026-06-20T05:23:39.045291Z" }, "ExecuteTime": { "end_time": "2026-06-20T18:50:50.006679200Z", "start_time": "2026-06-20T18:50:49.965945700Z" } }, "source": [ "print(\"Best CV ROC AUC:\", round(ga_search.best_score_, 4))\n", "print(\"Best parameters:\")\n", "pprint(ga_search.best_params_)\n", "\n", "ga_metrics = evaluate_classifier(ga_search, X_test, y_test)\n", "pd.DataFrame([baseline_metrics, ga_metrics], index=[\"baseline\", \"ga_search\"])" ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Best CV ROC AUC: 0.9917\n", "Best parameters:\n", "{'ccp_alpha': 0.008346993411164376,\n", " 'max_depth': 6,\n", " 'max_features': 'log2',\n", " 'min_samples_leaf': 5,\n", " 'min_samples_split': 7,\n", " 'n_estimators': 56}\n" ] }, { "data": { "text/plain": [ " accuracy balanced_accuracy roc_auc\n", "baseline 0.935673 0.929761 0.991311\n", "ga_search 0.929825 0.925088 0.986565" ], "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
accuracybalanced_accuracyroc_auc
baseline0.9356730.9297610.991311
ga_search0.9298250.9250880.986565
\n", "
" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "execution_count": 6 }, { "cell_type": "code", "id": "c71eaa69d709ccbb", "metadata": { "execution": { "iopub.execute_input": "2026-06-20T05:23:39.049534Z", "iopub.status.busy": "2026-06-20T05:23:39.049123Z", "iopub.status.idle": "2026-06-20T05:23:39.055142Z", "shell.execute_reply": "2026-06-20T05:23:39.053768Z" }, "ExecuteTime": { "end_time": "2026-06-20T18:50:50.027144Z", "start_time": "2026-06-20T18:50:50.007678100Z" } }, "source": [ "ga_search.fit_stats_" ], "outputs": [ { "data": { "text/plain": [ "{'evaluated_candidates': 462,\n", " 'unique_candidates': 460,\n", " 'cross_validate_calls': 460,\n", " 'cache_hits': 2,\n", " 'duplicate_candidates': 0,\n", " 'skipped_invalid_candidates': 0,\n", " 'population_parallel_batches': 13,\n", " 'population_serial_batches': 0,\n", " 'random_immigrants': 36,\n", " 'local_refinement_candidates': 2}" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "execution_count": 7 }, { "cell_type": "code", "id": "83a9277f98a58d17", "metadata": { "execution": { "iopub.execute_input": "2026-06-20T05:23:39.057781Z", "iopub.status.busy": "2026-06-20T05:23:39.057494Z", "iopub.status.idle": "2026-06-20T05:23:39.071726Z", "shell.execute_reply": "2026-06-20T05:23:39.070069Z" }, "ExecuteTime": { "end_time": "2026-06-20T18:50:50.045073300Z", "start_time": "2026-06-20T18:50:50.028142100Z" } }, "source": [ "history = pd.DataFrame(ga_search.history)\n", "telemetry_columns = [\n", " \"gen\",\n", " \"fitness\",\n", " \"fitness_max\",\n", " \"fitness_std\",\n", " \"unique_individual_ratio\",\n", " \"genotype_diversity\",\n", " \"stagnation_generations\",\n", " \"best_generation\",\n", "]\n", "history[[column for column in telemetry_columns if column in history.columns]].tail()" ], "outputs": [ { "data": { "text/plain": [ " gen fitness fitness_max fitness_std unique_individual_ratio \\\n", "7 7 0.985883 0.990676 0.002142 0.80 \n", "8 8 0.985202 0.990143 0.001566 0.85 \n", "9 9 0.985969 0.990143 0.002267 0.75 \n", "10 10 0.986397 0.990106 0.002121 0.90 \n", "11 11 0.986717 0.991707 0.002035 0.75 \n", "\n", " genotype_diversity stagnation_generations best_generation \n", "7 0.421053 1 6 \n", "8 0.421053 2 6 \n", "9 0.403509 3 6 \n", "10 0.438596 4 6 \n", "11 0.385965 6 6 " ], "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
genfitnessfitness_maxfitness_stdunique_individual_ratiogenotype_diversitystagnation_generationsbest_generation
770.9858830.9906760.0021420.800.42105316
880.9852020.9901430.0015660.850.42105326
990.9859690.9901430.0022670.750.40350936
10100.9863970.9901060.0021210.900.43859646
11110.9867170.9917070.0020350.750.38596566
\n", "
" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "execution_count": 8 }, { "cell_type": "markdown", "id": "b002acd12560c0a6", "metadata": {}, "source": [ "A compact plot can make the search dynamics easier to read. The first chart shows best-so-far fitness, current-generation best, and population average; the second chart shows diversity signals. If the diversity curves drop to zero early while fitness stops improving, the search is probably over-exploiting one region." ] }, { "cell_type": "code", "id": "65c1a292d7dd0de6", "metadata": { "execution": { "iopub.execute_input": "2026-06-20T05:23:39.074801Z", "iopub.status.busy": "2026-06-20T05:23:39.074512Z", "iopub.status.idle": "2026-06-20T05:23:39.481475Z", "shell.execute_reply": "2026-06-20T05:23:39.479106Z" }, "ExecuteTime": { "end_time": "2026-06-20T18:50:50.385158200Z", "start_time": "2026-06-20T18:50:50.046070400Z" } }, "source": [ "ax = history.plot(x=\"gen\", y=[\"fitness_best\", \"fitness_max\", \"fitness\"], marker=\"o\", figsize=(8, 4))\n", "ax.set_title(\"Fitness over generations\")\n", "ax.set_xlabel(\"Generation\")\n", "ax.set_ylabel(\"ROC AUC\")" ], "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'ROC AUC')" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "
" ], "image/png": "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" }, "metadata": {}, "output_type": "display_data", "jetTransient": { "display_id": null } } ], "execution_count": 9 }, { "cell_type": "code", "id": "d20b4dd8c00d4879", "metadata": { "execution": { "iopub.execute_input": "2026-06-20T05:23:39.485264Z", "iopub.status.busy": "2026-06-20T05:23:39.484786Z", "iopub.status.idle": "2026-06-20T05:23:39.778488Z", "shell.execute_reply": "2026-06-20T05:23:39.777337Z" }, "ExecuteTime": { "end_time": "2026-06-20T18:50:50.714851700Z", "start_time": "2026-06-20T18:50:50.393091900Z" } }, "source": [ "diversity_columns = [\n", " column\n", " for column in [\"unique_individual_ratio\", \"genotype_diversity\"]\n", " if column in history.columns\n", "]\n", "\n", "ax = history.plot(x=\"gen\", y=diversity_columns, marker=\"o\", figsize=(8, 4))\n", "ax.set_title(\"Population diversity over generations\")\n", "ax.set_xlabel(\"Generation\")\n", "ax.set_ylabel(\"Diversity\")" ], "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'Diversity')" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "
" ], "image/png": "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" }, "metadata": {}, "output_type": "display_data", "jetTransient": { "display_id": null } } ], "execution_count": 10 }, { "cell_type": "markdown", "id": "69d600f821ff5a42", "metadata": {}, "source": [ "## Compare With RandomizedSearchCV\n", "\n", "Genetic search is most useful when the search space is large, mixed-type, or expensive enough that exhaustive grids become unattractive. A lightweight `RandomizedSearchCV` baseline is still useful because it tells us whether the GA is paying for itself.\n", "\n", "The parameter distributions below cover roughly the same region as the genetic search space, but they use sklearn/scipy objects instead of `sklearn-genetic-opt` dimensions." ] }, { "cell_type": "code", "id": "3c8254a22a941e60", "metadata": { "execution": { "iopub.execute_input": "2026-06-20T05:23:39.782039Z", "iopub.status.busy": "2026-06-20T05:23:39.781651Z", "iopub.status.idle": "2026-06-20T05:23:51.677186Z", "shell.execute_reply": "2026-06-20T05:23:51.676282Z" }, "ExecuteTime": { "end_time": "2026-06-20T18:51:02.925256Z", "start_time": "2026-06-20T18:50:50.723256900Z" } }, "source": [ "randomized_search = RandomizedSearchCV(\n", " estimator=RandomForestClassifier(random_state=RANDOM_STATE, n_jobs=1),\n", " param_distributions={\n", " \"n_estimators\": randint(40, 141),\n", " \"max_depth\": randint(2, 13),\n", " \"min_samples_split\": randint(2, 13),\n", " \"min_samples_leaf\": randint(1, 9),\n", " \"max_features\": [\"sqrt\", \"log2\", None],\n", " \"ccp_alpha\": np.linspace(0.0, 0.03, 20),\n", " },\n", " n_iter=12,\n", " scoring=\"roc_auc\",\n", " cv=cv,\n", " n_jobs=-1,\n", " random_state=RANDOM_STATE,\n", " refit=True,\n", ")\n", "\n", "randomized_search.fit(X_train, y_train)\n", "randomized_metrics = evaluate_classifier(randomized_search, X_test, y_test)\n", "\n", "pd.DataFrame(\n", " [baseline_metrics, randomized_metrics, ga_metrics],\n", " index=[\"baseline\", \"randomized_search\", \"ga_search\"],\n", ")" ], "outputs": [ { "data": { "text/plain": [ " accuracy balanced_accuracy roc_auc\n", "baseline 0.935673 0.929761 0.991311\n", "randomized_search 0.929825 0.925088 0.986419\n", "ga_search 0.929825 0.925088 0.986565" ], "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
accuracybalanced_accuracyroc_auc
baseline0.9356730.9297610.991311
randomized_search0.9298250.9250880.986419
ga_search0.9298250.9250880.986565
\n", "
" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "execution_count": 11 }, { "cell_type": "markdown", "id": "f2e82a8a3bff2330", "metadata": {}, "source": [ "## Feature Selection With GAFeatureSelectionCV\n", "\n", "The same optimizer ideas can be used for feature selection. Here the individual is a binary mask instead of a hyperparameter vector.\n", "\n", "`PopulationConfig(initializer=\"smart\")` creates diverse masks with different numbers of selected features. `max_features` limits the largest valid mask. Invalid masks are skipped efficiently instead of spending cross-validation time on candidates whose fitness is already known to be invalid." ] }, { "cell_type": "code", "id": "555934eadff5cd32", "metadata": { "execution": { "iopub.execute_input": "2026-06-20T05:23:51.681334Z", "iopub.status.busy": "2026-06-20T05:23:51.680743Z", "iopub.status.idle": "2026-06-20T05:25:31.923409Z", "shell.execute_reply": "2026-06-20T05:25:31.922196Z" }, "ExecuteTime": { "end_time": "2026-06-20T18:52:38.339675100Z", "start_time": "2026-06-20T18:51:02.927774800Z" } }, "source": [ "feature_selector = GAFeatureSelectionCV(\n", " estimator=RandomForestClassifier(\n", " random_state=RANDOM_STATE,\n", " n_jobs=1,\n", " **ga_search.best_params_,\n", " ),\n", " scoring=\"roc_auc\",\n", " cv=cv,\n", " max_features=10,\n", " evolution_config=EvolutionConfig(population_size=14, generations=10),\n", " population_config=PopulationConfig(initializer=\"smart\"),\n", " runtime_config=RuntimeConfig(\n", " n_jobs=-1,\n", " parallel_backend=\"auto\",\n", " use_cache=True,\n", " verbose=True,\n", " ),\n", " optimization_config=OptimizationConfig(\n", " local_search=True,\n", " local_search_top_k=2,\n", " local_search_steps=1,\n", " local_search_radius=0.15,\n", " diversity_control=True,\n", " diversity_threshold=0.30,\n", " random_immigrants_fraction=0.10,\n", " fitness_sharing=True,\n", " sharing_radius=0.40,\n", " ),\n", ")\n", "\n", "feature_selector.fit(X_train, y_train, callbacks=[TimerStopping(total_seconds=120)])" ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " gen evals avg best div unique stag mut sel events\n", "---- ----- ------------- ------------- ------- ------- ----- ------- ----- ------------------\n", " 0 14 0.93158 0.98816 0.074 1.000 0 - - - \n", " 1 28 0.98468 0.98816 0.074 0.500 1 0.800 3 div,imm=3,dup=2,sh\n", " 2 28 0.98443 0.98849 0.077 0.786 0 0.800 3 div,imm=3,dup=1,sh\n", " 3 28 0.98230 0.98849 0.074 0.643 1 0.800 3 div,imm=3,share \n", " 4 28 0.98342 0.98849 0.074 0.857 2 0.800 3 div,imm=3,dup=1,sh\n", " 5 28 0.98267 0.99079 0.074 0.786 0 0.800 3 div,imm=3,dup=1,sh\n", " 6 28 0.98361 0.99079 0.077 0.714 1 0.800 3 div,imm=3,share \n", " 7 28 0.98253 0.99079 0.077 0.786 2 0.800 3 div,imm=3,share \n", " 8 28 0.98454 0.99381 0.077 0.857 0 0.800 3 div,imm=3,share \n", " 9 28 0.97952 0.99381 0.077 0.857 1 0.800 3 div,imm=3,dup=2,sh\n", " 10 28 0.98315 0.99381 0.077 0.571 2 0.800 3 div,imm=3,dup=2,sh\n" ] }, { "data": { "text/plain": [ "GAFeatureSelectionCV(cv=StratifiedKFold(n_splits=3, random_state=42, shuffle=True),\n", " diversity_control=True, diversity_threshold=0.3,\n", " estimator=RandomForestClassifier(ccp_alpha=0.008346993411164376,\n", " max_depth=6,\n", " max_features='log2',\n", " min_samples_leaf=5,\n", " min_samples_split=7,\n", " n_estimators=56, n_jobs=1,\n", " random_state=42),\n", " evolution_config=EvolutionConfig(population_s...\n", " final_selection=False,\n", " final_selection_top_k=3,\n", " final_selection_cv=None),\n", " population_config=PopulationConfig(initializer='smart',\n", " warm_start_configs=[]),\n", " population_size=14,\n", " runtime_config=RuntimeConfig(n_jobs=-1,\n", " pre_dispatch='2*n_jobs',\n", " error_score=nan,\n", " return_train_score=False,\n", " use_cache=True,\n", " parallel_backend='auto',\n", " verbose=True),\n", " scoring='roc_auc', sharing_radius=0.4)" ], "text/html": [ "
GAFeatureSelectionCV(cv=StratifiedKFold(n_splits=3, random_state=42, shuffle=True),\n",
       "                     diversity_control=True, diversity_threshold=0.3,\n",
       "                     estimator=RandomForestClassifier(ccp_alpha=0.008346993411164376,\n",
       "                                                      max_depth=6,\n",
       "                                                      max_features='log2',\n",
       "                                                      min_samples_leaf=5,\n",
       "                                                      min_samples_split=7,\n",
       "                                                      n_estimators=56, n_jobs=1,\n",
       "                                                      random_state=42),\n",
       "                     evolution_config=EvolutionConfig(population_s...\n",
       "                                                            final_selection=False,\n",
       "                                                            final_selection_top_k=3,\n",
       "                                                            final_selection_cv=None),\n",
       "                     population_config=PopulationConfig(initializer='smart',\n",
       "                                                        warm_start_configs=[]),\n",
       "                     population_size=14,\n",
       "                     runtime_config=RuntimeConfig(n_jobs=-1,\n",
       "                                                  pre_dispatch='2*n_jobs',\n",
       "                                                  error_score=nan,\n",
       "                                                  return_train_score=False,\n",
       "                                                  use_cache=True,\n",
       "                                                  parallel_backend='auto',\n",
       "                                                  verbose=True),\n",
       "                     scoring='roc_auc', sharing_radius=0.4)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "execution_count": 12 }, { "cell_type": "code", "id": "5afc38f1d91e3ff5", "metadata": { "execution": { "iopub.execute_input": "2026-06-20T05:25:31.926553Z", "iopub.status.busy": "2026-06-20T05:25:31.926255Z", "iopub.status.idle": "2026-06-20T05:25:31.962632Z", "shell.execute_reply": "2026-06-20T05:25:31.961314Z" }, "ExecuteTime": { "end_time": "2026-06-20T18:52:38.381099500Z", "start_time": "2026-06-20T18:52:38.342678800Z" } }, "source": [ "selected_features = X_train.columns[feature_selector.support_]\n", "print(f\"Selected {len(selected_features)} features:\")\n", "print(selected_features.tolist())\n", "\n", "selector_metrics = evaluate_classifier(feature_selector, X_test, y_test)\n", "pd.DataFrame(\n", " [baseline_metrics, randomized_metrics, ga_metrics, selector_metrics],\n", " index=[\"baseline\", \"randomized_search\", \"ga_search\", \"feature_selector\"],\n", ")" ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Selected 10 features:\n", "['mean texture', 'mean symmetry', 'area error', 'smoothness error', 'concave points error', 'symmetry error', 'worst radius', 'worst texture', 'worst concavity', 'worst concave points']\n" ] }, { "data": { "text/plain": [ " accuracy balanced_accuracy roc_auc\n", "baseline 0.935673 0.929761 0.991311\n", "randomized_search 0.929825 0.925088 0.986419\n", "ga_search 0.929825 0.925088 0.986565\n", "feature_selector 0.935673 0.923481 0.989486" ], "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
accuracybalanced_accuracyroc_auc
baseline0.9356730.9297610.991311
randomized_search0.9298250.9250880.986419
ga_search0.9298250.9250880.986565
feature_selector0.9356730.9234810.989486
\n", "
" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "execution_count": 13 }, { "cell_type": "code", "id": "43ae616e6ae979f6", "metadata": { "execution": { "iopub.execute_input": "2026-06-20T05:25:31.965630Z", "iopub.status.busy": "2026-06-20T05:25:31.965308Z", "iopub.status.idle": "2026-06-20T05:25:31.991825Z", "shell.execute_reply": "2026-06-20T05:25:31.990179Z" }, "ExecuteTime": { "end_time": "2026-06-20T18:52:38.410141700Z", "start_time": "2026-06-20T18:52:38.382087300Z" } }, "source": [ "print(classification_report(y_test, feature_selector.predict(X_test), target_names=data.target_names))" ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " precision recall f1-score support\n", "\n", " malignant 0.95 0.88 0.91 64\n", " benign 0.93 0.97 0.95 107\n", "\n", " accuracy 0.94 171\n", " macro avg 0.94 0.92 0.93 171\n", "weighted avg 0.94 0.94 0.94 171\n", "\n" ] } ], "execution_count": 14 }, { "cell_type": "markdown", "id": "71179a9a1614ecff", "metadata": {}, "source": [ "## Practical Takeaways\n", "\n", "- Start with `PopulationConfig(initializer=\"smart\")`; it usually gives better early coverage than random initialization.\n", "- Use `fit_stats_` to understand the cost of the run: evaluated candidates, unique candidates, cache hits, skipped invalid masks, and cross-validation calls.\n", "- Use `history` to decide whether the optimizer is exploring enough. Low diversity plus stalled fitness suggests stronger mutation, fitness sharing, random immigrants, or a larger population.\n", "- Use `OptimizationConfig(local_search=True)` when the GA already finds good regions and you want a final exploitation pass.\n", "- Keep a sklearn baseline such as `RandomizedSearchCV` nearby. It is the simplest way to check whether a more advanced optimizer is improving quality enough to justify extra search time." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.13.14" } }, "nbformat": 4, "nbformat_minor": 5 }