CoolFace
Apppublic

robitalhazmi/genetic_algorithm

sourceHugging Facemitupdated 2y agoView on Hugging Face
0likes
GA_KKPM.ipynb4144 linesDownload Raw Back to root
1{2  "cells": [3    {4      "cell_type": "code",5      "execution_count": 43,6      "metadata": {7        "id": "l8Y_Fz5_VKUf"8      },9      "outputs": [],10      "source": [11        "import numpy as np\n",12        "import pandas as pd\n",13        "import seaborn as sns\n",14        "import matplotlib.pyplot as plt\n",15        "%matplotlib inline\n",16        "from random import randint\n",17        "from joblib import dump, load\n",18        "import warnings\n",19        "warnings.filterwarnings(\"ignore\")\n",20        "\n",21        "from sklearn.model_selection import train_test_split\n",22        "from sklearn import tree\n",23        "from sklearn.tree import DecisionTreeClassifier\n",24        "from sklearn.metrics import accuracy_score\n",25        "\n",26        "import graphviz"27      ]28    },29    {30      "cell_type": "code",31      "execution_count": 20,32      "metadata": {33        "id": "mIqh1kxmVQ9o"34      },35      "outputs": [],36      "source": [37        "classifiers = ['DecisionTree']\n",38        "\n",39        "models = [DecisionTreeClassifier(random_state=0)]\n",40        "\n",41        "def split(df,label):\n",42        "    X_train, X_test, Y_train, Y_test = train_test_split(df, label, test_size=0.25, random_state=42, stratify=label)\n",43        "    return X_train, X_test, Y_train, Y_test\n",44        "\n",45        "def acc_score(df,label):\n",46        "    score = pd.DataFrame({\"Classifier\":classifiers})\n",47        "    acc = []\n",48        "    X_train,X_test,Y_train,Y_test = split(df,label)\n",49        "    for i in models:\n",50        "        model = i\n",51        "        model.fit(X_train,Y_train)\n",52        "        predictions = model.predict(X_test)\n",53        "        acc.append(accuracy_score(Y_test,predictions))\n",54        "    score[\"Accuracy\"] = acc\n",55        "    score.sort_values(by=\"Accuracy\", ascending=False,inplace = True)\n",56        "    score.reset_index(drop=True, inplace=True)\n",57        "    return score\n",58        "\n",59        "def plot(score,x,y,c = \"b\"):\n",60        "    gen = [1,2,3,4,5]\n",61        "    plt.figure(figsize=(6,4))\n",62        "    ax = sns.pointplot(x=gen, y=score,color = c )\n",63        "    ax.set(xlabel=\"Generation\", ylabel=\"Accuracy\")\n",64        "    plt.show()"65      ]66    },67    {68      "cell_type": "code",69      "execution_count": 21,70      "metadata": {71        "id": "SYWqktBJVQ7I"72      },73      "outputs": [],74      "source": [75        "def initilization_of_population(size,n_feat):\n",76        "    population = []\n",77        "    for i in range(size):\n",78        "        chromosome = np.ones(n_feat, bool)\n",79        "        chromosome[:int(0.3*n_feat)]=False\n",80        "        np.random.shuffle(chromosome)\n",81        "        population.append(chromosome)\n",82        "    return population\n",83        "\n",84        "def fitness_score(population):\n",85        "    scores = []\n",86        "    models = []\n",87        "    for chromosome in population:\n",88        "        logmodel = DecisionTreeClassifier(random_state=0)\n",89        "        logmodel.fit(X_train.iloc[:,chromosome], Y_train)\n",90        "        predictions = logmodel.predict(X_test.iloc[:,chromosome])\n",91        "        scores.append(accuracy_score(Y_test,predictions))\n",92        "        models.append(logmodel)\n",93        "    scores, population, models = np.array(scores), np.array(population), np.array(models)\n",94        "    inds = np.argsort(scores)\n",95        "    return list(scores[inds][::-1]), list(population[inds,:][::-1]), list(models[inds][::-1])\n",96        "\n",97        "def selection(pop_after_fit, n_parents):\n",98        "    population_nextgen = []\n",99        "    for i in range(n_parents):\n",100        "        population_nextgen.append(pop_after_fit[i])\n",101        "    return population_nextgen\n",102        "\n",103        "def crossover(pop_after_sel):\n",104        "    pop_nextgen = pop_after_sel\n",105        "    for i in range(0,len(pop_after_sel),2):\n",106        "        new_par = []\n",107        "        child_1 , child_2 = pop_nextgen[i] , pop_nextgen[i+1]\n",108        "        new_par = np.concatenate((child_1[:len(child_1)//2],child_2[len(child_1)//2:]))\n",109        "        pop_nextgen.append(new_par)\n",110        "    return pop_nextgen\n",111        "\n",112        "def mutation(pop_after_cross, mutation_rate, n_feat):\n",113        "    mutation_range = int(mutation_rate * n_feat)\n",114        "    for n in range(64, len(pop_after_cross)):\n",115        "        chromo = pop_after_cross[n]\n",116        "        rand_posi = []\n",117        "        for i in range(0, mutation_range):\n",118        "            pos = randint(0, n_feat-1)\n",119        "            rand_posi.append(pos)\n",120        "        for j in rand_posi:\n",121        "            chromo[j] = not chromo[j]\n",122        "        pop_after_cross[n] = chromo\n",123        "    return pop_after_cross\n",124        "\n",125        "def generations(df, label, size, n_feat, n_parents, mutation_rate, n_gen, X_train, X_test, Y_train, Y_test):\n",126        "    best_chromo = []\n",127        "    best_score = []\n",128        "    best_models = []\n",129        "    population_nextgen=initilization_of_population(size,n_feat)\n",130        "    for i in range(n_gen):\n",131        "        scores, pop_after_fit, models = fitness_score(population_nextgen)\n",132        "        print('Best score in generation',i+1,':',scores[:1])\n",133        "\n",134        "        pop_after_sel = selection(pop_after_fit, n_parents)\n",135        "        pop_after_cross = crossover(pop_after_sel)\n",136        "        population_nextgen = mutation(pop_after_cross, mutation_rate, n_feat)\n",137        "\n",138        "        best_score.append(scores[0])\n",139        "        best_chromo.append(pop_after_fit[0])\n",140        "        best_models.append(models[0])\n",141        "\n",142        "    return best_chromo, best_score, best_models"143      ]144    },145    {146      "cell_type": "code",147      "execution_count": 22,148      "metadata": {149        "colab": {150          "base_uri": "https://localhost:8080/",151          "height": 273152        },153        "id": "X3Ww2R2wVQ44",154        "outputId": "ccd8b6d6-f6ce-4bf5-c476-8e28c11cc0ee"155      },156      "outputs": [157        {158          "name": "stdout",159          "output_type": "stream",160          "text": [161            "(920, 23)\n"162          ]163        },164        {165          "data": {166            "text/html": [167              "<div>\n",168              "<style scoped>\n",169              "    .dataframe tbody tr th:only-of-type {\n",170              "        vertical-align: middle;\n",171              "    }\n",172              "\n",173              "    .dataframe tbody tr th {\n",174              "        vertical-align: top;\n",175              "    }\n",176              "\n",177              "    .dataframe thead th {\n",178              "        text-align: right;\n",179              "    }\n",180              "</style>\n",181              "<table border=\"1\" class=\"dataframe\">\n",182              "  <thead>\n",183              "    <tr style=\"text-align: right;\">\n",184              "      <th></th>\n",185              "      <th>age</th>\n",186              "      <th>trestbps</th>\n",187              "      <th>chol</th>\n",188              "      <th>thalach</th>\n",189              "      <th>oldpeak</th>\n",190              "      <th>ca</th>\n",191              "      <th>sex</th>\n",192              "      <th>fbs</th>\n",193              "      <th>exang</th>\n",194              "      <th>cp_1.0</th>\n",195              "      <th>...</th>\n",196              "      <th>restecg_0</th>\n",197              "      <th>restecg_1</th>\n",198              "      <th>restecg_2</th>\n",199              "      <th>slope_1</th>\n",200              "      <th>slope_2</th>\n",201              "      <th>slope_3</th>\n",202              "      <th>thal_3.0</th>\n",203              "      <th>thal_6.0</th>\n",204              "      <th>thal_7.0</th>\n",205              "      <th>num</th>\n",206              "    </tr>\n",207              "  </thead>\n",208              "  <tbody>\n",209              "    <tr>\n",210              "      <th>0</th>\n",211              "      <td>63.0</td>\n",212              "      <td>145.0</td>\n",213              "      <td>233.0</td>\n",214              "      <td>150.0</td>\n",215              "      <td>2.3</td>\n",216              "      <td>0.0</td>\n",217              "      <td>1.0</td>\n",218              "      <td>1</td>\n",219              "      <td>0</td>\n",220              "      <td>1.0</td>\n",221              "      <td>...</td>\n",222              "      <td>0.0</td>\n",223              "      <td>0.0</td>\n",224              "      <td>1.0</td>\n",225              "      <td>0.0</td>\n",226              "      <td>0.0</td>\n",227              "      <td>1.0</td>\n",228              "      <td>0.0</td>\n",229              "      <td>1.0</td>\n",230              "      <td>0.0</td>\n",231              "      <td>0</td>\n",232              "    </tr>\n",233              "    <tr>\n",234              "      <th>1</th>\n",235              "      <td>67.0</td>\n",236              "      <td>160.0</td>\n",237              "      <td>286.0</td>\n",238              "      <td>108.0</td>\n",239              "      <td>1.5</td>\n",240              "      <td>3.0</td>\n",241              "      <td>1.0</td>\n",242              "      <td>0</td>\n",243              "      <td>1</td>\n",244              "      <td>0.0</td>\n",245              "      <td>...</td>\n",246              "      <td>0.0</td>\n",247              "      <td>0.0</td>\n",248              "      <td>1.0</td>\n",249              "      <td>0.0</td>\n",250              "      <td>1.0</td>\n",251              "      <td>0.0</td>\n",252              "      <td>1.0</td>\n",253              "      <td>0.0</td>\n",254              "      <td>0.0</td>\n",255              "      <td>1</td>\n",256              "    </tr>\n",257              "    <tr>\n",258              "      <th>2</th>\n",259              "      <td>67.0</td>\n",260              "      <td>120.0</td>\n",261              "      <td>229.0</td>\n",262              "      <td>129.0</td>\n",263              "      <td>2.6</td>\n",264              "      <td>2.0</td>\n",265              "      <td>1.0</td>\n",266              "      <td>0</td>\n",267              "      <td>1</td>\n",268              "      <td>0.0</td>\n",269              "      <td>...</td>\n",270              "      <td>0.0</td>\n",271              "      <td>0.0</td>\n",272              "      <td>1.0</td>\n",273              "      <td>0.0</td>\n",274              "      <td>1.0</td>\n",275              "      <td>0.0</td>\n",276              "      <td>0.0</td>\n",277              "      <td>0.0</td>\n",278              "      <td>1.0</td>\n",279              "      <td>1</td>\n",280              "    </tr>\n",281              "    <tr>\n",282              "      <th>3</th>\n",283              "      <td>37.0</td>\n",284              "      <td>130.0</td>\n",285              "      <td>250.0</td>\n",286              "      <td>187.0</td>\n",287              "      <td>3.5</td>\n",288              "      <td>0.0</td>\n",289              "      <td>1.0</td>\n",290              "      <td>0</td>\n",291              "      <td>0</td>\n",292              "      <td>0.0</td>\n",293              "      <td>...</td>\n",294              "      <td>1.0</td>\n",295              "      <td>0.0</td>\n",296              "      <td>0.0</td>\n",297              "      <td>0.0</td>\n",298              "      <td>0.0</td>\n",299              "      <td>1.0</td>\n",300              "      <td>1.0</td>\n",301              "      <td>0.0</td>\n",302              "      <td>0.0</td>\n",303              "      <td>0</td>\n",304              "    </tr>\n",305              "    <tr>\n",306              "      <th>4</th>\n",307              "      <td>41.0</td>\n",308              "      <td>130.0</td>\n",309              "      <td>204.0</td>\n",310              "      <td>172.0</td>\n",311              "      <td>1.4</td>\n",312              "      <td>0.0</td>\n",313              "      <td>0.0</td>\n",314              "      <td>0</td>\n",315              "      <td>0</td>\n",316              "      <td>0.0</td>\n",317              "      <td>...</td>\n",318              "      <td>0.0</td>\n",319              "      <td>0.0</td>\n",320              "      <td>1.0</td>\n",321              "      <td>1.0</td>\n",322              "      <td>0.0</td>\n",323              "      <td>0.0</td>\n",324              "      <td>1.0</td>\n",325              "      <td>0.0</td>\n",326              "      <td>0.0</td>\n",327              "      <td>0</td>\n",328              "    </tr>\n",329              "  </tbody>\n",330              "</table>\n",331              "<p>5 rows × 23 columns</p>\n",332              "</div>"333            ],334            "text/plain": [335              "    age  trestbps   chol  thalach  oldpeak   ca  sex  fbs  exang  cp_1.0  ...  \\\n",336              "0  63.0     145.0  233.0    150.0      2.3  0.0  1.0    1      0     1.0  ...   \n",337              "1  67.0     160.0  286.0    108.0      1.5  3.0  1.0    0      1     0.0  ...   \n",338              "2  67.0     120.0  229.0    129.0      2.6  2.0  1.0    0      1     0.0  ...   \n",339              "3  37.0     130.0  250.0    187.0      3.5  0.0  1.0    0      0     0.0  ...   \n",340              "4  41.0     130.0  204.0    172.0      1.4  0.0  0.0    0      0     0.0  ...   \n",341              "\n",342              "   restecg_0  restecg_1  restecg_2  slope_1  slope_2  slope_3  thal_3.0  \\\n",343              "0        0.0        0.0        1.0      0.0      0.0      1.0       0.0   \n",344              "1        0.0        0.0        1.0      0.0      1.0      0.0       1.0   \n",345              "2        0.0        0.0        1.0      0.0      1.0      0.0       0.0   \n",346              "3        1.0        0.0        0.0      0.0      0.0      1.0       1.0   \n",347              "4        0.0        0.0        1.0      1.0      0.0      0.0       1.0   \n",348              "\n",349              "   thal_6.0  thal_7.0  num  \n",350              "0       1.0       0.0    0  \n",351              "1       0.0       0.0    1  \n",352              "2       0.0       1.0    1  \n",353              "3       0.0       0.0    0  \n",354              "4       0.0       0.0    0  \n",355              "\n",356              "[5 rows x 23 columns]"357            ]358          },359          "execution_count": 22,360          "metadata": {},361          "output_type": "execute_result"362        }363      ],364      "source": [365        "data_hd = pd.read_csv('./encoded_heart_disease.csv')\n",366        "\n",367        "print(data_hd.shape)\n",368        "data_hd.head()"369      ]370    },371    {372      "cell_type": "code",373      "execution_count": 23,374      "metadata": {375        "colab": {376          "base_uri": "https://localhost:8080/",377          "height": 273378        },379        "id": "Zu6Gr1HGiS6Q",380        "outputId": "deec92ca-74f3-4e15-c89e-c0bb9858e586"381      },382      "outputs": [383        {384          "name": "stdout",385          "output_type": "stream",386          "text": [387            "(920, 23)\n"388          ]389        },390        {391          "data": {392            "text/html": [393              "<div>\n",394              "<style scoped>\n",395              "    .dataframe tbody tr th:only-of-type {\n",396              "        vertical-align: middle;\n",397              "    }\n",398              "\n",399              "    .dataframe tbody tr th {\n",400              "        vertical-align: top;\n",401              "    }\n",402              "\n",403              "    .dataframe thead th {\n",404              "        text-align: right;\n",405              "    }\n",406              "</style>\n",407              "<table border=\"1\" class=\"dataframe\">\n",408              "  <thead>\n",409              "    <tr style=\"text-align: right;\">\n",410              "      <th></th>\n",411              "      <th>age</th>\n",412              "      <th>trestbps</th>\n",413              "      <th>chol</th>\n",414              "      <th>thalach</th>\n",415              "      <th>oldpeak</th>\n",416              "      <th>ca</th>\n",417              "      <th>sex</th>\n",418              "      <th>fbs</th>\n",419              "      <th>exang</th>\n",420              "      <th>cp_1.0</th>\n",421              "      <th>...</th>\n",422              "      <th>restecg_0</th>\n",423              "      <th>restecg_1</th>\n",424              "      <th>restecg_2</th>\n",425              "      <th>slope_1</th>\n",426              "      <th>slope_2</th>\n",427              "      <th>slope_3</th>\n",428              "      <th>thal_3.0</th>\n",429              "      <th>thal_6.0</th>\n",430              "      <th>thal_7.0</th>\n",431              "      <th>num</th>\n",432              "    </tr>\n",433              "  </thead>\n",434              "  <tbody>\n",435              "    <tr>\n",436              "      <th>0</th>\n",437              "      <td>63.0</td>\n",438              "      <td>145.0</td>\n",439              "      <td>233.0</td>\n",440              "      <td>150.0</td>\n",441              "      <td>2.3</td>\n",442              "      <td>0.0</td>\n",443              "      <td>1.0</td>\n",444              "      <td>1</td>\n",445              "      <td>0</td>\n",446              "      <td>1.0</td>\n",447              "      <td>...</td>\n",448              "      <td>0.0</td>\n",449              "      <td>0.0</td>\n",450              "      <td>1.0</td>\n",451              "      <td>0.0</td>\n",452              "      <td>0.0</td>\n",453              "      <td>1.0</td>\n",454              "      <td>0.0</td>\n",455              "      <td>1.0</td>\n",456              "      <td>0.0</td>\n",457              "      <td>0</td>\n",458              "    </tr>\n",459              "    <tr>\n",460              "      <th>1</th>\n",461              "      <td>67.0</td>\n",462              "      <td>160.0</td>\n",463              "      <td>286.0</td>\n",464              "      <td>108.0</td>\n",465              "      <td>1.5</td>\n",466              "      <td>3.0</td>\n",467              "      <td>1.0</td>\n",468              "      <td>0</td>\n",469              "      <td>1</td>\n",470              "      <td>0.0</td>\n",471              "      <td>...</td>\n",472              "      <td>0.0</td>\n",473              "      <td>0.0</td>\n",474              "      <td>1.0</td>\n",475              "      <td>0.0</td>\n",476              "      <td>1.0</td>\n",477              "      <td>0.0</td>\n",478              "      <td>1.0</td>\n",479              "      <td>0.0</td>\n",480              "      <td>0.0</td>\n",481              "      <td>1</td>\n",482              "    </tr>\n",483              "    <tr>\n",484              "      <th>2</th>\n",485              "      <td>67.0</td>\n",486              "      <td>120.0</td>\n",487              "      <td>229.0</td>\n",488              "      <td>129.0</td>\n",489              "      <td>2.6</td>\n",490              "      <td>2.0</td>\n",491              "      <td>1.0</td>\n",492              "      <td>0</td>\n",493              "      <td>1</td>\n",494              "      <td>0.0</td>\n",495              "      <td>...</td>\n",496              "      <td>0.0</td>\n",497              "      <td>0.0</td>\n",498              "      <td>1.0</td>\n",499              "      <td>0.0</td>\n",500              "      <td>1.0</td>\n",501              "      <td>0.0</td>\n",502              "      <td>0.0</td>\n",503              "      <td>0.0</td>\n",504              "      <td>1.0</td>\n",505              "      <td>1</td>\n",506              "    </tr>\n",507              "    <tr>\n",508              "      <th>3</th>\n",509              "      <td>37.0</td>\n",510              "      <td>130.0</td>\n",511              "      <td>250.0</td>\n",512              "      <td>187.0</td>\n",513              "      <td>3.5</td>\n",514              "      <td>0.0</td>\n",515              "      <td>1.0</td>\n",516              "      <td>0</td>\n",517              "      <td>0</td>\n",518              "      <td>0.0</td>\n",519              "      <td>...</td>\n",520              "      <td>1.0</td>\n",521              "      <td>0.0</td>\n",522              "      <td>0.0</td>\n",523              "      <td>0.0</td>\n",524              "      <td>0.0</td>\n",525              "      <td>1.0</td>\n",526              "      <td>1.0</td>\n",527              "      <td>0.0</td>\n",528              "      <td>0.0</td>\n",529              "      <td>0</td>\n",530              "    </tr>\n",531              "    <tr>\n",532              "      <th>4</th>\n",533              "      <td>41.0</td>\n",534              "      <td>130.0</td>\n",535              "      <td>204.0</td>\n",536              "      <td>172.0</td>\n",537              "      <td>1.4</td>\n",538              "      <td>0.0</td>\n",539              "      <td>0.0</td>\n",540              "      <td>0</td>\n",541              "      <td>0</td>\n",542              "      <td>0.0</td>\n",543              "      <td>...</td>\n",544              "      <td>0.0</td>\n",545              "      <td>0.0</td>\n",546              "      <td>1.0</td>\n",547              "      <td>1.0</td>\n",548              "      <td>0.0</td>\n",549              "      <td>0.0</td>\n",550              "      <td>1.0</td>\n",551              "      <td>0.0</td>\n",552              "      <td>0.0</td>\n",553              "      <td>0</td>\n",554              "    </tr>\n",555              "  </tbody>\n",556              "</table>\n",557              "<p>5 rows × 23 columns</p>\n",558              "</div>"559            ],560            "text/plain": [561              "    age  trestbps   chol  thalach  oldpeak   ca  sex  fbs  exang  cp_1.0  ...  \\\n",562              "0  63.0     145.0  233.0    150.0      2.3  0.0  1.0    1      0     1.0  ...   \n",563              "1  67.0     160.0  286.0    108.0      1.5  3.0  1.0    0      1     0.0  ...   \n",564              "2  67.0     120.0  229.0    129.0      2.6  2.0  1.0    0      1     0.0  ...   \n",565              "3  37.0     130.0  250.0    187.0      3.5  0.0  1.0    0      0     0.0  ...   \n",566              "4  41.0     130.0  204.0    172.0      1.4  0.0  0.0    0      0     0.0  ...   \n",567              "\n",568              "   restecg_0  restecg_1  restecg_2  slope_1  slope_2  slope_3  thal_3.0  \\\n",569              "0        0.0        0.0        1.0      0.0      0.0      1.0       0.0   \n",570              "1        0.0        0.0        1.0      0.0      1.0      0.0       1.0   \n",571              "2        0.0        0.0        1.0      0.0      1.0      0.0       0.0   \n",572              "3        1.0        0.0        0.0      0.0      0.0      1.0       1.0   \n",573              "4        0.0        0.0        1.0      1.0      0.0      0.0       1.0   \n",574              "\n",575              "   thal_6.0  thal_7.0  num  \n",576              "0       1.0       0.0    0  \n",577              "1       0.0       0.0    1  \n",578              "2       0.0       1.0    1  \n",579              "3       0.0       0.0    0  \n",580              "4       0.0       0.0    0  \n",581              "\n",582              "[5 rows x 23 columns]"583            ]584          },585          "execution_count": 23,586          "metadata": {},587          "output_type": "execute_result"588        }589      ],590      "source": [591        "print(data_hd.shape)\n",592        "data_hd.head()"593      ]594    },595    {596      "cell_type": "code",597      "execution_count": 24,598      "metadata": {599        "colab": {600          "base_uri": "https://localhost:8080/"601        },602        "id": "LJWVXyIwVQ2Q",603        "outputId": "72b73b8f-5709-495a-9f81-d4f9926700a5"604      },605      "outputs": [606        {607          "data": {608            "text/plain": [609              "Index(['age', 'trestbps', 'chol', 'thalach', 'oldpeak', 'ca', 'sex', 'fbs',\n",610              "       'exang', 'cp_1.0', 'cp_2.0', 'cp_3.0', 'cp_4.0', 'restecg_0',\n",611              "       'restecg_1', 'restecg_2', 'slope_1', 'slope_2', 'slope_3', 'thal_3.0',\n",612              "       'thal_6.0', 'thal_7.0', 'num'],\n",613              "      dtype='object')"614            ]615          },616          "execution_count": 24,617          "metadata": {},618          "output_type": "execute_result"619        }620      ],621      "source": [622        "data_hd.columns"623      ]624    },625    {626      "cell_type": "code",627      "execution_count": 25,628      "metadata": {629        "colab": {630          "base_uri": "https://localhost:8080/",631          "height": 443632        },633        "id": "cbByJdLxkSls",634        "outputId": "48b3ba1d-8b66-4393-9400-1068e51e780f"635      },636      "outputs": [637        {638          "data": {639            "text/html": [640              "<div>\n",641              "<style scoped>\n",642              "    .dataframe tbody tr th:only-of-type {\n",643              "        vertical-align: middle;\n",644              "    }\n",645              "\n",646              "    .dataframe tbody tr th {\n",647              "        vertical-align: top;\n",648              "    }\n",649              "\n",650              "    .dataframe thead th {\n",651              "        text-align: right;\n",652              "    }\n",653              "</style>\n",654              "<table border=\"1\" class=\"dataframe\">\n",655              "  <thead>\n",656              "    <tr style=\"text-align: right;\">\n",657              "      <th></th>\n",658              "      <th>age</th>\n",659              "      <th>trestbps</th>\n",660              "      <th>chol</th>\n",661              "      <th>thalach</th>\n",662              "      <th>oldpeak</th>\n",663              "      <th>ca</th>\n",664              "      <th>sex</th>\n",665              "      <th>fbs</th>\n",666              "      <th>exang</th>\n",667              "      <th>cp_1.0</th>\n",668              "      <th>...</th>\n",669              "      <th>cp_4.0</th>\n",670              "      <th>restecg_0</th>\n",671              "      <th>restecg_1</th>\n",672              "      <th>restecg_2</th>\n",673              "      <th>slope_1</th>\n",674              "      <th>slope_2</th>\n",675              "      <th>slope_3</th>\n",676              "      <th>thal_3.0</th>\n",677              "      <th>thal_6.0</th>\n",678              "      <th>thal_7.0</th>\n",679              "    </tr>\n",680              "  </thead>\n",681              "  <tbody>\n",682              "    <tr>\n",683              "      <th>0</th>\n",684              "      <td>63.0</td>\n",685              "      <td>145.0</td>\n",686              "      <td>233.0</td>\n",687              "      <td>150.0</td>\n",688              "      <td>2.3</td>\n",689              "      <td>0.0</td>\n",690              "      <td>1.0</td>\n",691              "      <td>1</td>\n",692              "      <td>0</td>\n",693              "      <td>1.0</td>\n",694              "      <td>...</td>\n",695              "      <td>0.0</td>\n",696              "      <td>0.0</td>\n",697              "      <td>0.0</td>\n",698              "      <td>1.0</td>\n",699              "      <td>0.0</td>\n",700              "      <td>0.0</td>\n",701              "      <td>1.0</td>\n",702              "      <td>0.0</td>\n",703              "      <td>1.0</td>\n",704              "      <td>0.0</td>\n",705              "    </tr>\n",706              "    <tr>\n",707              "      <th>1</th>\n",708              "      <td>67.0</td>\n",709              "      <td>160.0</td>\n",710              "      <td>286.0</td>\n",711              "      <td>108.0</td>\n",712              "      <td>1.5</td>\n",713              "      <td>3.0</td>\n",714              "      <td>1.0</td>\n",715              "      <td>0</td>\n",716              "      <td>1</td>\n",717              "      <td>0.0</td>\n",718              "      <td>...</td>\n",719              "      <td>1.0</td>\n",720              "      <td>0.0</td>\n",721              "      <td>0.0</td>\n",722              "      <td>1.0</td>\n",723              "      <td>0.0</td>\n",724              "      <td>1.0</td>\n",725              "      <td>0.0</td>\n",726              "      <td>1.0</td>\n",727              "      <td>0.0</td>\n",728              "      <td>0.0</td>\n",729              "    </tr>\n",730              "    <tr>\n",731              "      <th>2</th>\n",732              "      <td>67.0</td>\n",733              "      <td>120.0</td>\n",734              "      <td>229.0</td>\n",735              "      <td>129.0</td>\n",736              "      <td>2.6</td>\n",737              "      <td>2.0</td>\n",738              "      <td>1.0</td>\n",739              "      <td>0</td>\n",740              "      <td>1</td>\n",741              "      <td>0.0</td>\n",742              "      <td>...</td>\n",743              "      <td>1.0</td>\n",744              "      <td>0.0</td>\n",745              "      <td>0.0</td>\n",746              "      <td>1.0</td>\n",747              "      <td>0.0</td>\n",748              "      <td>1.0</td>\n",749              "      <td>0.0</td>\n",750              "      <td>0.0</td>\n",751              "      <td>0.0</td>\n",752              "      <td>1.0</td>\n",753              "    </tr>\n",754              "    <tr>\n",755              "      <th>3</th>\n",756              "      <td>37.0</td>\n",757              "      <td>130.0</td>\n",758              "      <td>250.0</td>\n",759              "      <td>187.0</td>\n",760              "      <td>3.5</td>\n",761              "      <td>0.0</td>\n",762              "      <td>1.0</td>\n",763              "      <td>0</td>\n",764              "      <td>0</td>\n",765              "      <td>0.0</td>\n",766              "      <td>...</td>\n",767              "      <td>0.0</td>\n",768              "      <td>1.0</td>\n",769              "      <td>0.0</td>\n",770              "      <td>0.0</td>\n",771              "      <td>0.0</td>\n",772              "      <td>0.0</td>\n",773              "      <td>1.0</td>\n",774              "      <td>1.0</td>\n",775              "      <td>0.0</td>\n",776              "      <td>0.0</td>\n",777              "    </tr>\n",778              "    <tr>\n",779              "      <th>4</th>\n",780              "      <td>41.0</td>\n",781              "      <td>130.0</td>\n",782              "      <td>204.0</td>\n",783              "      <td>172.0</td>\n",784              "      <td>1.4</td>\n",785              "      <td>0.0</td>\n",786              "      <td>0.0</td>\n",787              "      <td>0</td>\n",788              "      <td>0</td>\n",789              "      <td>0.0</td>\n",790              "      <td>...</td>\n",791              "      <td>0.0</td>\n",792              "      <td>0.0</td>\n",793              "      <td>0.0</td>\n",794              "      <td>1.0</td>\n",795              "      <td>1.0</td>\n",796              "      <td>0.0</td>\n",797              "      <td>0.0</td>\n",798              "      <td>1.0</td>\n",799              "      <td>0.0</td>\n",800              "      <td>0.0</td>\n",801              "    </tr>\n",802              "    <tr>\n",803              "      <th>...</th>\n",804              "      <td>...</td>\n",805              "      <td>...</td>\n",806              "      <td>...</td>\n",807              "      <td>...</td>\n",808              "      <td>...</td>\n",809              "      <td>...</td>\n",810              "      <td>...</td>\n",811              "      <td>...</td>\n",812              "      <td>...</td>\n",813              "      <td>...</td>\n",814              "      <td>...</td>\n",815              "      <td>...</td>\n",816              "      <td>...</td>\n",817              "      <td>...</td>\n",818              "      <td>...</td>\n",819              "      <td>...</td>\n",820              "      <td>...</td>\n",821              "      <td>...</td>\n",822              "      <td>...</td>\n",823              "      <td>...</td>\n",824              "      <td>...</td>\n",825              "    </tr>\n",826              "    <tr>\n",827              "      <th>915</th>\n",828              "      <td>54.0</td>\n",829              "      <td>127.0</td>\n",830              "      <td>333.0</td>\n",831              "      <td>154.0</td>\n",832              "      <td>0.0</td>\n",833              "      <td>0.0</td>\n",834              "      <td>0.0</td>\n",835              "      <td>1</td>\n",836              "      <td>0</td>\n",837              "      <td>0.0</td>\n",838              "      <td>...</td>\n",839              "      <td>1.0</td>\n",840              "      <td>0.0</td>\n",841              "      <td>1.0</td>\n",842              "      <td>0.0</td>\n",843              "      <td>0.0</td>\n",844              "      <td>1.0</td>\n",845              "      <td>0.0</td>\n",846              "      <td>1.0</td>\n",847              "      <td>0.0</td>\n",848              "      <td>0.0</td>\n",849              "    </tr>\n",850              "    <tr>\n",851              "      <th>916</th>\n",852              "      <td>62.0</td>\n",853              "      <td>130.0</td>\n",854              "      <td>139.0</td>\n",855              "      <td>140.0</td>\n",856              "      <td>0.5</td>\n",857              "      <td>0.0</td>\n",858              "      <td>1.0</td>\n",859              "      <td>0</td>\n",860              "      <td>0</td>\n",861              "      <td>1.0</td>\n",862              "      <td>...</td>\n",863              "      <td>0.0</td>\n",864              "      <td>0.0</td>\n",865              "      <td>1.0</td>\n",866              "      <td>0.0</td>\n",867              "      <td>0.0</td>\n",868              "      <td>1.0</td>\n",869              "      <td>0.0</td>\n",870              "      <td>1.0</td>\n",871              "      <td>0.0</td>\n",872              "      <td>0.0</td>\n",873              "    </tr>\n",874              "    <tr>\n",875              "      <th>917</th>\n",876              "      <td>55.0</td>\n",877              "      <td>122.0</td>\n",878              "      <td>223.0</td>\n",879              "      <td>100.0</td>\n",880              "      <td>0.0</td>\n",881              "      <td>0.0</td>\n",882              "      <td>1.0</td>\n",883              "      <td>1</td>\n",884              "      <td>0</td>\n",885              "      <td>0.0</td>\n",886              "      <td>...</td>\n",887              "      <td>1.0</td>\n",888              "      <td>0.0</td>\n",889              "      <td>1.0</td>\n",890              "      <td>0.0</td>\n",891              "      <td>0.0</td>\n",892              "      <td>1.0</td>\n",893              "      <td>0.0</td>\n",894              "      <td>0.0</td>\n",895              "      <td>1.0</td>\n",896              "      <td>0.0</td>\n",897              "    </tr>\n",898              "    <tr>\n",899              "      <th>918</th>\n",900              "      <td>58.0</td>\n",901              "      <td>130.0</td>\n",902              "      <td>385.0</td>\n",903              "      <td>140.0</td>\n",904              "      <td>0.5</td>\n",905              "      <td>0.0</td>\n",906              "      <td>1.0</td>\n",907              "      <td>1</td>\n",908              "      <td>0</td>\n",909              "      <td>0.0</td>\n",910              "      <td>...</td>\n",911              "      <td>1.0</td>\n",912              "      <td>0.0</td>\n",913              "      <td>0.0</td>\n",914              "      <td>1.0</td>\n",915              "      <td>0.0</td>\n",916              "      <td>1.0</td>\n",917              "      <td>0.0</td>\n",918              "      <td>1.0</td>\n",919              "      <td>0.0</td>\n",920              "      <td>0.0</td>\n",921              "    </tr>\n",922              "    <tr>\n",923              "      <th>919</th>\n",924              "      <td>62.0</td>\n",925              "      <td>120.0</td>\n",926              "      <td>254.0</td>\n",927              "      <td>93.0</td>\n",928              "      <td>0.0</td>\n",929              "      <td>0.0</td>\n",930              "      <td>1.0</td>\n",931              "      <td>0</td>\n",932              "      <td>1</td>\n",933              "      <td>0.0</td>\n",934              "      <td>...</td>\n",935              "      <td>0.0</td>\n",936              "      <td>0.0</td>\n",937              "      <td>0.0</td>\n",938              "      <td>1.0</td>\n",939              "      <td>0.0</td>\n",940              "      <td>1.0</td>\n",941              "      <td>0.0</td>\n",942              "      <td>1.0</td>\n",943              "      <td>0.0</td>\n",944              "      <td>0.0</td>\n",945              "    </tr>\n",946              "  </tbody>\n",947              "</table>\n",948              "<p>920 rows × 22 columns</p>\n",949              "</div>"950            ],951            "text/plain": [952              "      age  trestbps   chol  thalach  oldpeak   ca  sex  fbs  exang  cp_1.0  \\\n",953              "0    63.0     145.0  233.0    150.0      2.3  0.0  1.0    1      0     1.0   \n",954              "1    67.0     160.0  286.0    108.0      1.5  3.0  1.0    0      1     0.0   \n",955              "2    67.0     120.0  229.0    129.0      2.6  2.0  1.0    0      1     0.0   \n",956              "3    37.0     130.0  250.0    187.0      3.5  0.0  1.0    0      0     0.0   \n",957              "4    41.0     130.0  204.0    172.0      1.4  0.0  0.0    0      0     0.0   \n",958              "..    ...       ...    ...      ...      ...  ...  ...  ...    ...     ...   \n",959              "915  54.0     127.0  333.0    154.0      0.0  0.0  0.0    1      0     0.0   \n",960              "916  62.0     130.0  139.0    140.0      0.5  0.0  1.0    0      0     1.0   \n",961              "917  55.0     122.0  223.0    100.0      0.0  0.0  1.0    1      0     0.0   \n",962              "918  58.0     130.0  385.0    140.0      0.5  0.0  1.0    1      0     0.0   \n",963              "919  62.0     120.0  254.0     93.0      0.0  0.0  1.0    0      1     0.0   \n",964              "\n",965              "     ...  cp_4.0  restecg_0  restecg_1  restecg_2  slope_1  slope_2  slope_3  \\\n",966              "0    ...     0.0        0.0        0.0        1.0      0.0      0.0      1.0   \n",967              "1    ...     1.0        0.0        0.0        1.0      0.0      1.0      0.0   \n",968              "2    ...     1.0        0.0        0.0        1.0      0.0      1.0      0.0   \n",969              "3    ...     0.0        1.0        0.0        0.0      0.0      0.0      1.0   \n",970              "4    ...     0.0        0.0        0.0        1.0      1.0      0.0      0.0   \n",971              "..   ...     ...        ...        ...        ...      ...      ...      ...   \n",972              "915  ...     1.0        0.0        1.0        0.0      0.0      1.0      0.0   \n",973              "916  ...     0.0        0.0        1.0        0.0      0.0      1.0      0.0   \n",974              "917  ...     1.0        0.0        1.0        0.0      0.0      1.0      0.0   \n",975              "918  ...     1.0        0.0        0.0        1.0      0.0      1.0      0.0   \n",976              "919  ...     0.0        0.0        0.0        1.0      0.0      1.0      0.0   \n",977              "\n",978              "     thal_3.0  thal_6.0  thal_7.0  \n",979              "0         0.0       1.0       0.0  \n",980              "1         1.0       0.0       0.0  \n",981              "2         0.0       0.0       1.0  \n",982              "3         1.0       0.0       0.0  \n",983              "4         1.0       0.0       0.0  \n",984              "..        ...       ...       ...  \n",985              "915       1.0       0.0       0.0  \n",986              "916       1.0       0.0       0.0  \n",987              "917       0.0       1.0       0.0  \n",988              "918       1.0       0.0       0.0  \n",989              "919       1.0       0.0       0.0  \n",990              "\n",991              "[920 rows x 22 columns]"992            ]993          },994          "execution_count": 25,995          "metadata": {},996          "output_type": "execute_result"997        }998      ],999      "source": [1000        "data_hd.iloc[:, :-1]"1001      ]1002    },1003    {1004      "cell_type": "code",1005      "execution_count": 26,1006      "metadata": {1007        "colab": {1008          "base_uri": "https://localhost:8080/",1009          "height": 801010        },1011        "id": "c7JNfRKoVQz4",1012        "outputId": "3d8e474f-eb2a-44ac-e958-5a9afc5f041f"1013      },1014      "outputs": [1015        {1016          "data": {1017            "text/html": [1018              "<div>\n",1019              "<style scoped>\n",1020              "    .dataframe tbody tr th:only-of-type {\n",1021              "        vertical-align: middle;\n",1022              "    }\n",1023              "\n",1024              "    .dataframe tbody tr th {\n",1025              "        vertical-align: top;\n",1026              "    }\n",1027              "\n",1028              "    .dataframe thead th {\n",1029              "        text-align: right;\n",1030              "    }\n",1031              "</style>\n",1032              "<table border=\"1\" class=\"dataframe\">\n",1033              "  <thead>\n",1034              "    <tr style=\"text-align: right;\">\n",1035              "      <th></th>\n",1036              "      <th>Classifier</th>\n",1037              "      <th>Accuracy</th>\n",1038              "    </tr>\n",1039              "  </thead>\n",1040              "  <tbody>\n",1041              "    <tr>\n",1042              "      <th>0</th>\n",1043              "      <td>DecisionTree</td>\n",1044              "      <td>0.717391</td>\n",1045              "    </tr>\n",1046              "  </tbody>\n",1047              "</table>\n",1048              "</div>"1049            ],1050            "text/plain": [1051              "     Classifier  Accuracy\n",1052              "0  DecisionTree  0.717391"1053            ]1054          },1055          "execution_count": 26,1056          "metadata": {},1057          "output_type": "execute_result"1058        }1059      ],1060      "source": [1061        "score1 = acc_score(data_hd.iloc[:, :-1], data_hd['num'])\n",1062        "score1"1063      ]1064    },1065    {1066      "cell_type": "code",1067      "execution_count": 34,1068      "metadata": {1069        "colab": {1070          "base_uri": "https://localhost:8080/"1071        },1072        "id": "DdSzy-GbX0ER",1073        "outputId": "a98e5841-1d78-4f19-8052-928ba716f992"1074      },1075      "outputs": [1076        {1077          "name": "stdout",1078          "output_type": "stream",1079          "text": [1080            "(690, 22) (230, 22) (690,) (230,)\n",1081            "Best score in generation 1 : [0.8]\n",1082            "Best score in generation 2 : [0.808695652173913]\n",1083            "Best score in generation 3 : [0.8130434782608695]\n",1084            "Best score in generation 4 : [0.8217391304347826]\n",1085            "Best score in generation 5 : [0.8217391304347826]\n"1086          ]1087        }1088      ],1089      "source": [1090        "X_train, X_test, Y_train, Y_test = split(data_hd.iloc[:, :-1], data_hd['num'])\n",1091        "print(X_train.shape, X_test.shape, Y_train.shape, Y_test.shape)\n",1092        "chromo_df, score, best_models = generations(data_hd.iloc[:, :-1],\n",1093        "                                            data_hd['num'],\n",1094        "                                            size=96,\n",1095        "                                            n_feat = data_hd.iloc[:, :-1].shape[1],\n",1096        "                                            n_parents=64,\n",1097        "                                            mutation_rate=0.20,\n",1098        "                                            n_gen=5,\n",1099        "                                            X_train = X_train,\n",1100        "                                            X_test = X_test,\n",1101        "                                            Y_train = Y_train,\n",1102        "                                            Y_test = Y_test)"1103      ]1104    },1105    {1106      "cell_type": "code",1107      "execution_count": 35,1108      "metadata": {1109        "colab": {1110          "base_uri": "https://localhost:8080/",1111          "height": 3881112        },1113        "id": "I5rtmJGvX14N",1114        "outputId": "d97250f0-9eed-4cce-dfb0-3a929c47ac34"1115      },1116      "outputs": [1117        {1118          "data": {1119            "image/png": "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n0ycOJHg4OAGt/nxF/7NN99MQUEBH3zwAZmZmVx22WVcc801HDlypG7bffv2sXr1at577z3ee+89NmzYwJNPPll3f1paGn/5y1948cUX+eabb5g2bRq/+c1v2LBhg9NrTp8+nSeffJJdu3bRo0cPysrKGDp0KOvWreOLL77g+uuvJyUlhaysLABWrlxJx44deeyxx8jNzSU3N7fB97Jq1SqmTJnCAw88wNdff829997L+PHj+de//uW03bx587jlllvYuXMnQ4cO5fbbb3d6nyLSCIaIyDn47LPPDMBYuXKl07xDhw5GcHCwERwcbPz+9783/v3vfxuhoaFGRUWF03bnnXee8dJLLxmGYRhz58412rRpY5SUlNTd/9BDDxlJSUmGYRhGRUWF0aZNG+M///mP03PcddddxqhRowzDMIx//etfBmCsXr36jNkvueQS44UXXqj7uXPnzsazzz7rtM2yZcuMsLCwup8HDBhg3HPPPU7b3HzzzcbQoUPrfgaMWbNm1f1cVlZmAMYHH3xwxkwi4qBzUkSkWWzduhWbzcbtt99OZWUlX375JWVlZXTo0MFpu+PHj7Nv3766nxMTEwkJCan7OTY2loKCAgD27t3LsWPHuPbaa52eo6qqit69ezvN+vbt6/RzWVkZjz76KGvXriU3N5eamhqOHz9etyelsXbt2sWECROcZgMHDuS5555zmvXo0aPun4ODgwkNDa17HyLSOCopInJOzj//fCwWC3v27HGad+3aFaDupNOysjJiY2NZv359vec4+ZwPPz8/p/ssFgs2m63uOQDWrl1LfHy803YBAQFOP//00NODDz7IRx99xDPPPMP5559PUFAQN910E1VVVY18p6453fsQkcZRSRGRc9KhQweuvfZaFi1axOTJk095Xspll11GXl4evr6+JCYmntVrXXzxxQQEBJCVlcUvfvELlx776aefMm7cOEaMGAHYC8/333/vtI2/vz+1tbWnfZ6LLrqITz/9lLFjxzo998UXX+xSHhE5M5UUETlnS5YsYeDAgfTt25dHH32UHj16YLVa+fzzz9m9ezd9+vQhOTmZ/v37M3z4cJ566il+9rOfkZOTw9q1axkxYkS9wzMNCQkJ4cEHH2TatGnYbDYGDRpEcXExn376KaGhoU7F4acuuOACVq5cSUpKChaLhdmzZ9fbs5GYmMjGjRu57bbbCAgIICIiot7zPPTQQ9xyyy307t2b5ORk3n33XVauXOm0UkhEmoZKioics/POO48vvviCBQsWMGPGDA4ePEhAQAAXX3wxDz74IL/73e+wWCy8//77PPLII4wfP55Dhw4RExPDlVdeSXR0dKNfa/78+URGRpKWlsb+/ftp164dl112GTNnzjzt4xYuXMidd97JgAEDiIiI4OGHH6akpMRpm8cee4x7772X8847j8rKSgzDqPc8w4cP57nnnuOZZ55hypQpdOnShWXLlnHVVVc1+j2ISONYjIb+FIqIiIiYTNdJEREREbekkiIiIiJuSSVFRERE3JJKioiIiLgllRQRERFxSyopIiIi4pZUUkRERMQtqaSIiIiIW1JJEREREbekkiIiIiJuSSVFRERE3JJKioiIiLil/wdauKD/OF62IwAAAABJRU5ErkJggg==",1120            "text/plain": [1121              "<Figure size 600x400 with 1 Axes>"1122            ]1123          },1124          "metadata": {},1125          "output_type": "display_data"1126        }1127      ],1128      "source": [1129        "plot(score, 0.9, 1.0,c = \"gold\")"1130      ]1131    },1132    {1133      "cell_type": "code",1134      "execution_count": 36,1135      "metadata": {1136        "id": "HQrzrFeuz0yG"1137      },1138      "outputs": [],1139      "source": [1140        "for index, clf in enumerate(best_models):\n",1141        "  dump(clf, 'model-{}.joblib'.format(index))"1142      ]1143    },1144    {1145      "cell_type": "code",1146      "execution_count": 37,1147      "metadata": {1148        "id": "fGbUe1WJYbxp"1149      },1150      "outputs": [],1151      "source": [1152        "clf = load('model-3.joblib')"1153      ]1154    },1155    {1156      "cell_type": "code",1157      "execution_count": 38,1158      "metadata": {1159        "colab": {1160          "base_uri": "https://localhost:8080/",1161          "height": 4231162        },1163        "id": "bA8Qf-orbDnu",1164        "outputId": "409bf4c6-5668-4f58-ff16-5f597771fb28"1165      },1166      "outputs": [1167        {1168          "data": {1169            "text/html": [1170              "<div>\n",1171              "<style scoped>\n",1172              "    .dataframe tbody tr th:only-of-type {\n",1173              "        vertical-align: middle;\n",1174              "    }\n",1175              "\n",1176              "    .dataframe tbody tr th {\n",1177              "        vertical-align: top;\n",1178              "    }\n",1179              "\n",1180              "    .dataframe thead th {\n",1181              "        text-align: right;\n",1182              "    }\n",1183              "</style>\n",1184              "<table border=\"1\" class=\"dataframe\">\n",1185              "  <thead>\n",1186              "    <tr style=\"text-align: right;\">\n",1187              "      <th></th>\n",1188              "      <th>sex</th>\n",1189              "      <th>exang</th>\n",1190              "      <th>cp_1.0</th>\n",1191              "      <th>cp_2.0</th>\n",1192              "      <th>cp_3.0</th>\n",1193              "      <th>cp_4.0</th>\n",1194              "      <th>restecg_1</th>\n",1195              "      <th>slope_1</th>\n",1196              "      <th>slope_2</th>\n",1197              "      <th>thal_3.0</th>\n",1198              "      <th>thal_6.0</th>\n",1199              "      <th>thal_7.0</th>\n",1200              "    </tr>\n",

Showing the first 1,200 of 4144 lines. Download the file for the rest.