{ "cells": [ { "cell_type": "markdown", "id": "23507ff4-3e03-40a2-a40e-9c14ea834013", "metadata": {}, "source": [ "# Example Using the `cars` Dataset" ] }, { "cell_type": "code", "execution_count": 1, "id": "d061341b-287f-47b8-a7dc-b736fd68284c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1.0.1\n" ] } ], "source": [ "from sklearn.neighbors import KNeighborsClassifier\n", "from sklearn.model_selection import train_test_split, cross_val_score\n", "from sklearn.metrics import f1_score\n", "import featuristic as ft\n", "import numpy as np\n", "\n", "np.random.seed(8888)\n", "\n", "print(ft.__version__)" ] }, { "cell_type": "code", "execution_count": 2, "id": "0b9fc719-7054-42ca-8d5d-f238342f48f9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1.0.1\n" ] } ], "source": [ "from sklearn.linear_model import LinearRegression\n", "from sklearn.model_selection import train_test_split, cross_val_score\n", "from sklearn.metrics import mean_absolute_error\n", "import featuristic as ft\n", "import numpy as np\n", "\n", "np.random.seed(8888)\n", "\n", "print(ft.__version__)" ] }, { "cell_type": "markdown", "id": "0d063e5a-a1c5-49c7-9688-72ff0833de5d", "metadata": {}, "source": [ "### Load the Data" ] }, { "cell_type": "code", "execution_count": 3, "id": "90379d23-7cfc-4341-8fed-1d963b98c619", "metadata": {}, "outputs": [ { "data": { "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", "
displacementcylindershorsepowerweightaccelerationmodel_yearorigin
0307.08130.0350412.0701
1350.08165.0369311.5701
2318.08150.0343611.0701
3304.08150.0343312.0701
4302.08140.0344910.5701
\n", "
" ], "text/plain": [ " displacement cylinders horsepower weight acceleration model_year \\\n", "0 307.0 8 130.0 3504 12.0 70 \n", "1 350.0 8 165.0 3693 11.5 70 \n", "2 318.0 8 150.0 3436 11.0 70 \n", "3 304.0 8 150.0 3433 12.0 70 \n", "4 302.0 8 140.0 3449 10.5 70 \n", "\n", " origin \n", "0 1 \n", "1 1 \n", "2 1 \n", "3 1 \n", "4 1 " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X, y = ft.fetch_cars_dataset()\n", "\n", "X.head()" ] }, { "cell_type": "code", "execution_count": 4, "id": "517ae106-acf4-40f8-bfbc-ac644cb17a7f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 18.0\n", "1 15.0\n", "2 18.0\n", "3 16.0\n", "4 17.0\n", "Name: mpg, dtype: float64" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y.head()" ] }, { "cell_type": "markdown", "id": "d286ad66-3121-416d-9218-bb592af4c6bd", "metadata": {}, "source": [ "### Genetic Feature Synthesis" ] }, { "cell_type": "code", "execution_count": 5, "id": "69031e48-b17d-4ac5-b8b4-129f744a78bc", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Creating new features...: 48%|███████▋ | 48/100 [00:08<00:11, 4.57it/s]\n", "Pruning feature space...: 100%|██████████████████| 5/5 [00:00<00:00, 445.51it/s]\u001b[A\n", "Creating new features...: 48%|███████▋ | 48/100 [00:08<00:09, 5.56it/s]\n" ] } ], "source": [ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)\n", "\n", "synth = ft.GeneticFeatureSynthesis(\n", " num_features=5,\n", " population_size=200,\n", " max_generations=100,\n", " early_termination_iters=25,\n", " parsimony_coefficient=0.035,\n", " n_jobs=1,\n", ")\n", "synth.fit(X_train, y_train)\n", "\n", "None" ] }, { "cell_type": "markdown", "id": "bb080664-70ff-4254-9f03-1e94b1142b83", "metadata": {}, "source": [ "### View the Synthesised Features and Their Formulas" ] }, { "cell_type": "code", "execution_count": 6, "id": "7615c24a-c2e1-4d4a-8800-47163b550d3b", "metadata": {}, "outputs": [ { "data": { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
displacementcylindershorsepowerweightaccelerationmodel_yearoriginfeature_0feature_4feature_11feature_1feature_22
089.0462.0205017.3813-8571.629032-0.312535-96.744944-105.822581-0.624987
1318.08150.0407714.0721-2488.320000-0.786564-75.169811-34.560000-1.573022
2383.08170.0356310.0701-2017.647059-0.727317-71.827676-28.823529-1.454460
3260.08110.0406019.0771-4150.300000-0.684937-82.626923-53.900000-1.369706
4318.08140.0408013.7781-3389.657143-0.670713-81.360377-43.457143-1.341324
\n", "
" ], "text/plain": [ " displacement cylinders horsepower weight acceleration model_year \\\n", "0 89.0 4 62.0 2050 17.3 81 \n", "1 318.0 8 150.0 4077 14.0 72 \n", "2 383.0 8 170.0 3563 10.0 70 \n", "3 260.0 8 110.0 4060 19.0 77 \n", "4 318.0 8 140.0 4080 13.7 78 \n", "\n", " origin feature_0 feature_4 feature_11 feature_1 feature_22 \n", "0 3 -8571.629032 -0.312535 -96.744944 -105.822581 -0.624987 \n", "1 1 -2488.320000 -0.786564 -75.169811 -34.560000 -1.573022 \n", "2 1 -2017.647059 -0.727317 -71.827676 -28.823529 -1.454460 \n", "3 1 -4150.300000 -0.684937 -82.626923 -53.900000 -1.369706 \n", "4 1 -3389.657143 -0.670713 -81.360377 -43.457143 -1.341324 " ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "generated_features = synth.transform(X_train)\n", "\n", "generated_features.head()" ] }, { "cell_type": "code", "execution_count": 7, "id": "a5467d93-bb7d-4876-ae28-d67fc7c1e218", "metadata": {}, "outputs": [ { "data": { "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", "
nameformulafitness
0feature_0-(abs((cube(model_year) / horsepower)))-0.864403
1feature_4-(abs((abs(abs(((cos(sin(acceleration)) + weig...-0.833223
2feature_11-(abs(((-(displacement) - acceleration) / (dis...-0.832991
3feature_1-(abs(abs(abs((abs((cube(model_year) / horsepo...-0.843771
4feature_22-(abs((abs((((cos(sin(acceleration)) + weight)...-0.826734
\n", "
" ], "text/plain": [ " name formula fitness\n", "0 feature_0 -(abs((cube(model_year) / horsepower))) -0.864403\n", "1 feature_4 -(abs((abs(abs(((cos(sin(acceleration)) + weig... -0.833223\n", "2 feature_11 -(abs(((-(displacement) - acceleration) / (dis... -0.832991\n", "3 feature_1 -(abs(abs(abs((abs((cube(model_year) / horsepo... -0.843771\n", "4 feature_22 -(abs((abs((((cos(sin(acceleration)) + weight)... -0.826734" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "info = synth.get_feature_info()\n", "info" ] }, { "cell_type": "markdown", "id": "62ea59d7-f817-479b-8348-2fa6cb03cd56", "metadata": {}, "source": [ "### Feature Selection" ] }, { "cell_type": "code", "execution_count": 8, "id": "39cdb6dd-ed18-4d73-808b-a540721117a6", "metadata": {}, "outputs": [], "source": [ "def objective_function(X, y):\n", " model = LinearRegression()\n", " scores = cross_val_score(model, X, y, cv=3, scoring=\"neg_mean_absolute_error\")\n", " return scores.mean() * -1" ] }, { "cell_type": "code", "execution_count": 9, "id": "490f5ea4-c165-46f2-982c-bf4416d1ecf5", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Optimising feature selection...: 27%|██▍ | 27/100 [00:06<00:16, 4.30it/s]\n" ] } ], "source": [ "selector = ft.GeneticFeatureSelector(\n", " objective_function,\n", " population_size=200,\n", " max_generations=100,\n", " early_termination_iters=25,\n", " n_jobs=-1,\n", ")\n", "\n", "selector.fit(generated_features, y_train)\n", "\n", "selected_features = selector.transform(generated_features)" ] }, { "cell_type": "markdown", "id": "b31ab5f3-10ce-45e9-a356-eb96712b91ba", "metadata": {}, "source": [ "### View the Selected Features" ] }, { "cell_type": "code", "execution_count": 10, "id": "7f5e29d0-76b5-496f-8fc8-200f2086d331", "metadata": {}, "outputs": [ { "data": { "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", "
weightaccelerationmodel_yearoriginfeature_0feature_4feature_11feature_1
0205017.3813-8571.629032-0.312535-96.744944-105.822581
1407714.0721-2488.320000-0.786564-75.169811-34.560000
2356310.0701-2017.647059-0.727317-71.827676-28.823529
3406019.0771-4150.300000-0.684937-82.626923-53.900000
4408013.7781-3389.657143-0.670713-81.360377-43.457143
\n", "
" ], "text/plain": [ " weight acceleration model_year origin feature_0 feature_4 \\\n", "0 2050 17.3 81 3 -8571.629032 -0.312535 \n", "1 4077 14.0 72 1 -2488.320000 -0.786564 \n", "2 3563 10.0 70 1 -2017.647059 -0.727317 \n", "3 4060 19.0 77 1 -4150.300000 -0.684937 \n", "4 4080 13.7 78 1 -3389.657143 -0.670713 \n", "\n", " feature_11 feature_1 \n", "0 -96.744944 -105.822581 \n", "1 -75.169811 -34.560000 \n", "2 -71.827676 -28.823529 \n", "3 -82.626923 -53.900000 \n", "4 -81.360377 -43.457143 " ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "selected_features.head()" ] }, { "cell_type": "markdown", "id": "912b63c6-4cc3-4298-baf8-b2649f9088dd", "metadata": {}, "source": [ "### Compare New Features to Original Features" ] }, { "cell_type": "code", "execution_count": 11, "id": "8372e11a-1d39-44ce-ae51-afe4c223f34e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.5888868138669303" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model = LinearRegression()\n", "model.fit(X_train, y_train)\n", "preds = model.predict(X_test)\n", "original_mae = mean_absolute_error(y_test, preds)\n", "original_mae" ] }, { "cell_type": "code", "execution_count": 12, "id": "b3e9d678-f3fe-40f0-a083-b2d6f6260b01", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.9497667311649802" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model = LinearRegression()\n", "model.fit(selected_features, y_train)\n", "test_features = selector.transform(synth.transform(X_test))\n", "preds = model.predict(test_features)\n", "featuristic_mae = mean_absolute_error(y_test, preds)\n", "featuristic_mae" ] }, { "cell_type": "code", "execution_count": 13, "id": "cd9df3ee-f998-463a-be64-6998747fd564", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Original MAE: 2.5888868138669303\n", "Featuristic MAE: 1.9497667311649802\n", "Improvement: 24.7%\n" ] } ], "source": [ "print(f\"Original MAE: {original_mae}\")\n", "print(f\"Featuristic MAE: {featuristic_mae}\")\n", "print(f\"Improvement: {round((1 - (featuristic_mae / original_mae))* 100, 1)}%\")" ] }, { "cell_type": "markdown", "id": "022d7356-2d48-4def-8d9d-8907d7823c61", "metadata": {}, "source": [ "### Plot the History of the Genetic Algorithms" ] }, { "cell_type": "code", "execution_count": 14, "id": "4cad03bd-000d-43c5-8151-2302fd9554c8", "metadata": {}, "outputs": [ { "data": { "image/png": "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LlX//v0VFBSk8PBwXXTRRdq9e7fj808//VQXXHCBmjVrppYtW2rUqFGOzw4dOqT09HS1aNFCgYGBGjZsmOMp3yfW9sknn6hbt24KCAhQTk6OysrKNHXqVLVq1UpBQUFKTk7W0qVLa1Wvq9FC4wzHxHoEGgBQxRHpSROm8r9/v2R1rivnzTff1D333KOMjAy99957uu2227RgwQKNGjVK999/v55//nndeOONysnJUXl5uS677DKNGzdOzz//vI4ePap7771X11xzjZYsWSJJuvvuu7Vs2TJ9/PHHio6O1v3336+1a9fqvPPOO2MNPj4+mjlzptq3b68dO3bo9ttv1z333KOXX37Zsc2RI0f07LPP6j//+Y98fHx0ww03aOrUqZo7d+5Zv19lZaVGjhyp8ePH691331V5ebkyMjJksVgkSZ9//rlGjRqlBx54QG+99ZbKy8v1xRdfOPYfM2aMtm7dqk8++UShoaG69957NXz4cG3cuFH+/v6O2p5++mm98cYbioyMVHR0tCZNmqSNGzdq3rx5io+P14IFCzR06FBlZWWpc+fOTv2M6stiGE5GXQ9X38ePn9XeTOmNy6SwNtJfs1x7bADwYMeOHdPOnTvVvn17NWvWzL6yvNQrAs2gQYNks9n03XffSbJ3l4SFhemqq67SW2+9JUnKy8tTXFycVq5cqa+//lrfffedvvrqK8cx9u7dq4SEBGVnZys+Pl6RkZF6++23dfXVV0uSCgoK1Lp1a02YMMHRKtOuXTtNnjy5xkDhE3344Ye69dZbHS0/c+bM0c0336xt27apY8eOkqSXX35Zjz/+uPLy8s76HQsKChQZGamlS5dq4MCBp3w+YMAAdejQQW+//fYpn23dulWJiYlasWKFBgwYIEn67bfflJCQoDfffFNXX321o7b169erd+/ekuwP4uzQoYNycnJqPKMqNTVV/fv315NPPnnKuU77e3Rcff9+00LjDMcYGlpoAED+gfZwYcZ5ndSrVy/Ha19fX0VGRqpnz56OdTExMZKk/Px8/fTTT/r2228VHBx8ynG2b9+uo0ePqry8XMnJyY71ERER6tKly1lr+PrrrzV9+nRt3rxZxcXFqqys1LFjx3TkyBEFBtq/U2BgoCPMSFJcXJzy8/PP+f0iIiI0ZswYDRkyRL///e+Vmpqqa665RnFxcZKk9evXa/z48afd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Q5KxcuVKs8pslFq0aGG88cYbXPMGcPjwYaNz587G4sWLjYEDBxp33nmnYRj8vrvLI488YvTu3fu0n7nymtNCcw7l5eXKzMxUamqqY52Pj49SU1O1cuVKEytrWnbu3Km8vLwaP4ewsDAlJyfzc3ChoqIiSVJERIQkKTMzUxUVFTWue9euXdWmTRuuu4vYbDbNmzdPpaWlSklJ4Zo3gIkTJ+oPf/hDjWss8fvuTlu3blV8fLw6dOigtLQ05eTkSHLtNW90D6d0tV9//VU2m00xMTE11sfExGjz5s0mVdX05OXlSdJpfw7Vn6F+qqqqNHnyZF100UXq0aOHJPt1t1qtCg8Pr7Et173+srKylJKSomPHjik4OFgLFixQt27dtH79eq65G82bN09r167V6tWrT/mM33f3SE5O1pw5c9SlSxfl5ubqscce0yWXXKJffvnFpdecQANAkv3/Wn/55Zcafdtwny5dumj9+vUqKirShx9+qJtuuknLli0zu6xGbc+ePbrzzju1ePFiNWvWzOxymoxhw4Y5Xvfq1UvJyclq27at3n//fTVv3txl56HL6RxatmwpX1/fU0ZcHzhwQLGxsSZV1fRUX2t+Du4xadIkffbZZ/r222/VunVrx/rY2FiVl5ersLCwxvZc9/qzWq3q1KmT+vbtq+nTp6t379568cUXueZulJmZqfz8fPXp00d+fn7y8/PTsmXLNHPmTPn5+SkmJoZr3wDCw8OVmJiobdu2ufT3nUBzDlarVX379tU333zjWFdVVaVvvvlGKSkpJlbWtLRv316xsbE1fg7FxcVatWoVP4d6MAxDkyZN0oIFC7RkyRK1b9++xud9+/aVv79/jeuenZ2tnJwcrruLVVVVqaysjGvuRoMHD1ZWVpbWr1/vWPr166e0tDTHa669+5WUlGj79u2Ki4tz7e97PQYuNxnz5s0zAgICjDlz5hgbN240JkyYYISHhxt5eXlml9aoHD582Fi3bp2xbt06Q5Lx3HPPGevWrTN2795tGIZhPPXUU0Z4eLjx8ccfGz///LMxYsQIo3379sbRo0dNrtx73XbbbUZYWJixdOlSIzc317EcOXLEsc2tt95qtGnTxliyZImxZs0aIyUlxUhJSTGxau933333GcuWLTN27txp/Pzzz8Z9991nWCwWY9GiRYZhcM0b0ol3ORkG194dpkyZYixdutTYuXOnsWLFCiM1NdVo2bKlkZ+fbxiG6645gaaWZs2aZbRp08awWq1G//79jR9//NHskhqdb7/91pB0ynLTTTcZhmG/dfuhhx4yYmJijICAAGPw4MFGdna2uUV7udNdb0nG7NmzHdscPXrUuP32240WLVoYgYGBxqhRo4zc3Fzzim4E/vznPxtt27Y1rFarERUVZQwePNgRZgyDa96QTg40XHvXu/baa424uDjDarUarVq1Mq699lpj27Ztjs9ddc0thmEYLmhBAgAAMA1jaAAAgNcj0AAAAK9HoAEAAF6PQAMAALwegQYAAHg9Ag0AAPB6BBoAAOD1CDQAAMDrEWgANDlLly6VxWI55YF4ALwXMwUDaNQGDRqk8847Ty+88IJjXXl5uQoKChQTEyOLxWJecQBchhYaAF6poqKizvtarVbFxsYSZoBGhEAD4KwOHz6stLQ0BQUFKS4uTs8//7wGDRqkyZMnS5LKyso0depUtWrVSkFBQUpOTtbSpUsd+8+ZM0fh4eH66quvlJSUpODgYA0dOlS5ubk1zvPGG28oKSlJzZo1U9euXfXyyy87Ptu1a5csFovee+89DRw4UM2aNdPcuXP122+/6frrr1erVq0UGBionj176t1333XsN2bMGC1btkwvvviiLBaLLBaLdu3addoup48++kjdu3dXQECA2rVrpxkzZtSor127dnryySf15z//WSEhIWrTpo1ee+01111oAPXjqqdpAmicxo0bZ7Rt29b4+uuvjaysLGPUqFFGSEiI4wnF48aNMwYMGGAsX77c2LZtm/HMM88YAQEBxpYtWwzDMIzZs2cb/v7+RmpqqrF69WojMzPTSEpKMv70pz85zvH2228bcXFxxkcffWTs2LHD+Oijj4yIiAhjzpw5hmEYxs6dOw1JRrt27Rzb7N+/39i7d6/xzDPPGOvWrTO2b99uzJw50/D19TVWrVplGIZhFBYWGikpKcb48eON3NxcIzc316isrHQ82f3QoUOGYRjGmjVrDB8fH+Pxxx83srOzjdmzZxvNmzev8dTxtm3bGhEREcZLL71kbN261Zg+fbrh4+NjbN682f0/BADnRKABcEbFxcWGv7+/8cEHHzjWFRYWGoGBgcadd95p7N692/D19TX27dtXY7/Bgwcb06ZNMwzDHmgkGdu2bXN8/tJLLxkxMTGO9x07djTeeeedGsd44oknjJSUFMMw/hdoXnjhhXPW/Ic//MGYMmWK4/3AgQMd4avayYHmT3/6k/H73/++xjZ333230a1bN8f7tm3bGjfccIPjfVVVlREdHW288sor56wJgPv5mdo8BMCj7dixQxUVFerfv79jXVhYmLp06SJJysrKks1mU2JiYo39ysrKFBkZ6XgfGBiojh07Ot7HxcUpPz9fklRaWqrt27dr7NixGj9+vGObyspKhYWF1Thuv379ary32Wx68skn9f7772vfvn0qLy9XWVmZAgMDnfqemzZt0ogRI2qsu+iii/TCCy/IZrPJ19dXktSrVy/H5xaLRbGxsY7vAcBcBBoAdVZSUiJfX19lZmY6/uhXCw4Odrz29/ev8ZnFYpFx/AbLkpISSdLrr7+u5OTkGtudfMygoKAa75955hm9+OKLeuGFF9SzZ08FBQVp8uTJKi8vr98XO4PTfY+qqiq3nAuAcwg0AM6oQ4cO8vf31+rVq9WmTRtJUlFRkbZs2aJLL71U559/vmw2m/Lz83XJJZfU6RwxMTGKj4/Xjh07lJaW5tS+K1as0IgRI3TDDTdIkqqqqrRlyxZ169bNsY3VapXNZjvrcZKSkrRixYpTjp2YmHhKqALgmQg0AM4oJCREN910k+6++25FREQoOjpajzzyiHx8fGSxWJSYmKi0tDSlp6drxowZOv/883Xw4EF988036tWrl/7whz/U6jyPPfaY7rjjDoWFhWno0KEqKyvTmjVrdOjQId11111n3K9z58768MMP9cMPP6hFixZ67rnndODAgRqBpl27dlq1apV27dql4OBgRUREnHKcKVOm6IILLtATTzyha6+9VitXrtQ//vGPGndaAfBs3LYN4Kyee+45paSk6IorrlBqaqouuugix+3VkjR79mylp6drypQp6tKli0aOHFmjRac2xo0bpzfeeEOzZ89Wz549NXDgQM2ZM0ft27c/634PPvig+vTpoyFDhmjQoEGKjY3VyJEja2wzdepU+fr6qlu3boqKilJOTs4px+nTp4/ef/99zZs3Tz169NDDDz+sxx9/XGPGjKn1dwBgLmYKBuCU0tJStWrVSjNmzNDYsWPNLgcAJNHlBOAc1q1bp82bN6t///4qKirS448/Lkmn3BUEAGYi0AA4p2effVbZ2dmyWq3q27evvvvuO7Vs2dLssgDAgS4nAADg9RgUDAAAvB6BBgAAeD0CDQAA8HoEGgAA4PUINAAAwOsRaAAAgNcj0AAAAK9HoAEAAF7v/wOLPUANLO5nywAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "synth.plot_history()" ] }, { "cell_type": "code", "execution_count": 15, "id": "a5c8b5dc-6313-4625-b03f-492931fba810", "metadata": {}, "outputs": [ { "data": { "image/png": "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EigqKjrn+4uKimLs2LEMHTqUyy67jIyMDK6//noSEhIA2LBhA+PHjz/tvlu2bKFJkya13k90dDQdO3Zky5aTwx4CAwNrfY4bN27EbreTmppa63jl5eVER0efs+aGUGBxVmznE4FlC7TPsLoaEZHGZbM53TVjlZpujRo2m63WYzVdJ9XV1ZSWlnLVVVfx1FNPnXKchIQEduzY4fTr79q1iyuvvJI777yTv//970RFRbFy5UrGjRtHRUWFI7Ccrs66dn7MmDGDe+65hwULFjBv3jz+/Oc/s3jxYi666CKaNWvmdM2/1KxZM8fnBFBaWoq/vz/r1q3D39+/1ranC3uupEG3ztLAWxERn3PhhRfy/fffk5ycTPv27WtdQkJCaNeuHQEBAaxZs8axz08//cS2bdvOeMx169ZRXV3NtGnTuOiii0hNTWXfPte3TvXs2ZPJkyfz5Zdf0q1bN2bPng2YLUxLliw57T6dO3emqqqq1vs5ePAgOTk5dOnS5ayvZbfbKSoqOuVzio+Pd+0b+wUFFmdparOIiM/Jysri0KFDjB49mq+++orc3FwWLlzIrbfeit1uJzQ0lHHjxvHAAw+wdOlSNm3axNixY/HzO/PPaPv27amsrOSFF15g586d/Oc//+HVV191Wc15eXlMnjyZVatW8cMPP7Bo0SK2b99O587m79QjjzzCnDlzeOSRR9iyZQsbN250tCB16NCBESNGMH78eFauXMm3337LzTffTMuWLRkxYsQZXzM1NZUxY8aQmZnJe++9R15eHmvXrmXKlCl8/PHHLntvp6PA4qyaFpYDOWDhfHQREXGdxMREvvjiC+x2O0OGDCEtLY2JEyfSvHlzRyh55plnGDBgAFdddRUZGRn8z//8D7169TrjMXv06MGzzz7LU089Rbdu3XjzzTeZMmWKy2oODg5m69atjBo1itTUVG6//XaysrL43e9+B5gDj99++20+/PBDLrjgAi655BLWrl3r2H/GjBn06tWLK6+8kn79+mEYBp988skpXVS/NGPGDDIzM7n//vvp2LEjI0eO5KuvvqJ169Yue2+no1lCzqq2w98TwF4O92yAqBT3vp6IiEXONLNDxFmumCWkFhZn+flDzInR0RrHIiIi0igUWOrDMfBW41hERMR9QkNDz3ipWWPmfKFpzfXhGHirFhYREXGfDRs2nPG5li1bNl4h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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "selector.plot_history()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.11.6" } }, "nbformat": 4, "nbformat_minor": 5 }