{ "cells": [ { "cell_type": "code", "execution_count": 43, "metadata": { "id": "l8Y_Fz5_VKUf" }, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "from random import randint\n", "from joblib import dump, load\n", "import warnings\n", "warnings.filterwarnings(\"ignore\")\n", "\n", "from sklearn.model_selection import train_test_split\n", "from sklearn import tree\n", "from sklearn.tree import DecisionTreeClassifier\n", "from sklearn.metrics import accuracy_score\n", "\n", "import graphviz" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "id": "mIqh1kxmVQ9o" }, "outputs": [], "source": [ "classifiers = ['DecisionTree']\n", "\n", "models = [DecisionTreeClassifier(random_state=0)]\n", "\n", "def split(df,label):\n", " X_train, X_test, Y_train, Y_test = train_test_split(df, label, test_size=0.25, random_state=42, stratify=label)\n", " return X_train, X_test, Y_train, Y_test\n", "\n", "def acc_score(df,label):\n", " score = pd.DataFrame({\"Classifier\":classifiers})\n", " acc = []\n", " X_train,X_test,Y_train,Y_test = split(df,label)\n", " for i in models:\n", " model = i\n", " model.fit(X_train,Y_train)\n", " predictions = model.predict(X_test)\n", " acc.append(accuracy_score(Y_test,predictions))\n", " score[\"Accuracy\"] = acc\n", " score.sort_values(by=\"Accuracy\", ascending=False,inplace = True)\n", " score.reset_index(drop=True, inplace=True)\n", " return score\n", "\n", "def plot(score,x,y,c = \"b\"):\n", " gen = [1,2,3,4,5]\n", " plt.figure(figsize=(6,4))\n", " ax = sns.pointplot(x=gen, y=score,color = c )\n", " ax.set(xlabel=\"Generation\", ylabel=\"Accuracy\")\n", " plt.show()" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "id": "SYWqktBJVQ7I" }, "outputs": [], "source": [ "def initilization_of_population(size,n_feat):\n", " population = []\n", " for i in range(size):\n", " chromosome = np.ones(n_feat, bool)\n", " chromosome[:int(0.3*n_feat)]=False\n", " np.random.shuffle(chromosome)\n", " population.append(chromosome)\n", " return population\n", "\n", "def fitness_score(population):\n", " scores = []\n", " models = []\n", " for chromosome in population:\n", " logmodel = DecisionTreeClassifier(random_state=0)\n", " logmodel.fit(X_train.iloc[:,chromosome], Y_train)\n", " predictions = logmodel.predict(X_test.iloc[:,chromosome])\n", " scores.append(accuracy_score(Y_test,predictions))\n", " models.append(logmodel)\n", " scores, population, models = np.array(scores), np.array(population), np.array(models)\n", " inds = np.argsort(scores)\n", " return list(scores[inds][::-1]), list(population[inds,:][::-1]), list(models[inds][::-1])\n", "\n", "def selection(pop_after_fit, n_parents):\n", " population_nextgen = []\n", " for i in range(n_parents):\n", " population_nextgen.append(pop_after_fit[i])\n", " return population_nextgen\n", "\n", "def crossover(pop_after_sel):\n", " pop_nextgen = pop_after_sel\n", " for i in range(0,len(pop_after_sel),2):\n", " new_par = []\n", " child_1 , child_2 = pop_nextgen[i] , pop_nextgen[i+1]\n", " new_par = np.concatenate((child_1[:len(child_1)//2],child_2[len(child_1)//2:]))\n", " pop_nextgen.append(new_par)\n", " return pop_nextgen\n", "\n", "def mutation(pop_after_cross, mutation_rate, n_feat):\n", " mutation_range = int(mutation_rate * n_feat)\n", " for n in range(64, len(pop_after_cross)):\n", " chromo = pop_after_cross[n]\n", " rand_posi = []\n", " for i in range(0, mutation_range):\n", " pos = randint(0, n_feat-1)\n", " rand_posi.append(pos)\n", " for j in rand_posi:\n", " chromo[j] = not chromo[j]\n", " pop_after_cross[n] = chromo\n", " return pop_after_cross\n", "\n", "def generations(df, label, size, n_feat, n_parents, mutation_rate, n_gen, X_train, X_test, Y_train, Y_test):\n", " best_chromo = []\n", " best_score = []\n", " best_models = []\n", " population_nextgen=initilization_of_population(size,n_feat)\n", " for i in range(n_gen):\n", " scores, pop_after_fit, models = fitness_score(population_nextgen)\n", " print('Best score in generation',i+1,':',scores[:1])\n", "\n", " pop_after_sel = selection(pop_after_fit, n_parents)\n", " pop_after_cross = crossover(pop_after_sel)\n", " population_nextgen = mutation(pop_after_cross, mutation_rate, n_feat)\n", "\n", " best_score.append(scores[0])\n", " best_chromo.append(pop_after_fit[0])\n", " best_models.append(models[0])\n", "\n", " return best_chromo, best_score, best_models" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 273 }, "id": "X3Ww2R2wVQ44", "outputId": "ccd8b6d6-f6ce-4bf5-c476-8e28c11cc0ee" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(920, 23)\n" ] }, { "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", " \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", "
agetrestbpscholthalacholdpeakcasexfbsexangcp_1.0...restecg_0restecg_1restecg_2slope_1slope_2slope_3thal_3.0thal_6.0thal_7.0num
063.0145.0233.0150.02.30.01.0101.0...0.00.01.00.00.01.00.01.00.00
167.0160.0286.0108.01.53.01.0010.0...0.00.01.00.01.00.01.00.00.01
267.0120.0229.0129.02.62.01.0010.0...0.00.01.00.01.00.00.00.01.01
337.0130.0250.0187.03.50.01.0000.0...1.00.00.00.00.01.01.00.00.00
441.0130.0204.0172.01.40.00.0000.0...0.00.01.01.00.00.01.00.00.00
\n", "

5 rows × 23 columns

\n", "
" ], "text/plain": [ " age trestbps chol thalach oldpeak ca sex fbs exang cp_1.0 ... \\\n", "0 63.0 145.0 233.0 150.0 2.3 0.0 1.0 1 0 1.0 ... \n", "1 67.0 160.0 286.0 108.0 1.5 3.0 1.0 0 1 0.0 ... \n", "2 67.0 120.0 229.0 129.0 2.6 2.0 1.0 0 1 0.0 ... \n", "3 37.0 130.0 250.0 187.0 3.5 0.0 1.0 0 0 0.0 ... \n", "4 41.0 130.0 204.0 172.0 1.4 0.0 0.0 0 0 0.0 ... \n", "\n", " restecg_0 restecg_1 restecg_2 slope_1 slope_2 slope_3 thal_3.0 \\\n", "0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 \n", "1 0.0 0.0 1.0 0.0 1.0 0.0 1.0 \n", "2 0.0 0.0 1.0 0.0 1.0 0.0 0.0 \n", "3 1.0 0.0 0.0 0.0 0.0 1.0 1.0 \n", "4 0.0 0.0 1.0 1.0 0.0 0.0 1.0 \n", "\n", " thal_6.0 thal_7.0 num \n", "0 1.0 0.0 0 \n", "1 0.0 0.0 1 \n", "2 0.0 1.0 1 \n", "3 0.0 0.0 0 \n", "4 0.0 0.0 0 \n", "\n", "[5 rows x 23 columns]" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data_hd = pd.read_csv('./encoded_heart_disease.csv')\n", "\n", "print(data_hd.shape)\n", "data_hd.head()" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 273 }, "id": "Zu6Gr1HGiS6Q", "outputId": "deec92ca-74f3-4e15-c89e-c0bb9858e586" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(920, 23)\n" ] }, { "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", " \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", "
agetrestbpscholthalacholdpeakcasexfbsexangcp_1.0...restecg_0restecg_1restecg_2slope_1slope_2slope_3thal_3.0thal_6.0thal_7.0num
063.0145.0233.0150.02.30.01.0101.0...0.00.01.00.00.01.00.01.00.00
167.0160.0286.0108.01.53.01.0010.0...0.00.01.00.01.00.01.00.00.01
267.0120.0229.0129.02.62.01.0010.0...0.00.01.00.01.00.00.00.01.01
337.0130.0250.0187.03.50.01.0000.0...1.00.00.00.00.01.01.00.00.00
441.0130.0204.0172.01.40.00.0000.0...0.00.01.01.00.00.01.00.00.00
\n", "

5 rows × 23 columns

\n", "
" ], "text/plain": [ " age trestbps chol thalach oldpeak ca sex fbs exang cp_1.0 ... \\\n", "0 63.0 145.0 233.0 150.0 2.3 0.0 1.0 1 0 1.0 ... \n", "1 67.0 160.0 286.0 108.0 1.5 3.0 1.0 0 1 0.0 ... \n", "2 67.0 120.0 229.0 129.0 2.6 2.0 1.0 0 1 0.0 ... \n", "3 37.0 130.0 250.0 187.0 3.5 0.0 1.0 0 0 0.0 ... \n", "4 41.0 130.0 204.0 172.0 1.4 0.0 0.0 0 0 0.0 ... \n", "\n", " restecg_0 restecg_1 restecg_2 slope_1 slope_2 slope_3 thal_3.0 \\\n", "0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 \n", "1 0.0 0.0 1.0 0.0 1.0 0.0 1.0 \n", "2 0.0 0.0 1.0 0.0 1.0 0.0 0.0 \n", "3 1.0 0.0 0.0 0.0 0.0 1.0 1.0 \n", "4 0.0 0.0 1.0 1.0 0.0 0.0 1.0 \n", "\n", " thal_6.0 thal_7.0 num \n", "0 1.0 0.0 0 \n", "1 0.0 0.0 1 \n", "2 0.0 1.0 1 \n", "3 0.0 0.0 0 \n", "4 0.0 0.0 0 \n", "\n", "[5 rows x 23 columns]" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "print(data_hd.shape)\n", "data_hd.head()" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "LJWVXyIwVQ2Q", "outputId": "72b73b8f-5709-495a-9f81-d4f9926700a5" }, "outputs": [ { "data": { "text/plain": [ "Index(['age', 'trestbps', 'chol', 'thalach', 'oldpeak', 'ca', 'sex', 'fbs',\n", " 'exang', 'cp_1.0', 'cp_2.0', 'cp_3.0', 'cp_4.0', 'restecg_0',\n", " 'restecg_1', 'restecg_2', 'slope_1', 'slope_2', 'slope_3', 'thal_3.0',\n", " 'thal_6.0', 'thal_7.0', 'num'],\n", " dtype='object')" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data_hd.columns" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 443 }, "id": "cbByJdLxkSls", "outputId": "48b3ba1d-8b66-4393-9400-1068e51e780f" }, "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", " \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", " \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", " \n", " \n", " \n", " \n", "
agetrestbpscholthalacholdpeakcasexfbsexangcp_1.0...cp_4.0restecg_0restecg_1restecg_2slope_1slope_2slope_3thal_3.0thal_6.0thal_7.0
063.0145.0233.0150.02.30.01.0101.0...0.00.00.01.00.00.01.00.01.00.0
167.0160.0286.0108.01.53.01.0010.0...1.00.00.01.00.01.00.01.00.00.0
267.0120.0229.0129.02.62.01.0010.0...1.00.00.01.00.01.00.00.00.01.0
337.0130.0250.0187.03.50.01.0000.0...0.01.00.00.00.00.01.01.00.00.0
441.0130.0204.0172.01.40.00.0000.0...0.00.00.01.01.00.00.01.00.00.0
..................................................................
91554.0127.0333.0154.00.00.00.0100.0...1.00.01.00.00.01.00.01.00.00.0
91662.0130.0139.0140.00.50.01.0001.0...0.00.01.00.00.01.00.01.00.00.0
91755.0122.0223.0100.00.00.01.0100.0...1.00.01.00.00.01.00.00.01.00.0
91858.0130.0385.0140.00.50.01.0100.0...1.00.00.01.00.01.00.01.00.00.0
91962.0120.0254.093.00.00.01.0010.0...0.00.00.01.00.01.00.01.00.00.0
\n", "

920 rows × 22 columns

\n", "
" ], "text/plain": [ " age trestbps chol thalach oldpeak ca sex fbs exang cp_1.0 \\\n", "0 63.0 145.0 233.0 150.0 2.3 0.0 1.0 1 0 1.0 \n", "1 67.0 160.0 286.0 108.0 1.5 3.0 1.0 0 1 0.0 \n", "2 67.0 120.0 229.0 129.0 2.6 2.0 1.0 0 1 0.0 \n", "3 37.0 130.0 250.0 187.0 3.5 0.0 1.0 0 0 0.0 \n", "4 41.0 130.0 204.0 172.0 1.4 0.0 0.0 0 0 0.0 \n", ".. ... ... ... ... ... ... ... ... ... ... \n", "915 54.0 127.0 333.0 154.0 0.0 0.0 0.0 1 0 0.0 \n", "916 62.0 130.0 139.0 140.0 0.5 0.0 1.0 0 0 1.0 \n", "917 55.0 122.0 223.0 100.0 0.0 0.0 1.0 1 0 0.0 \n", "918 58.0 130.0 385.0 140.0 0.5 0.0 1.0 1 0 0.0 \n", "919 62.0 120.0 254.0 93.0 0.0 0.0 1.0 0 1 0.0 \n", "\n", " ... cp_4.0 restecg_0 restecg_1 restecg_2 slope_1 slope_2 slope_3 \\\n", "0 ... 0.0 0.0 0.0 1.0 0.0 0.0 1.0 \n", "1 ... 1.0 0.0 0.0 1.0 0.0 1.0 0.0 \n", "2 ... 1.0 0.0 0.0 1.0 0.0 1.0 0.0 \n", "3 ... 0.0 1.0 0.0 0.0 0.0 0.0 1.0 \n", "4 ... 0.0 0.0 0.0 1.0 1.0 0.0 0.0 \n", ".. ... ... ... ... ... ... ... ... \n", "915 ... 1.0 0.0 1.0 0.0 0.0 1.0 0.0 \n", "916 ... 0.0 0.0 1.0 0.0 0.0 1.0 0.0 \n", "917 ... 1.0 0.0 1.0 0.0 0.0 1.0 0.0 \n", "918 ... 1.0 0.0 0.0 1.0 0.0 1.0 0.0 \n", "919 ... 0.0 0.0 0.0 1.0 0.0 1.0 0.0 \n", "\n", " thal_3.0 thal_6.0 thal_7.0 \n", "0 0.0 1.0 0.0 \n", "1 1.0 0.0 0.0 \n", "2 0.0 0.0 1.0 \n", "3 1.0 0.0 0.0 \n", "4 1.0 0.0 0.0 \n", ".. ... ... ... \n", "915 1.0 0.0 0.0 \n", "916 1.0 0.0 0.0 \n", "917 0.0 1.0 0.0 \n", "918 1.0 0.0 0.0 \n", "919 1.0 0.0 0.0 \n", "\n", "[920 rows x 22 columns]" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data_hd.iloc[:, :-1]" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 80 }, "id": "c7JNfRKoVQz4", "outputId": "3d8e474f-eb2a-44ac-e958-5a9afc5f041f" }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ClassifierAccuracy
0DecisionTree0.717391
\n", "
" ], "text/plain": [ " Classifier Accuracy\n", "0 DecisionTree 0.717391" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "score1 = acc_score(data_hd.iloc[:, :-1], data_hd['num'])\n", "score1" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "DdSzy-GbX0ER", "outputId": "a98e5841-1d78-4f19-8052-928ba716f992" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(690, 22) (230, 22) (690,) (230,)\n", "Best score in generation 1 : [0.8]\n", "Best score in generation 2 : [0.808695652173913]\n", "Best score in generation 3 : [0.8130434782608695]\n", "Best score in generation 4 : [0.8217391304347826]\n", "Best score in generation 5 : [0.8217391304347826]\n" ] } ], "source": [ "X_train, X_test, Y_train, Y_test = split(data_hd.iloc[:, :-1], data_hd['num'])\n", "print(X_train.shape, X_test.shape, Y_train.shape, Y_test.shape)\n", "chromo_df, score, best_models = generations(data_hd.iloc[:, :-1],\n", " data_hd['num'],\n", " size=96,\n", " n_feat = data_hd.iloc[:, :-1].shape[1],\n", " n_parents=64,\n", " mutation_rate=0.20,\n", " n_gen=5,\n", " X_train = X_train,\n", " X_test = X_test,\n", " Y_train = Y_train,\n", " Y_test = Y_test)" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 388 }, "id": "I5rtmJGvX14N", "outputId": "d97250f0-9eed-4cce-dfb0-3a929c47ac34" }, "outputs": [ { "data": { "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==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot(score, 0.9, 1.0,c = \"gold\")" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "id": "HQrzrFeuz0yG" }, "outputs": [], "source": [ "for index, clf in enumerate(best_models):\n", " dump(clf, 'model-{}.joblib'.format(index))" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "id": "fGbUe1WJYbxp" }, "outputs": [], "source": [ "clf = load('model-3.joblib')" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 423 }, "id": "bA8Qf-orbDnu", "outputId": "409bf4c6-5668-4f58-ff16-5f597771fb28" }, "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", " \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", "
sexexangcp_1.0cp_2.0cp_3.0cp_4.0restecg_1slope_1slope_2thal_3.0thal_6.0thal_7.0
2721.010.00.00.01.00.00.01.00.00.01.0
591.011.00.00.00.00.01.00.01.00.00.0
6101.010.00.00.01.00.00.01.01.00.00.0
3281.000.00.00.01.00.00.01.01.00.00.0
8041.010.00.00.01.00.00.00.01.00.00.0
.......................................
3740.000.01.00.00.00.00.01.01.00.00.0
5901.010.00.00.01.01.00.01.01.00.00.0
5731.010.00.00.01.00.00.01.01.00.00.0
5801.010.00.00.01.00.00.01.01.00.00.0
3080.000.01.00.00.00.00.01.01.00.00.0
\n", "

230 rows × 12 columns

\n", "
" ], "text/plain": [ " sex exang cp_1.0 cp_2.0 cp_3.0 cp_4.0 restecg_1 slope_1 slope_2 \\\n", "272 1.0 1 0.0 0.0 0.0 1.0 0.0 0.0 1.0 \n", "59 1.0 1 1.0 0.0 0.0 0.0 0.0 1.0 0.0 \n", "610 1.0 1 0.0 0.0 0.0 1.0 0.0 0.0 1.0 \n", "328 1.0 0 0.0 0.0 0.0 1.0 0.0 0.0 1.0 \n", "804 1.0 1 0.0 0.0 0.0 1.0 0.0 0.0 0.0 \n", ".. ... ... ... ... ... ... ... ... ... \n", "374 0.0 0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 \n", "590 1.0 1 0.0 0.0 0.0 1.0 1.0 0.0 1.0 \n", "573 1.0 1 0.0 0.0 0.0 1.0 0.0 0.0 1.0 \n", "580 1.0 1 0.0 0.0 0.0 1.0 0.0 0.0 1.0 \n", "308 0.0 0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 \n", "\n", " thal_3.0 thal_6.0 thal_7.0 \n", "272 0.0 0.0 1.0 \n", "59 1.0 0.0 0.0 \n", "610 1.0 0.0 0.0 \n", "328 1.0 0.0 0.0 \n", "804 1.0 0.0 0.0 \n", ".. ... ... ... \n", "374 1.0 0.0 0.0 \n", "590 1.0 0.0 0.0 \n", "573 1.0 0.0 0.0 \n", "580 1.0 0.0 0.0 \n", "308 1.0 0.0 0.0 \n", "\n", "[230 rows x 12 columns]" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_test[clf.feature_names_in_]" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "KkBlxHuBY9cM", "outputId": "80420dc6-cd49-4f0c-fa5f-a466df712df7" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.8217391304347826\n" ] } ], "source": [ "predictions = clf.predict(X_test[clf.feature_names_in_])\n", "print(accuracy_score(Y_test, predictions))" ] }, { "cell_type": "code", "execution_count": 40, "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", " \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", "
sexexangcp_1.0cp_2.0cp_3.0cp_4.0restecg_1slope_1slope_2thal_3.0thal_6.0thal_7.0
2721.010.00.00.01.00.00.01.00.00.01.0
591.011.00.00.00.00.01.00.01.00.00.0
6101.010.00.00.01.00.00.01.01.00.00.0
3281.000.00.00.01.00.00.01.01.00.00.0
8041.010.00.00.01.00.00.00.01.00.00.0
.......................................
3740.000.01.00.00.00.00.01.01.00.00.0
5901.010.00.00.01.01.00.01.01.00.00.0
5731.010.00.00.01.00.00.01.01.00.00.0
5801.010.00.00.01.00.00.01.01.00.00.0
3080.000.01.00.00.00.00.01.01.00.00.0
\n", "

230 rows × 12 columns

\n", "
" ], "text/plain": [ " sex exang cp_1.0 cp_2.0 cp_3.0 cp_4.0 restecg_1 slope_1 slope_2 \\\n", "272 1.0 1 0.0 0.0 0.0 1.0 0.0 0.0 1.0 \n", "59 1.0 1 1.0 0.0 0.0 0.0 0.0 1.0 0.0 \n", "610 1.0 1 0.0 0.0 0.0 1.0 0.0 0.0 1.0 \n", "328 1.0 0 0.0 0.0 0.0 1.0 0.0 0.0 1.0 \n", "804 1.0 1 0.0 0.0 0.0 1.0 0.0 0.0 0.0 \n", ".. ... ... ... ... ... ... ... ... ... \n", "374 0.0 0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 \n", "590 1.0 1 0.0 0.0 0.0 1.0 1.0 0.0 1.0 \n", "573 1.0 1 0.0 0.0 0.0 1.0 0.0 0.0 1.0 \n", "580 1.0 1 0.0 0.0 0.0 1.0 0.0 0.0 1.0 \n", "308 0.0 0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 \n", "\n", " thal_3.0 thal_6.0 thal_7.0 \n", "272 0.0 0.0 1.0 \n", "59 1.0 0.0 0.0 \n", "610 1.0 0.0 0.0 \n", "328 1.0 0.0 0.0 \n", "804 1.0 0.0 0.0 \n", ".. ... ... ... \n", "374 1.0 0.0 0.0 \n", "590 1.0 0.0 0.0 \n", "573 1.0 0.0 0.0 \n", "580 1.0 0.0 0.0 \n", "308 1.0 0.0 0.0 \n", "\n", "[230 rows x 12 columns]" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_test[clf.feature_names_in_]" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1,\n", " 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1,\n", " 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1,\n", " 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1,\n", " 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1,\n", " 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1,\n", " 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0,\n", " 0, 0, 1, 0, 1, 0, 1, 1, 1, 0], dtype=int64)" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "predictions" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ "\n", "\n", "\n", "\n", "\n", "\n", "Tree\n", "\n", "\n", "\n", "0\n", "\n", "cp_4.0 <= 0.5\n", "gini = 0.494\n", "samples = 690\n", "value = [308.0, 382.0]\n", "\n", "\n", "\n", "1\n", "\n", "sex <= 0.5\n", "gini = 0.415\n", "samples = 320\n", "value = [226, 94]\n", "\n", "\n", "\n", "0->1\n", "\n", "\n", "True\n", "\n", "\n", "\n", "96\n", "\n", "exang <= 0.5\n", "gini = 0.345\n", "samples = 370\n", "value = [82, 288]\n", "\n", "\n", "\n", "0->96\n", "\n", "\n", "False\n", "\n", "\n", "\n", "2\n", "\n", "thal_7.0 <= 0.5\n", "gini = 0.172\n", "samples = 95\n", "value = [86, 9]\n", "\n", "\n", "\n", "1->2\n", "\n", "\n", "\n", "\n", "\n", "31\n", "\n", "cp_2.0 <= 0.5\n", "gini = 0.47\n", "samples = 225\n", "value = [140, 85]\n", "\n", "\n", "\n", "1->31\n", "\n", "\n", "\n", "\n", "\n", "3\n", "\n", "cp_2.0 <= 0.5\n", "gini = 0.126\n", "samples = 89\n", "value = [83, 6]\n", "\n", "\n", "\n", "2->3\n", "\n", "\n", "\n", "\n", "\n", "24\n", "\n", "slope_1 <= 0.5\n", "gini = 0.5\n", "samples = 6\n", "value = [3, 3]\n", "\n", "\n", "\n", "2->24\n", "\n", "\n", "\n", "\n", "\n", "4\n", "\n", "slope_2 <= 0.5\n", "gini = 0.162\n", "samples = 45\n", "value = [41, 4]\n", "\n", "\n", "\n", "3->4\n", "\n", "\n", "\n", "\n", "\n", "13\n", "\n", "slope_1 <= 0.5\n", "gini = 0.087\n", "samples = 44\n", "value = [42, 2]\n", "\n", "\n", "\n", "3->13\n", "\n", "\n", "\n", "\n", "\n", "5\n", "\n", "restecg_1 <= 0.5\n", "gini = 0.087\n", "samples = 22\n", "value = [21, 1]\n", "\n", "\n", "\n", "4->5\n", "\n", "\n", "\n", "\n", "\n", "8\n", "\n", "restecg_1 <= 0.5\n", "gini = 0.227\n", "samples = 23\n", "value = [20, 3]\n", "\n", "\n", "\n", "4->8\n", "\n", "\n", "\n", "\n", "\n", "6\n", "\n", "gini = 0.0\n", "samples = 21\n", "value = [21, 0]\n", "\n", "\n", "\n", "5->6\n", "\n", "\n", "\n", "\n", "\n", "7\n", "\n", "gini = 0.0\n", "samples = 1\n", "value = [0, 1]\n", "\n", "\n", "\n", "5->7\n", "\n", "\n", "\n", "\n", "\n", "9\n", "\n", "cp_1.0 <= 0.5\n", "gini = 0.278\n", "samples = 18\n", "value = [15, 3]\n", "\n", "\n", "\n", "8->9\n", "\n", "\n", "\n", "\n", "\n", "12\n", "\n", "gini = 0.0\n", "samples = 5\n", "value = [5, 0]\n", "\n", "\n", "\n", "8->12\n", "\n", "\n", "\n", "\n", "\n", "10\n", "\n", "gini = 0.245\n", "samples = 14\n", "value = [12, 2]\n", "\n", "\n", "\n", "9->10\n", "\n", "\n", "\n", "\n", "\n", "11\n", "\n", "gini = 0.375\n", "samples = 4\n", "value = [3, 1]\n", "\n", "\n", "\n", "9->11\n", "\n", "\n", "\n", "\n", "\n", "14\n", "\n", "restecg_1 <= 0.5\n", "gini = 0.061\n", "samples = 32\n", "value = [31, 1]\n", "\n", "\n", "\n", "13->14\n", "\n", "\n", "\n", "\n", "\n", "19\n", "\n", "exang <= 0.5\n", "gini = 0.153\n", "samples = 12\n", "value = [11, 1]\n", "\n", "\n", "\n", "13->19\n", "\n", "\n", "\n", "\n", "\n", "15\n", "\n", "exang <= 0.5\n", "gini = 0.077\n", "samples = 25\n", "value = [24, 1]\n", "\n", "\n", "\n", "14->15\n", "\n", "\n", "\n", "\n", "\n", "18\n", "\n", "gini = 0.0\n", "samples = 7\n", "value = [7, 0]\n", "\n", "\n", "\n", "14->18\n", "\n", "\n", "\n", "\n", "\n", "16\n", "\n", "gini = 0.08\n", "samples = 24\n", "value = [23, 1]\n", "\n", "\n", "\n", "15->16\n", "\n", "\n", "\n", "\n", "\n", "17\n", "\n", "gini = 0.0\n", "samples = 1\n", "value = [1, 0]\n", "\n", "\n", "\n", "15->17\n", "\n", "\n", "\n", "\n", "\n", "20\n", "\n", "restecg_1 <= 0.5\n", "gini = 0.18\n", "samples = 10\n", "value = [9, 1]\n", "\n", "\n", "\n", "19->20\n", "\n", "\n", "\n", "\n", "\n", "23\n", "\n", "gini = 0.0\n", "samples = 2\n", "value = [2, 0]\n", "\n", "\n", "\n", "19->23\n", "\n", "\n", "\n", "\n", "\n", "21\n", "\n", "gini = 0.198\n", "samples = 9\n", "value = [8, 1]\n", "\n", "\n", "\n", "20->21\n", "\n", "\n", "\n", "\n", "\n", "22\n", "\n", "gini = 0.0\n", "samples = 1\n", "value = [1, 0]\n", "\n", "\n", "\n", "20->22\n", "\n", "\n", "\n", "\n", "\n", "25\n", "\n", "exang <= 0.5\n", "gini = 0.48\n", "samples = 5\n", "value = [2, 3]\n", "\n", "\n", "\n", "24->25\n", "\n", "\n", "\n", "\n", "\n", "30\n", "\n", "gini = 0.0\n", "samples = 1\n", "value = [1, 0]\n", "\n", "\n", "\n", "24->30\n", "\n", "\n", "\n", "\n", "\n", "26\n", "\n", "gini = 0.5\n", "samples = 2\n", "value = [1, 1]\n", "\n", "\n", "\n", "25->26\n", "\n", "\n", "\n", "\n", "\n", "27\n", "\n", "cp_3.0 <= 0.5\n", "gini = 0.444\n", "samples = 3\n", "value = [1, 2]\n", "\n", "\n", "\n", "25->27\n", "\n", "\n", "\n", "\n", "\n", "28\n", "\n", "gini = 0.5\n", "samples = 2\n", "value = [1, 1]\n", "\n", "\n", "\n", "27->28\n", "\n", "\n", "\n", "\n", "\n", "29\n", "\n", "gini = 0.0\n", "samples = 1\n", "value = [0, 1]\n", "\n", "\n", "\n", "27->29\n", "\n", "\n", "\n", "\n", "\n", "32\n", "\n", "restecg_1 <= 0.5\n", "gini = 0.5\n", "samples = 137\n", "value = [70, 67]\n", "\n", "\n", "\n", "31->32\n", "\n", "\n", "\n", "\n", "\n", "73\n", "\n", "exang <= 0.5\n", "gini = 0.325\n", "samples = 88\n", "value = [70, 18]\n", "\n", "\n", "\n", "31->73\n", "\n", "\n", "\n", "\n", "\n", "33\n", "\n", "slope_2 <= 0.5\n", "gini = 0.489\n", "samples = 110\n", "value = [63, 47]\n", "\n", "\n", "\n", "32->33\n", "\n", "\n", "\n", "\n", "\n", "62\n", "\n", "exang <= 0.5\n", "gini = 0.384\n", "samples = 27\n", "value = [7, 20]\n", "\n", "\n", "\n", "32->62\n", "\n", "\n", "\n", "\n", "\n", "34\n", "\n", "thal_3.0 <= 0.5\n", "gini = 0.401\n", "samples = 36\n", "value = [26, 10]\n", "\n", "\n", "\n", "33->34\n", "\n", "\n", "\n", "\n", "\n", "49\n", "\n", "thal_6.0 <= 0.5\n", "gini = 0.5\n", "samples = 74\n", "value = [37, 37]\n", "\n", "\n", "\n", "33->49\n", "\n", "\n", "\n", "\n", "\n", "35\n", "\n", "cp_1.0 <= 0.5\n", "gini = 0.198\n", "samples = 9\n", "value = [8, 1]\n", "\n", "\n", "\n", "34->35\n", "\n", "\n", "\n", "\n", "\n", "42\n", "\n", "exang <= 0.5\n", "gini = 0.444\n", "samples = 27\n", "value = [18, 9]\n", "\n", "\n", "\n", "34->42\n", "\n", "\n", "\n", "\n", "\n", "36\n", "\n", "exang <= 0.5\n", "gini = 0.278\n", "samples = 6\n", "value = [5, 1]\n", "\n", "\n", "\n", "35->36\n", "\n", "\n", "\n", "\n", "\n", "41\n", "\n", "gini = 0.0\n", "samples = 3\n", "value = [3, 0]\n", "\n", "\n", "\n", "35->41\n", "\n", "\n", "\n", "\n", "\n", "37\n", "\n", "slope_1 <= 0.5\n", "gini = 0.32\n", "samples = 5\n", "value = [4, 1]\n", "\n", "\n", "\n", "36->37\n", "\n", "\n", "\n", "\n", "\n", "40\n", "\n", "gini = 0.0\n", "samples = 1\n", "value = [1, 0]\n", "\n", "\n", "\n", "36->40\n", "\n", "\n", "\n", "\n", "\n", "38\n", "\n", "gini = 0.0\n", "samples = 1\n", "value = [1, 0]\n", "\n", "\n", "\n", "37->38\n", "\n", "\n", "\n", "\n", "\n", "39\n", "\n", "gini = 0.375\n", "samples = 4\n", "value = [3, 1]\n", "\n", "\n", "\n", "37->39\n", "\n", "\n", "\n", "\n", "\n", "43\n", "\n", "cp_1.0 <= 0.5\n", "gini = 0.426\n", "samples = 26\n", "value = [18, 8]\n", "\n", "\n", "\n", "42->43\n", "\n", "\n", "\n", "\n", "\n", "48\n", "\n", "gini = 0.0\n", "samples = 1\n", "value = [0, 1]\n", "\n", "\n", "\n", "42->48\n", "\n", "\n", "\n", "\n", "\n", "44\n", "\n", "slope_1 <= 0.5\n", "gini = 0.363\n", "samples = 21\n", "value = [16, 5]\n", "\n", "\n", "\n", "43->44\n", "\n", "\n", "\n", "\n", "\n", "47\n", "\n", "gini = 0.48\n", "samples = 5\n", "value = [2, 3]\n", "\n", "\n", "\n", "43->47\n", "\n", "\n", "\n", "\n", "\n", "45\n", "\n", "gini = 0.444\n", "samples = 3\n", "value = [2, 1]\n", "\n", "\n", "\n", "44->45\n", "\n", "\n", "\n", "\n", "\n", "46\n", "\n", "gini = 0.346\n", "samples = 18\n", "value = [14, 4]\n", "\n", "\n", "\n", "44->46\n", "\n", "\n", "\n", "\n", "\n", "50\n", "\n", "cp_3.0 <= 0.5\n", "gini = 0.5\n", "samples = 72\n", "value = [37, 35]\n", "\n", "\n", "\n", "49->50\n", "\n", "\n", "\n", "\n", "\n", "61\n", "\n", "gini = 0.0\n", "samples = 2\n", "value = [0, 2]\n", "\n", "\n", "\n", "49->61\n", "\n", "\n", "\n", "\n", "\n", "51\n", "\n", "thal_3.0 <= 0.5\n", "gini = 0.444\n", "samples = 12\n", "value = [4, 8]\n", "\n", "\n", "\n", "50->51\n", "\n", "\n", "\n", "\n", "\n", "54\n", "\n", "thal_3.0 <= 0.5\n", "gini = 0.495\n", "samples = 60\n", "value = [33, 27]\n", "\n", "\n", "\n", "50->54\n", "\n", "\n", "\n", "\n", "\n", "52\n", "\n", "gini = 0.48\n", "samples = 5\n", "value = [3, 2]\n", "\n", "\n", "\n", "51->52\n", "\n", "\n", "\n", "\n", "\n", "53\n", "\n", "gini = 0.245\n", "samples = 7\n", "value = [1, 6]\n", "\n", "\n", "\n", "51->53\n", "\n", "\n", "\n", "\n", "\n", "55\n", "\n", "exang <= 0.5\n", "gini = 0.444\n", "samples = 12\n", "value = [4, 8]\n", "\n", "\n", "\n", "54->55\n", "\n", "\n", "\n", "\n", "\n", "58\n", "\n", "exang <= 0.5\n", "gini = 0.478\n", "samples = 48\n", "value = [29, 19]\n", "\n", "\n", "\n", "54->58\n", "\n", "\n", "\n", "\n", "\n", "56\n", "\n", "gini = 0.408\n", "samples = 7\n", "value = [2, 5]\n", "\n", "\n", "\n", "55->56\n", "\n", "\n", "\n", "\n", "\n", "57\n", "\n", "gini = 0.48\n", "samples = 5\n", "value = [2, 3]\n", "\n", "\n", "\n", "55->57\n", "\n", "\n", "\n", "\n", "\n", "59\n", "\n", "gini = 0.444\n", "samples = 36\n", "value = [24, 12]\n", "\n", "\n", "\n", "58->59\n", "\n", "\n", "\n", "\n", "\n", "60\n", "\n", "gini = 0.486\n", "samples = 12\n", "value = [5, 7]\n", "\n", "\n", "\n", "58->60\n", "\n", "\n", "\n", "\n", "\n", "63\n", "\n", "slope_1 <= 0.5\n", "gini = 0.434\n", "samples = 22\n", "value = [7.0, 15.0]\n", "\n", "\n", "\n", "62->63\n", "\n", "\n", "\n", "\n", "\n", "72\n", "\n", "gini = 0.0\n", "samples = 5\n", "value = [0, 5]\n", "\n", "\n", "\n", "62->72\n", "\n", "\n", "\n", "\n", "\n", "64\n", "\n", "slope_2 <= 0.5\n", "gini = 0.42\n", "samples = 20\n", "value = [6, 14]\n", "\n", "\n", "\n", "63->64\n", "\n", "\n", "\n", "\n", "\n", "71\n", "\n", "gini = 0.5\n", "samples = 2\n", "value = [1, 1]\n", "\n", "\n", "\n", "63->71\n", "\n", "\n", "\n", "\n", "\n", "65\n", "\n", "gini = 0.0\n", "samples = 2\n", "value = [0, 2]\n", "\n", "\n", "\n", "64->65\n", "\n", "\n", "\n", "\n", "\n", "66\n", "\n", "cp_1.0 <= 0.5\n", "gini = 0.444\n", "samples = 18\n", "value = [6, 12]\n", "\n", "\n", "\n", "64->66\n", "\n", "\n", "\n", "\n", "\n", "67\n", "\n", "thal_6.0 <= 0.5\n", "gini = 0.444\n", "samples = 15\n", "value = [5, 10]\n", "\n", "\n", "\n", "66->67\n", "\n", "\n", "\n", "\n", "\n", "70\n", "\n", "gini = 0.444\n", "samples = 3\n", "value = [1, 2]\n", "\n", "\n", "\n", "66->70\n", "\n", "\n", "\n", "\n", "\n", "68\n", "\n", "gini = 0.444\n", "samples = 12\n", "value = [4, 8]\n", "\n", "\n", "\n", "67->68\n", "\n", "\n", "\n", "\n", "\n", "69\n", "\n", "gini = 0.444\n", "samples = 3\n", "value = [1, 2]\n", "\n", "\n", "\n", "67->69\n", "\n", "\n", "\n", "\n", "\n", "74\n", "\n", "thal_7.0 <= 0.5\n", "gini = 0.242\n", "samples = 78\n", "value = [67, 11]\n", "\n", "\n", "\n", "73->74\n", "\n", "\n", "\n", "\n", "\n", "89\n", "\n", "slope_2 <= 0.5\n", "gini = 0.42\n", "samples = 10\n", "value = [3, 7]\n", "\n", "\n", "\n", "73->89\n", "\n", "\n", "\n", "\n", "\n", "75\n", "\n", "restecg_1 <= 0.5\n", "gini = 0.185\n", "samples = 68\n", "value = [61, 7]\n", "\n", "\n", "\n", "74->75\n", "\n", "\n", "\n", "\n", "\n", "84\n", "\n", "slope_2 <= 0.5\n", "gini = 0.48\n", "samples = 10\n", "value = [6, 4]\n", "\n", "\n", "\n", "74->84\n", "\n", "\n", "\n", "\n", "\n", "76\n", "\n", "slope_2 <= 0.5\n", "gini = 0.1\n", "samples = 57\n", "value = [54, 3]\n", "\n", "\n", "\n", "75->76\n", "\n", "\n", "\n", "\n", "\n", "81\n", "\n", "slope_2 <= 0.5\n", "gini = 0.463\n", "samples = 11\n", "value = [7, 4]\n", "\n", "\n", "\n", "75->81\n", "\n", "\n", "\n", "\n", "\n", "77\n", "\n", "gini = 0.0\n", "samples = 16\n", "value = [16, 0]\n", "\n", "\n", "\n", "76->77\n", "\n", "\n", "\n", "\n", "\n", "78\n", "\n", "thal_3.0 <= 0.5\n", "gini = 0.136\n", "samples = 41\n", "value = [38, 3]\n", "\n", "\n", "\n", "76->78\n", "\n", "\n", "\n", "\n", "\n", "79\n", "\n", "gini = 0.0\n", "samples = 2\n", "value = [2, 0]\n", "\n", "\n", "\n", "78->79\n", "\n", "\n", "\n", "\n", "\n", "80\n", "\n", "gini = 0.142\n", "samples = 39\n", "value = [36, 3]\n", "\n", "\n", "\n", "78->80\n", "\n", "\n", "\n", "\n", "\n", "82\n", "\n", "gini = 0.444\n", "samples = 3\n", "value = [2, 1]\n", "\n", "\n", "\n", "81->82\n", "\n", "\n", "\n", "\n", "\n", "83\n", "\n", "gini = 0.469\n", "samples = 8\n", "value = [5, 3]\n", "\n", "\n", "\n", "81->83\n", "\n", "\n", "\n", "\n", "\n", "85\n", "\n", "slope_1 <= 0.5\n", "gini = 0.5\n", "samples = 6\n", "value = [3, 3]\n", "\n", "\n", "\n", "84->85\n", "\n", "\n", "\n", "\n", "\n", "88\n", "\n", "gini = 0.375\n", "samples = 4\n", "value = [3, 1]\n", "\n", "\n", "\n", "84->88\n", "\n", "\n", "\n", "\n", "\n", "86\n", "\n", "gini = 0.0\n", "samples = 1\n", "value = [0, 1]\n", "\n", "\n", "\n", "85->86\n", "\n", "\n", "\n", "\n", "\n", "87\n", "\n", "gini = 0.48\n", "samples = 5\n", "value = [3, 2]\n", "\n", "\n", "\n", "85->87\n", "\n", "\n", "\n", "\n", "\n", "90\n", "\n", "gini = 0.0\n", "samples = 1\n", "value = [1, 0]\n", "\n", "\n", "\n", "89->90\n", "\n", "\n", "\n", "\n", "\n", "91\n", "\n", "restecg_1 <= 0.5\n", "gini = 0.346\n", "samples = 9\n", "value = [2, 7]\n", "\n", "\n", "\n", "89->91\n", "\n", "\n", "\n", "\n", "\n", "92\n", "\n", "thal_6.0 <= 0.5\n", "gini = 0.408\n", "samples = 7\n", "value = [2, 5]\n", "\n", "\n", "\n", "91->92\n", "\n", "\n", "\n", "\n", "\n", "95\n", "\n", "gini = 0.0\n", "samples = 2\n", "value = [0, 2]\n", "\n", "\n", "\n", "91->95\n", "\n", "\n", "\n", "\n", "\n", "93\n", "\n", "gini = 0.444\n", "samples = 6\n", "value = [2, 4]\n", "\n", "\n", "\n", "92->93\n", "\n", "\n", "\n", "\n", "\n", "94\n", "\n", "gini = 0.0\n", "samples = 1\n", "value = [0, 1]\n", "\n", "\n", "\n", "92->94\n", "\n", "\n", "\n", "\n", "\n", "97\n", "\n", "thal_3.0 <= 0.5\n", "gini = 0.462\n", "samples = 160\n", "value = [58, 102]\n", "\n", "\n", "\n", "96->97\n", "\n", "\n", "\n", "\n", "\n", "130\n", "\n", "sex <= 0.5\n", "gini = 0.202\n", "samples = 210\n", "value = [24, 186]\n", "\n", "\n", "\n", "96->130\n", "\n", "\n", "\n", "\n", "\n", "98\n", "\n", "slope_1 <= 0.5\n", "gini = 0.236\n", "samples = 44\n", "value = [6, 38]\n", "\n", "\n", "\n", "97->98\n", "\n", "\n", "\n", "\n", "\n", "111\n", "\n", "sex <= 0.5\n", "gini = 0.495\n", "samples = 116\n", "value = [52, 64]\n", "\n", "\n", "\n", "97->111\n", "\n", "\n", "\n", "\n", "\n", "99\n", "\n", "restecg_1 <= 0.5\n", "gini = 0.111\n", "samples = 34\n", "value = [2, 32]\n", "\n", "\n", "\n", "98->99\n", "\n", "\n", "\n", "\n", "\n", "106\n", "\n", "thal_6.0 <= 0.5\n", "gini = 0.48\n", "samples = 10\n", "value = [4, 6]\n", "\n", "\n", "\n", "98->106\n", "\n", "\n", "\n", "\n", "\n", "100\n", "\n", "thal_6.0 <= 0.5\n", "gini = 0.147\n", "samples = 25\n", "value = [2, 23]\n", "\n", "\n", "\n", "99->100\n", "\n", "\n", "\n", "\n", "\n", "105\n", "\n", "gini = 0.0\n", "samples = 9\n", "value = [0, 9]\n", "\n", "\n", "\n", "99->105\n", "\n", "\n", "\n", "\n", "\n", "101\n", "\n", "sex <= 0.5\n", "gini = 0.095\n", "samples = 20\n", "value = [1, 19]\n", "\n", "\n", "\n", "100->101\n", "\n", "\n", "\n", "\n", "\n", "104\n", "\n", "gini = 0.32\n", "samples = 5\n", "value = [1, 4]\n", "\n", "\n", "\n", "100->104\n", "\n", "\n", "\n", "\n", "\n", "102\n", "\n", "gini = 0.0\n", "samples = 4\n", "value = [0, 4]\n", "\n", "\n", "\n", "101->102\n", "\n", "\n", "\n", "\n", "\n", "103\n", "\n", "gini = 0.117\n", "samples = 16\n", "value = [1, 15]\n", "\n", "\n", "\n", "101->103\n", "\n", "\n", "\n", "\n", "\n", "107\n", "\n", "restecg_1 <= 0.5\n", "gini = 0.444\n", "samples = 9\n", "value = [3, 6]\n", "\n", "\n", "\n", "106->107\n", "\n", "\n", "\n", "\n", "\n", "110\n", "\n", "gini = 0.0\n", "samples = 1\n", "value = [1, 0]\n", "\n", "\n", "\n", "106->110\n", "\n", "\n", "\n", "\n", "\n", "108\n", "\n", "gini = 0.469\n", "samples = 8\n", "value = [3, 5]\n", "\n", "\n", "\n", "107->108\n", "\n", "\n", "\n", "\n", "\n", "109\n", "\n", "gini = 0.0\n", "samples = 1\n", "value = [0, 1]\n", "\n", "\n", "\n", "107->109\n", "\n", "\n", "\n", "\n", "\n", "112\n", "\n", "slope_2 <= 0.5\n", "gini = 0.397\n", "samples = 22\n", "value = [16, 6]\n", "\n", "\n", "\n", "111->112\n", "\n", "\n", "\n", "\n", "\n", "119\n", "\n", "slope_1 <= 0.5\n", "gini = 0.473\n", "samples = 94\n", "value = [36, 58]\n", "\n", "\n", "\n", "111->119\n", "\n", "\n", "\n", "\n", "\n", "113\n", "\n", "slope_1 <= 0.5\n", "gini = 0.48\n", "samples = 10\n", "value = [6, 4]\n", "\n", "\n", "\n", "112->113\n", "\n", "\n", "\n", "\n", "\n", "116\n", "\n", "restecg_1 <= 0.5\n", "gini = 0.278\n", "samples = 12\n", "value = [10, 2]\n", "\n", "\n", "\n", "112->116\n", "\n", "\n", "\n", "\n", "\n", "114\n", "\n", "gini = 0.0\n", "samples = 2\n", "value = [0, 2]\n", "\n", "\n", "\n", "113->114\n", "\n", "\n", "\n", "\n", "\n", "115\n", "\n", "gini = 0.375\n", "samples = 8\n", "value = [6, 2]\n", "\n", "\n", "\n", "113->115\n", "\n", "\n", "\n", "\n", "\n", "117\n", "\n", "gini = 0.198\n", "samples = 9\n", "value = [8, 1]\n", "\n", "\n", "\n", "116->117\n", "\n", "\n", "\n", "\n", "\n", "118\n", "\n", "gini = 0.444\n", "samples = 3\n", "value = [2, 1]\n", "\n", "\n", "\n", "116->118\n", "\n", "\n", "\n", "\n", "\n", "120\n", "\n", "restecg_1 <= 0.5\n", "gini = 0.477\n", "samples = 74\n", "value = [29, 45]\n", "\n", "\n", "\n", "119->120\n", "\n", "\n", "\n", "\n", "\n", "127\n", "\n", "restecg_1 <= 0.5\n", "gini = 0.455\n", "samples = 20\n", "value = [7, 13]\n", "\n", "\n", "\n", "119->127\n", "\n", "\n", "\n", "\n", "\n", "121\n", "\n", "slope_2 <= 0.5\n", "gini = 0.46\n", "samples = 53\n", "value = [19, 34]\n", "\n", "\n", "\n", "120->121\n", "\n", "\n", "\n", "\n", "\n", "124\n", "\n", "slope_2 <= 0.5\n", "gini = 0.499\n", "samples = 21\n", "value = [10, 11]\n", "\n", "\n", "\n", "120->124\n", "\n", "\n", "\n", "\n", "\n", "122\n", "\n", "gini = 0.444\n", "samples = 3\n", "value = [1, 2]\n", "\n", "\n", "\n", "121->122\n", "\n", "\n", "\n", "\n", "\n", "123\n", "\n", "gini = 0.461\n", "samples = 50\n", "value = [18, 32]\n", "\n", "\n", "\n", "121->123\n", "\n", "\n", "\n", "\n", "\n", "125\n", "\n", "gini = 0.0\n", "samples = 1\n", "value = [1, 0]\n", "\n", "\n", "\n", "124->125\n", "\n", "\n", "\n", "\n", "\n", "126\n", "\n", "gini = 0.495\n", "samples = 20\n", "value = [9, 11]\n", "\n", "\n", "\n", "124->126\n", "\n", "\n", "\n", "\n", "\n", "128\n", "\n", "gini = 0.492\n", "samples = 16\n", "value = [7, 9]\n", "\n", "\n", "\n", "127->128\n", "\n", "\n", "\n", "\n", "\n", "129\n", "\n", "gini = 0.0\n", "samples = 4\n", "value = [0, 4]\n", "\n", "\n", "\n", "127->129\n", "\n", "\n", "\n", "\n", "\n", "131\n", "\n", "thal_3.0 <= 0.5\n", "gini = 0.384\n", "samples = 27\n", "value = [7, 20]\n", "\n", "\n", "\n", "130->131\n", "\n", "\n", "\n", "\n", "\n", "140\n", "\n", "restecg_1 <= 0.5\n", "gini = 0.169\n", "samples = 183\n", "value = [17, 166]\n", "\n", "\n", "\n", "130->140\n", "\n", "\n", "\n", "\n", "\n", "132\n", "\n", "gini = 0.0\n", "samples = 9\n", "value = [0, 9]\n", "\n", "\n", "\n", "131->132\n", "\n", "\n", "\n", "\n", "\n", "133\n", "\n", "slope_1 <= 0.5\n", "gini = 0.475\n", "samples = 18\n", "value = [7, 11]\n", "\n", "\n", "\n", "131->133\n", "\n", "\n", "\n", "\n", "\n", "134\n", "\n", "slope_2 <= 0.5\n", "gini = 0.444\n", "samples = 15\n", "value = [5, 10]\n", "\n", "\n", "\n", "133->134\n", "\n", "\n", "\n", "\n", "\n", "139\n", "\n", "gini = 0.444\n", "samples = 3\n", "value = [2, 1]\n", "\n", "\n", "\n", "133->139\n", "\n", "\n", "\n", "\n", "\n", "135\n", "\n", "gini = 0.0\n", "samples = 1\n", "value = [0, 1]\n", "\n", "\n", "\n", "134->135\n", "\n", "\n", "\n", "\n", "\n", "136\n", "\n", "restecg_1 <= 0.5\n", "gini = 0.459\n", "samples = 14\n", "value = [5, 9]\n", "\n", "\n", "\n", "134->136\n", "\n", "\n", "\n", "\n", "\n", "137\n", "\n", "gini = 0.463\n", "samples = 11\n", "value = [4, 7]\n", "\n", "\n", "\n", "136->137\n", "\n", "\n", "\n", "\n", "\n", "138\n", "\n", "gini = 0.444\n", "samples = 3\n", "value = [1, 2]\n", "\n", "\n", "\n", "136->138\n", "\n", "\n", "\n", "\n", "\n", "141\n", "\n", "slope_2 <= 0.5\n", "gini = 0.146\n", "samples = 139\n", "value = [11, 128]\n", "\n", "\n", "\n", "140->141\n", "\n", "\n", "\n", "\n", "\n", "156\n", "\n", "slope_2 <= 0.5\n", "gini = 0.236\n", "samples = 44\n", "value = [6, 38]\n", "\n", "\n", "\n", "140->156\n", "\n", "\n", "\n", "\n", "\n", "142\n", "\n", "slope_1 <= 0.5\n", "gini = 0.206\n", "samples = 43\n", "value = [5, 38]\n", "\n", "\n", "\n", "141->142\n", "\n", "\n", "\n", "\n", "\n", "151\n", "\n", "thal_3.0 <= 0.5\n", "gini = 0.117\n", "samples = 96\n", "value = [6, 90]\n", "\n", "\n", "\n", "141->151\n", "\n", "\n", "\n", "\n", "\n", "143\n", "\n", "thal_7.0 <= 0.5\n", "gini = 0.172\n", "samples = 21\n", "value = [2, 19]\n", "\n", "\n", "\n", "142->143\n", "\n", "\n", "\n", "\n", "\n", "148\n", "\n", "thal_3.0 <= 0.5\n", "gini = 0.236\n", "samples = 22\n", "value = [3, 19]\n", "\n", "\n", "\n", "142->148\n", "\n", "\n", "\n", "\n", "\n", "144\n", "\n", "thal_6.0 <= 0.5\n", "gini = 0.142\n", "samples = 13\n", "value = [1, 12]\n", "\n", "\n", "\n", "143->144\n", "\n", "\n", "\n", "\n", "\n", "147\n", "\n", "gini = 0.219\n", "samples = 8\n", "value = [1, 7]\n", "\n", "\n", "\n", "143->147\n", "\n", "\n", "\n", "\n", "\n", "145\n", "\n", "gini = 0.153\n", "samples = 12\n", "value = [1, 11]\n", "\n", "\n", "\n", "144->145\n", "\n", "\n", "\n", "\n", "\n", "146\n", "\n", "gini = 0.0\n", "samples = 1\n", "value = [0, 1]\n", "\n", "\n", "\n", "144->146\n", "\n", "\n", "\n", "\n", "\n", "149\n", "\n", "gini = 0.231\n", "samples = 15\n", "value = [2, 13]\n", "\n", "\n", "\n", "148->149\n", "\n", "\n", "\n", "\n", "\n", "150\n", "\n", "gini = 0.245\n", "samples = 7\n", "value = [1, 6]\n", "\n", "\n", "\n", "148->150\n", "\n", "\n", "\n", "\n", "\n", "152\n", "\n", "thal_6.0 <= 0.5\n", "gini = 0.046\n", "samples = 42\n", "value = [1, 41]\n", "\n", "\n", "\n", "151->152\n", "\n", "\n", "\n", "\n", "\n", "155\n", "\n", "gini = 0.168\n", "samples = 54\n", "value = [5, 49]\n", "\n", "\n", "\n", "151->155\n", "\n", "\n", "\n", "\n", "\n", "153\n", "\n", "gini = 0.056\n", "samples = 35\n", "value = [1, 34]\n", "\n", "\n", "\n", "152->153\n", "\n", "\n", "\n", "\n", "\n", "154\n", "\n", "gini = 0.0\n", "samples = 7\n", "value = [0, 7]\n", "\n", "\n", "\n", "152->154\n", "\n", "\n", "\n", "\n", "\n", "157\n", "\n", "gini = 0.0\n", "samples = 12\n", "value = [0, 12]\n", "\n", "\n", "\n", "156->157\n", "\n", "\n", "\n", "\n", "\n", "158\n", "\n", "thal_6.0 <= 0.5\n", "gini = 0.305\n", "samples = 32\n", "value = [6, 26]\n", "\n", "\n", "\n", "156->158\n", "\n", "\n", "\n", "\n", "\n", "159\n", "\n", "thal_7.0 <= 0.5\n", "gini = 0.32\n", "samples = 30\n", "value = [6, 24]\n", "\n", "\n", "\n", "158->159\n", "\n", "\n", "\n", "\n", "\n", "162\n", "\n", "gini = 0.0\n", "samples = 2\n", "value = [0, 2]\n", "\n", "\n", "\n", "158->162\n", "\n", "\n", "\n", "\n", "\n", "160\n", "\n", "gini = 0.302\n", "samples = 27\n", "value = [5, 22]\n", "\n", "\n", "\n", "159->160\n", "\n", "\n", "\n", "\n", "\n", "161\n", "\n", "gini = 0.444\n", "samples = 3\n", "value = [1, 2]\n", "\n", "\n", "\n", "159->161\n", "\n", "\n", "\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tree.export_graphviz(clf, feature_names=clf.feature_names_in_, rounded=True, out_file='decision.dot')\n", "\n", "graphviz.Source(open('./decision.dot').read())" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "colab": { "provenance": [] }, "kernelspec": { "display_name": "Python 3", "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.8" } }, "nbformat": 4, "nbformat_minor": 0 }