Skip to content

Instantly share code, notes, and snippets.

@XinyueZ
Created August 22, 2022 11:34
Show Gist options
  • Save XinyueZ/1dc6dbf6f6978c315a1073700d11bf9d to your computer and use it in GitHub Desktop.
Save XinyueZ/1dc6dbf6f6978c315a1073700d11bf9d to your computer and use it in GitHub Desktop.
notebook.ipynb
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/XinyueZ/1dc6dbf6f6978c315a1073700d11bf9d/notebook.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "3OGDXVVxU-qw"
},
"source": [
"Comparing Decision Trees, Bagging, Random Forest and Neural Networks performance\n",
"==\n",
"\n",
"Build all models with two different dataset for multiclass classification. Machine learning experiments are somewhat randomized, and the purpose of this experiment is to build on 2 datasets consisting mainly of \"category\" features. The experimental results are considered as a reference value.\n",
"\n",
"Model:\n",
"\n",
"- Decision tree (`fit_DT()`) \n",
"- Bagging (`fit_bagging()`) \n",
"- Random Forest (`fit_RF()`) \n",
"- Neural network with 3-hidden layers (`fit_nn()`) \n",
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "f5eexd70VVoz"
},
"source": [
"> Notebook: https://colab.research.google.com/drive/1yA5j8AHcLfy_Vr3pGSlGVwj07fnF5hXW?usp=sharing\n",
">\n",
"> Contact: chris.at.de@gmail.com"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "dRfdYorMVlUU"
},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"\n",
"from sklearn import metrics\n",
"from sklearn import preprocessing\n",
"from sklearn.ensemble import BaggingClassifier\n",
"from sklearn.tree import DecisionTreeClassifier\n",
"from sklearn.model_selection import GridSearchCV\n",
"from sklearn.ensemble import RandomForestClassifier\n",
"from sklearn.model_selection import train_test_split\n",
"\n",
"import tensorflow as tf\n",
"import tensorflow.keras as keras \n",
"\n",
"\n",
"\n",
"np.random.seed(1024)\n",
"tf.random.set_seed(1024)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "qeXgvw_62MtQ"
},
"source": [
"## Metric auxiliary "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "o9Xllml4W5Wd"
},
"outputs": [],
"source": [
"def get_accuracy_nn(X_train, X_test, y_train, y_test, model):\n",
" return pd.Series({\\\n",
" \"test Accuracy\" : round(metrics.accuracy_score(y_test, np.argmax(model.predict(X_test ), axis=1)),3),\\\n",
" \"train Accuracy\": round(metrics.accuracy_score(y_train, np.argmax(model.predict(X_train), axis=1)),3)}, name=\"NN\")\n",
"\n",
"def get_accuracy(X_train, X_test, y_train, y_test, model, name):\n",
" return pd.Series({\\\n",
" \"test Accuracy\":round(metrics.accuracy_score(y_test, model.predict(X_test)),3),\\\n",
" \"train Accuracy\": round(metrics.accuracy_score(y_train, model.predict(X_train)),3)}, name=name)\n",
" \n",
"def print_plot_result(*res):\n",
" res_df = pd.concat(list(res), axis=1)\n",
" display(res_df)\n",
" res_df.plot.bar()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "UaxUAyJJy3pO"
},
"source": [
"## Models"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "db-Q0lr1y6RT"
},
"source": [
"### DT\n",
"\n",
"Decision trees split your data using impurity(不纯物) measures. They are a greedy algorithm and are not based on statistical assumptions. The most common splitting impurity measures are Entropy and Gini index. Decision trees tend to overfit and to be very sensitive to different data(bad on new data).\n",
"Cross validation and pruning sometimes help with some of this.\n",
"\n",
"Great advantages of decision trees are that they are really:\n",
"- Easy to interpret \n",
"- require NO data preprocessing"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "RoSVeyPzzGNb"
},
"outputs": [],
"source": [
"def fit_DT(X_train, X_test, y_train, y_test):\n",
" tree_classifier = DecisionTreeClassifier().fit(X_train, y_train) \n",
"\n",
" param_grid = {'criterion' : [\"entropy\", \"gini\"],\n",
" 'max_depth':range(1, tree_classifier.tree_.max_depth+1, 2),\n",
" 'max_features': range(1, len(tree_classifier.feature_importances_)+1)}\n",
"\n",
" search = GridSearchCV(DecisionTreeClassifier(random_state=42),\n",
" param_grid=param_grid,\n",
" scoring='accuracy',\n",
" n_jobs=-1)\n",
" search.fit(X_train, y_train)\n",
" return get_accuracy(X_train, X_test, y_train, y_test, search.best_estimator_, \"DT\"), tree_classifier"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "EqsirX6ky8l9"
},
"source": [
"### Bagging\n",
"\n",
" \n",
"A model that **averages the predictions of multiple models** (ie. decision tree) reduces the variance of a single model and has high chances to generalize well when scoring new data. Bagging is a tree ensemble that combines the prediction of several trees that were trained on bootstrap samples of the data.\n",
"\n",
"Bagging, which combines decision trees by using bootstrap aggregated samples.\n",
"\n",
"We could perform a bootstrap sample using the function `resample`; we see the dataset is the same size, but some rows are repeated\n",
"\n",
"```\n",
"from sklearn.utils import resample\n",
" \n",
"df # some dataframe\n",
"\n",
"for n in range(5):\n",
" sample = resample(df[0:5])\n",
" print(sample)\n",
" print(\"len \", len(sample))\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "4FH3gKnyzJhk"
},
"outputs": [],
"source": [
"def fit_bagging(base_tree, X_train, X_test, y_train, y_test):\n",
" param_grid = {'n_estimators': [2*n+1 for n in range(20)]}\n",
" bagging= BaggingClassifier(base_estimator=base_tree,random_state=0,bootstrap=True)\n",
" search = GridSearchCV(estimator=bagging, param_grid=param_grid, scoring=\"accuracy\", cv=3)\n",
" search.fit(X_train, y_train)\n",
" return get_accuracy(X_train, X_test, y_train, y_test, search.best_estimator_, name=\"Bagging\")"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "aGjips_Zy_4R"
},
"source": [
"### RF\n",
"\n",
"is essentially the bagging. So bootstrapping and aggregating with not only the subset of the rows being random, but also the subset of the features or columns also being random. (In general, a random forest can be considered a special case of bagging and it tends to have better out of sample accuracy.)\n",
"\n",
"Random forests are **a combination of trees** such that **each tree depends on a random subset of the features and data**. As a result, each tree in the forest is different and usually performs better than Bagging. The most important parameters are **the number of trees** and **the number of features** to sample. First, we import RandomForestClassifier.\n",
"Like Bagging, increasing the number of trees improves results and does not lead to overfitting in most cases; but the improvements plateau as you add more trees. For this exxample, the number of trees in the forest (default=100).\n",
"\n",
"\n",
"Like Bagging, RF uses an independent bootstrap sample from the training data. In addition, we select 𝑚 variables at random out of all 𝑀 possible variables. Let's do an example.\n",
"\n",
"We now randomly select features from the bootstrap samples, in randomly selecting a subset of the features for each node to split on.\n",
"```\n",
"import random\n",
"\n",
"X=df # some dataframe\n",
"M=X.shape[1]\n",
"feature_index= range(M)\n",
"\n",
"random.sample(feature_index, m)\n",
"\n",
"for n in range(5):\n",
" print(\"sample {}\".format(n))\n",
" print(resample(X[0:5]).iloc[:,random.sample(feature_index,m)])\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "a4YU4xnZzNDz"
},
"outputs": [],
"source": [
"def fit_RF(X_train, X_test, y_train, y_test):\n",
" param_grid = {'n_estimators': [2*n+1 for n in range(20)],\n",
" 'max_depth' : [2*n+1 for n in range(10) ],\n",
" 'max_features':[\"auto\", \"sqrt\", \"log2\"]}\n",
" RF = RandomForestClassifier()\n",
" search = GridSearchCV(estimator=RF, param_grid=param_grid, scoring=\"accuracy\", cv=3)\n",
" search.fit(X_train, y_train)\n",
" \n",
" return get_accuracy(X_train, X_test, y_train, y_test, search.best_estimator_, name=\"RF\")"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "tWId8qRszCmT"
},
"source": [
"### NN"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "RVyJF6aHzTqk"
},
"outputs": [],
"source": [
"def fit_nn(X_train_, X_test_, y_train_, y_test_):\n",
" input_shape = X_train_.shape\n",
"\n",
" n = input_shape[1]\n",
" n_classes = len(y.unique())\n",
"\n",
" inputs = keras.Input(shape=[n])\n",
" x = keras.layers.Dense(units=n**2, activation=keras.activations.relu)(inputs)\n",
" x = keras.layers.Dense(units=n**2**2, activation=keras.activations.relu)(x)\n",
" x = keras.layers.Dense(units=n**2, activation=keras.activations.relu)(x)\n",
" outputs = keras.layers.Dense(units=n_classes, activation=keras.activations.softmax)(x)\n",
"\n",
" model = keras.models.Model(inputs=[inputs], outputs=[outputs])\n",
"\n",
" model.compile(optimizer=\"adam\", loss=\"sparse_categorical_crossentropy\", metrics=[\"accuracy\"])\n",
"\n",
" model.fit(epochs=50, x=X_train_, y=y_train_, shuffle=True, batch_size=8, verbose=0)\n",
"\n",
" return get_accuracy_nn(X_train_, X_test_, y_train_, y_test_, model)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Ydl-2oueVQPN"
},
"source": [
"# Dataset 1\n",
"\n",
"Drug200.csv\n",
"\n",
"A course of treatment, each patient responded to one of 5 medications: \n",
"\n",
"Drug A, Drug B, Drug c, Drug x and y.\n",
"\n",
"Build a model to find out which drug might be appropriate for a future patient with the same illness.\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 206
},
"id": "DotZSnAoU62-",
"outputId": "e157ae28-025d-4976-a8db-fdbd5110a97a"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" <div id=\"df-c87c2bcc-f346-43c6-b011-78cdf53aaddc\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Age</th>\n",
" <th>Sex</th>\n",
" <th>BP</th>\n",
" <th>Cholesterol</th>\n",
" <th>Na_to_K</th>\n",
" <th>Drug</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>23</td>\n",
" <td>F</td>\n",
" <td>HIGH</td>\n",
" <td>HIGH</td>\n",
" <td>25.355</td>\n",
" <td>drugY</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>47</td>\n",
" <td>M</td>\n",
" <td>LOW</td>\n",
" <td>HIGH</td>\n",
" <td>13.093</td>\n",
" <td>drugC</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>47</td>\n",
" <td>M</td>\n",
" <td>LOW</td>\n",
" <td>HIGH</td>\n",
" <td>10.114</td>\n",
" <td>drugC</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>28</td>\n",
" <td>F</td>\n",
" <td>NORMAL</td>\n",
" <td>HIGH</td>\n",
" <td>7.798</td>\n",
" <td>drugX</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>61</td>\n",
" <td>F</td>\n",
" <td>LOW</td>\n",
" <td>HIGH</td>\n",
" <td>18.043</td>\n",
" <td>drugY</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-c87c2bcc-f346-43c6-b011-78cdf53aaddc')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-c87c2bcc-f346-43c6-b011-78cdf53aaddc button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-c87c2bcc-f346-43c6-b011-78cdf53aaddc');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
],
"text/plain": [
" Age Sex BP Cholesterol Na_to_K Drug\n",
"0 23 F HIGH HIGH 25.355 drugY\n",
"1 47 M LOW HIGH 13.093 drugC\n",
"2 47 M LOW HIGH 10.114 drugC\n",
"3 28 F NORMAL HIGH 7.798 drugX\n",
"4 61 F LOW HIGH 18.043 drugY"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv(\"https://dl.dropbox.com/s/hglnf8sdlhcyinm/drug200.csv\", delimiter=\",\")\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "3_rV6v6qVym7",
"outputId": "161fa0cb-1b5a-492b-d89a-5d1984256088"
},
"outputs": [
{
"data": {
"text/plain": [
"(array([[23, 'F', 'HIGH', 'HIGH', 25.355],\n",
" [47, 'M', 'LOW', 'HIGH', 13.093],\n",
" [47, 'M', 'LOW', 'HIGH', 10.114],\n",
" [28, 'F', 'NORMAL', 'HIGH', 7.798]], dtype=object), 0 drugY\n",
" 1 drugC\n",
" 2 drugC\n",
" 3 drugX\n",
" Name: Drug, dtype: object)"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X = df[['Age', 'Sex', 'BP', 'Cholesterol', 'Na_to_K']].values\n",
"y = df[\"Drug\"]\n",
"X[:4], y[:4]"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "wrhyV99wWQ5p"
},
"source": [
"## Preprocessing and train, test split"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "uPpi0d9HV26a",
"outputId": "a0cfb5ab-a60c-4d55-dbde-39c47d989e49"
},
"outputs": [
{
"data": {
"text/plain": [
"array([[23, 0, 0, 0, 25.355],\n",
" [47, 1, 1, 0, 13.093],\n",
" [47, 1, 1, 0, 10.114],\n",
" [28, 0, 2, 0, 7.798]], dtype=object)"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"le_sex = preprocessing.LabelEncoder()\n",
"le_sex.fit(['F','M'])\n",
"X[:,1] = le_sex.transform(X[:,1]) \n",
"\n",
"\n",
"le_BP = preprocessing.LabelEncoder()\n",
"le_BP.fit([ 'LOW', 'NORMAL', 'HIGH'])\n",
"X[:,2] = le_BP.transform(X[:,2])\n",
"\n",
"\n",
"le_Chol = preprocessing.LabelEncoder()\n",
"le_Chol.fit([ 'NORMAL', 'HIGH'])\n",
"X[:,3] = le_Chol.transform(X[:,3]) \n",
"\n",
"X[0:4]"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "a9dP6WABX-kb"
},
"source": [
"### Dataset for RF"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "Kfos2vlvWebO",
"outputId": "9ae9d114-c2f8-4f35-c6dc-635ecc9250ea"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train set: (160, 5) (160,)\n",
"Test set: (40, 5) (40,)\n"
]
}
],
"source": [
"X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.2, random_state=4)\n",
"print ('Train set:', X_train.shape, y_train.shape)\n",
"print ('Test set:', X_test.shape, y_test.shape)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "8fT0-RmYYCTY"
},
"source": [
"### Dataset for NN"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "5uk46vkhX8Uc"
},
"outputs": [],
"source": [
"transformer = preprocessing.StandardScaler()\n",
"X_train_ = transformer.fit_transform(X_train)\n",
"X_test_ = transformer.transform(X_test)\n",
"y_train_ = preprocessing.LabelEncoder().fit(y.unique().tolist()).transform(y_train) \n",
"y_test_ = preprocessing.LabelEncoder().fit(y.unique().tolist()).transform(y_test)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "gDbb6XuItr5O"
},
"source": [
"## Fit DT"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "bNw07FQ_tyEO"
},
"outputs": [],
"source": [
"DT_1, tree_1 = fit_DT(X_train, X_test, y_train, y_test)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "X0U_LJtHsUze"
},
"source": [
"## Fit Bagging"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "ydmRn8PFszhU"
},
"outputs": [],
"source": [
"Bagging_1 = fit_bagging(tree_1, X_train, X_test, y_train, y_test)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "TSk1UTGKWtVV"
},
"source": [
"## Fit RF"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "Ii2deqsuWvU_"
},
"outputs": [],
"source": [
"RF_1 = fit_RF(X_train, X_test, y_train, y_test)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "C0x600POX1lI"
},
"source": [
"## Fit NN"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "L-mYaDrjYYd7"
},
"outputs": [],
"source": [
"NN_1 = fit_nn(X_train_, X_test_, y_train_, y_test_)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "o-2-DBz1ZEXr"
},
"source": [
"## Result\n",
"\n",
"In this experiment (test set), the best performing \"tree\" algorithm is Bagging, at a level similar to NN."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 423
},
"id": "THE32m-wZFoe",
"outputId": "19ee55d8-c11b-4ae3-9897-ddefdbbfa3df"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" <div id=\"df-ad1a0553-293f-446e-8da3-5f2db746d531\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>DT</th>\n",
" <th>Bagging</th>\n",
" <th>RF</th>\n",
" <th>NN</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>test Accuracy</th>\n",
" <td>0.825</td>\n",
" <td>0.95</td>\n",
" <td>0.925</td>\n",
" <td>0.95</td>\n",
" </tr>\n",
" <tr>\n",
" <th>train Accuracy</th>\n",
" <td>0.931</td>\n",
" <td>1.00</td>\n",
" <td>1.000</td>\n",
" <td>1.00</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-ad1a0553-293f-446e-8da3-5f2db746d531')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-ad1a0553-293f-446e-8da3-5f2db746d531 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-ad1a0553-293f-446e-8da3-5f2db746d531');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
],
"text/plain": [
" DT Bagging RF NN\n",
"test Accuracy 0.825 0.95 0.925 0.95\n",
"train Accuracy 0.931 1.00 1.000 1.00"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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tbWV7373uxx22GFs3LiRU089lRkzZrBy5Uq+/e1v86tf/Yrt27czZcoUTj75ZAAuueQSvvCFLzB16lSuvvrqvX7m6tWrWb58OVu2bGHChAl88IMf5P7779/reaVa9dlDj4gWYAFwNnA8MDMiju/R7JdAR2ZOBv4J+Pt6Fyr1h64hl9WrV/ODH/yAiy66iMwkM/nYxz7G5MmTOfPMM1m3bh1PPfUU99xzD+effz6tra0MGzaM8847D4Bnn32WLVu2MHXqVABmzZq1188855xzGDp0KG1tbYwePXqf55X2Ry099FOANZm5FiAiFgPnAw93NcjM5d3a/xz4y3oWKQ2EqVOnsnHjRjZs2MDSpUvZsGEDq1atYsiQIYwbN45t27bV5XOGDh26631LSws7duyoy3mlWsbQjwSe6LbdWd23N+8D/verKUoqwurVq9m5cycjR45k8+bNjB49miFDhrB8+XIef7wygnjaaadxxx13sG3bNrZu3cr3v/99AEaMGMGwYcP4xS9+AcDixYv367P3dl5pf9R1lktE/CXQAZy+l+NzgDkAY8eOredHS69I1xg6QGZy66230tLSwnve8x7OO+88Jk2aREdHB8cddxwAb37zm5kxYwaTJ0/miCOOYNKkSQwfXpmds2jRIi699FIOOOAATj/99F37a7Gv80q1qiXQ1wFHddseU923m4g4E/g4cHpmvtjbiTJzIbAQoKOjw6fwanc1TDOst70tn9vW1sa9997b67GPfOQjzJ07lxdeeIG3ve1tuy5ennDCCTzwwAMA3HDDDbumKk6bNo1p06YBlVku3f3617/u87xSrWoJ9BXAsRExnkqQXwjsdsUnIk4CPg9Mz0yfrqtSmzNnDg8//DDbtm3j4osvZsqUKQDceeedfOpTn2LHjh0cffTRfOUrX6nLeaVa9RnombkjIi4HllGZtvilzHwoIq4HVmbmEuAzwKHAt6qP7vq3zJzRj3VLhfnGN77R6/4LLriACy64oO7nlWpV0xh6Zi4FlvbYd22392fWuS5J0n7yTlFJKgkDXZJKwkCXpJJwtUU1tZaWFiZNmsSOHTsYP348X/va1xgxYgSPPfYYEydOZMKECbva3nfffRx00EEFVivtm4GuQWPSrZPqer4HL36wzzbdl8+9+OKLWbBgAR//+McBeMMb3rDrmNQIHHKRqqZOncq6dXvcMyc1DANdonLH6F133cWMGS/fPvHb3/6W9vZ22tvbueyyywqsTqqNQy5qal1ruaxbt46JEydy1lln7TrmkIsajT10NbWuMfTHH3+czGTBggVFlyS9Yga6BBxyyCHMnz+fefPmuT65GpaBLlWddNJJTJ48mdtuu63oUqRXxDF0DRq1TDOst61bt+62fccdd+x6331pW6kR2EOXpJIw0CWpJAx0SSoJA12SSsJAl6SSMNAlqSQMdDW1iOCqq67atX3jjTcyd+5cAObOncshhxzC+vUvP/f80EMPHegSpZo5D12DxiPHTazr+SaufqTPNkOHDuU73/kO11xzDW1tbXscb2trY968eXz605+ua21Sf7CHrqZ24IEHMmfOHG6++eZej8+ePZtvfvObPP300wNcmbT/DHQ1vcsuu4yvf/3rbN68eY9jhx56KLNnz+aWW24poDJp/xjoanqHHXYYF110EfPnz+/1+BVXXMGtt97Kli1bBrgyaf8Y6BLw4Q9/mEWLFvH888/vcWzEiBHMmjXLpXU16BnoEvDa176Wd7/73SxatKjX41deeSWf//znXVpXg5qBLlVdddVVbNy4sddjbW1tvPOd7+TFF18c4Kqk2jltUYNGLdMM66378rlHHHEEL7zwwq7trvnoXW666SZuuummgSpN2m/20CWpJAx0SSoJA12SSsJAV6Eys+gSGoZ/VuqLga7CtLa2smnTJoOqBpnJpk2baG1tLboUDWLOclFhxowZQ2dnJxs2bCi6lIbQ2trKmDFjii5Dg1hNgR4R04FbgBbgi5l5Q4/jQ4GvAicDm4ALMvOx+paqshkyZAjjx48vugypNPoccomIFmABcDZwPDAzIo7v0ex9wDOZ+e+AmwHXGpWkAVbLGPopwJrMXJuZLwGLgfN7tDkfuLX6/p+AMyIi6lemJKkvtQT6kcAT3bY7q/t6bZOZO4DNwMh6FChJqs2AXhSNiDnAnOrm1oh4dCA/f7Donx9dft0G9L4QySvUc1ytLvzBbVDzu9kQjt7bgVoCfR1wVLftMdV9vbXpjIgDgeFULo7uJjMXAgtr+Eztp4hYmZkdRdch9eR3c+DUMuSyAjg2IsZHxEHAhcCSHm2WABdX3/85cHc6uViSBlSfPfTM3BERlwPLqExb/FJmPhQR1wMrM3MJsAj4WkSsAZ6mEvqSpAEUdqTLISLmVIe0pEHF7+bAMdAlqSRcy0WSSsJAl6SSMNAbVETMi4gTiq5D6ikiVkXEZRFxeNG1NBsDvXE9AiyMiF9ExAciYnjRBUlVFwCvB1ZExOKIeLtLgQwML4o2uIiYAFwCzATuAb6QmcuLrUqCiDgAOBf4R2An8GXglsx8utDCSsweegOrroR5XPW1EfgVcGVELC60MDW9iJgMzAM+A3wb+AvgOeDuIusqO3voDSoibqbS+7kbWJSZ93U79mhmTiisODW1iFgFPEvlhsNvZ+aL3Y59JzP/c2HFlZyB3qAi4hLg9sx8vpdjwzNzcwFlSUTEMZm5tug6mpFDLo3rWbot3RARIyLiPwEY5irY+yNiRNdGRBweEZ8ssqBmYQ+9QUXE/ZnZ3mPfLzPzpKJqkqD372FE/GtmTimqpmZhD71x9fZ350O/NRi0VJ8zDEBEHAwM3Ud71YkB0LhWRsRNVJ73CnAZsKrAeqQuXwfuiogvV7cv4eVHVKofOeTSoCLiNcD/AM6s7voR8MneLpJKAy0izgbOqG7+KDOXFVlPszDQJakkHHJpUBExCvhvwAlAa9f+zPyzwoqSgIg4FfgsMBE4iMqDcZ7PzMMKLawJeFG0cX0dWA2MB64DHqPyuECpaJ+jshTFb4CDgffz8rUe9SMDvXGNzMxFwPbM/ElmzgbsnWtQyMw1QEtm7szMLwPTi66pGTjk0ri2V399MiLOAX4PvLbAeqQuL1QfKH9/RPw98CR2HgeEF0UbVEScC/wf4Cgq45WHAddVH9otFSYijgaeojJ+/jfAcOAfqr129SMDvQFVV1m8IjNvLroWqbvqd/OrmfmeomtpRv4Y1IAycyeVi07SoFL9bh5dHXLRALOH3qCqy+cOAb4J7LqZKDP/tbCiJCAivkplyuISdv9u3lRYUU3Ci6KNq2thruu77Uuc6aLi/bb6OgAYVnAtTcUeuiSVhD30BhUR1/a2PzOv722/NFAiYjmVnxZ3413M/c9Ab1zdF+FqpfI4ukcKqkXq7iPd3rcC7wJ2FFRLU3HIpSSq608vy8xpRdci9RQR92XmKUXXUXb20MvjEGBM0UVIEdH9juUDgJOp3FykfmagN6iIeJCXxylbgFHsPuNFKsoqKt/NoDLU8jvgfYVW1CQccmlQ1duru+wAnspMxymlJuadoo3rdcDTmfl4Zq4DDo6ItxRdlBQRl0XEiG7bh0fEXxVZU7Owh96gIuKXwJSs/gVGxAHASp+srqJFxP2Z2d5j3y8z86SiamoW9tAbV2S3/40z8494TUSDQ0tERNdGdcEu13YZAAZ641obEVdExJDq60PA2qKLkoAfAN+MiDMi4gzgtuo+9TOHXBpURIwG5lNZuyWBu4APZ+b6QgtT06sO/80Bzqzu+hHwxepKjOpHBrqkuoqI1wDbugK8OuQyNDNfKLay8nPIpUFFxK29zCT4UpE1SVV3UXk4dJeDgX8pqJamYqA3rsmZ+WzXRmY+AziLQINBa2Zu7dqovj+kwHqahoHeuA6IiMO7Nqq3WzvLRYPB8xGxa/psRJwM/KHAepqGAdC45gH3RsS3qNxi/efA/yy2JAmADwPfiojfU/lu/glwQbElNQcvijawiDiel59QdHdmPlxkPVKXiBgCTKhuPgq8NjOfKrCkpmCgl0BEvAGYBVyYmScUXY8EUL1o/y4q382Jmfn6gksqPcfQG1REvD4i/iYiVgAPUfm7vLDgstTkIuLgiLgwIpYAD1IZGvwELu08IOyhN5iImAPMBI4Ebq++vpeZ4wstTE0vIr4B/CnwQ2AxcDewxu/mwPGiaOP5HHAvMCszVwJEhP8razA4HniGyqMQH8nMnX43B5aB3nheB/wFMC8i/oRKD31IsSVJkJntEXEclZ8g/yUiNgLDIuIIL4gODIdcGlhEjKEyHWwm8Brgu5n5sWKrkiqq889nAu8GOjPz3xdcUukZ6CUREW+kMsvFx9BpUKkupfunmfnTomspOwNdkkrCaYuSVBIGuiSVhLNcGlRE3JWZZ/S1TxpoETGUyh2i4+iWMV7f6X8GeoOJiFYqS5G2VVdb7Hp242FUbjaSivY9YDOwCnix4FqaioHeeP4rldXsXk/lH0xXoD9H5aYjqWhjMnN60UU0I2e5NKiI+OvM/GzRdUg9RcRC4LOZ+WDRtTQbL4o2rv8XEcMAIuJvI+I73R8qIBXorcCqiHg0Ih6IiAcj4oGii2oG9tAbVEQ8kJmTI+KtwCeBzwDXZuZbCi5NTS4iju5tf2Y+PtC1NBt76I1rZ/XXc4CFmXkncFCB9ajJRcRh1bdb9vJSP7OH3qAi4vvAOuAsYAqVZzbel5knFlqYmlZEfD8zz42I3wHJyxfsATIzjymotKZhoDeoiDgEmA48mJm/iYjXAZMy84cFlyapIE5bbFCZ+UJErKdyAeo3wI7qr1LhqvdIHAu0du1zca7+Zw+9QUXE3wEdwITMfGNEvB74VmaeVnBpanIR8X7gQ1QeO3c/cCpwb2b+2T5/o141L4o2rncCM4DnATLz98CwQiuSKj4EvBl4PDP/A3AS8GyxJTUHA71xvZSVH68SICJeU3A9UpdtmbkNKuu6ZOZqYELBNTUFx9Ab1+0R8XlgRERcCswGvlhwTRJAZ0SMAP4Z+FFEPAM4B30AOIbewCLiLOA/Upketiwzf1RwSdJuIuJ0YDjwg8x8qeh6ys5Ab1AR8enM/O997ZMGUkS0AA9l5nFF19KMHENvXGf1su/sAa9C6iYzdwKPRsTYomtpRo6hN5iI+CDwV8AxPRY8GgbcU0xV0m4OBx6KiPuozsICyMwZxZXUHBxyaTARMZzKP5hPAVd3O7QlM58upirpZdVx8z1k5k8GupZmY6BLqiuv7xTHMXRJ9eb1nYI4hi6pLry+UzyHXCTVhdd3imegS1JJOIYuSSVhoEtSSRjoklQSBroklYSBLkkl8f8BrL00w98uqZcAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"print_plot_result(DT_1, Bagging_1, RF_1, NN_1)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "fjfcriC3aLY2"
},
"source": [
"# Dataset 2\n",
"\n",
"From the UCI Machine Learning Repository (Asuncion and Newman, 2007)\\[[http://mlearn.ics.uci.edu/MLRepository.html](http://mlearn.ics.uci.edu/MLRepository.html?utm_medium=Exinfluencer&utm_source=Exinfluencer&utm_content=000026UJ&utm_term=10006555&utm_id=NA-SkillsNetwork-Channel-SkillsNetworkCoursesIBMML241ENSkillsNetwork31576874-2022-01-01)]. \n",
"\n",
"The dataset consists of hundred human cell sample records, each of which contains the values of a set of cell characteristics. \n",
"\n",
"| Field name | Description |\n",
"| ----------- | --------------------------- |\n",
"| ID | Clump thickness |\n",
"| Clump | Clump thickness |\n",
"| UnifSize | Uniformity of cell size |\n",
"| UnifShape | Uniformity of cell shape |\n",
"| MargAdh | Marginal adhesion |\n",
"| SingEpiSize | Single epithelial cell size |\n",
"| BareNuc | Bare nuclei |\n",
"| BlandChrom | Bland chromatin |\n",
"| NormNucl | Normal nucleoli |\n",
"| Mit | Mitoses |\n",
"| Class | Benign or malignant |\n",
"\n",
"<br>\n",
"<br> "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 206
},
"id": "deOYAZ4lakNi",
"outputId": "b1ae070d-60c7-49ed-bcd6-804c545cadb5"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" <div id=\"df-f512fbec-adb2-4c78-ae09-94d37b357599\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>ID</th>\n",
" <th>Clump</th>\n",
" <th>UnifSize</th>\n",
" <th>UnifShape</th>\n",
" <th>MargAdh</th>\n",
" <th>SingEpiSize</th>\n",
" <th>BareNuc</th>\n",
" <th>BlandChrom</th>\n",
" <th>NormNucl</th>\n",
" <th>Mit</th>\n",
" <th>Class</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1000025</td>\n",
" <td>5</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1002945</td>\n",
" <td>5</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>5</td>\n",
" <td>7</td>\n",
" <td>10</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1015425</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1016277</td>\n",
" <td>6</td>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>4</td>\n",
" <td>3</td>\n",
" <td>7</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1017023</td>\n",
" <td>4</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-f512fbec-adb2-4c78-ae09-94d37b357599')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-f512fbec-adb2-4c78-ae09-94d37b357599 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-f512fbec-adb2-4c78-ae09-94d37b357599');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
],
"text/plain": [
" ID Clump UnifSize UnifShape MargAdh SingEpiSize BareNuc \\\n",
"0 1000025 5 1 1 1 2 1 \n",
"1 1002945 5 4 4 5 7 10 \n",
"2 1015425 3 1 1 1 2 2 \n",
"3 1016277 6 8 8 1 3 4 \n",
"4 1017023 4 1 1 3 2 1 \n",
"\n",
" BlandChrom NormNucl Mit Class \n",
"0 3 1 1 2 \n",
"1 3 2 1 2 \n",
"2 3 1 1 2 \n",
"3 3 7 1 2 \n",
"4 3 1 1 2 "
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv(\"https://dl.dropbox.com/s/s4j1wkgz9xl7f7h/cell_samples.csv\")\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "mpis21VYaxkm"
},
"outputs": [],
"source": [
"df = df[pd.to_numeric(df['BareNuc'], errors='coerce').notnull()] #remove rows that have a ? in the BareNuc column\n",
"\n",
"X = df[['Clump', 'UnifSize', 'UnifShape', 'MargAdh', 'SingEpiSize', 'BareNuc', 'BlandChrom', 'NormNucl', 'Mit']]\n",
"y = df['Class']"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "7E8v8_Fxa7Oj"
},
"source": [
"## Preprocessing and train, test split"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "BtgHQzshbAnT"
},
"source": [
"### Dataset for RF"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "W0EOzoGUbCTy",
"outputId": "4691ed2c-1f22-4103-96d0-f621ac4d4bfc"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train set: (546, 9) (546,)\n",
"Test set: (137, 9) (137,)\n"
]
}
],
"source": [
"X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.2, random_state=4)\n",
"print ('Train set:', X_train.shape, y_train.shape)\n",
"print ('Test set:', X_test.shape, y_test.shape)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Nzp2jajXbEMP"
},
"source": [
"### Dataset for NN\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "1q6IlwhLbRPy"
},
"outputs": [],
"source": [
"transformer = preprocessing.StandardScaler()\n",
"X_train_ = transformer.fit_transform(X_train)\n",
"X_test_ = transformer.transform(X_test)\n",
"y_train_ = preprocessing.LabelEncoder().fit(y.unique().tolist()).transform(y_train) \n",
"y_test_ = preprocessing.LabelEncoder().fit(y.unique().tolist()).transform(y_test)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Zx8gWBaSuWM8"
},
"source": [
"## Fit DT"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "odONkVlxuZ1O"
},
"outputs": [],
"source": [
"DT_2, tree_2 = fit_DT(X_train, X_test, y_train, y_test)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "tQjTBa-YuWBT"
},
"source": [
"## Fit Bagging"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "4Mxtp2l0wEI3"
},
"outputs": [],
"source": [
"Bagging_2=fit_bagging(tree_2, X_train, X_test, y_train, y_test)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "YAgt3mxJbcMy"
},
"source": [
"## Fit RF"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "m34ldpWFbhnP"
},
"outputs": [],
"source": [
"RF_2 = fit_RF(X_train, X_test, y_train, y_test)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "811JyJUTbdd1"
},
"source": [
"## Fit NN"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "Vq2cfoS5bktL"
},
"outputs": [],
"source": [
"NN_2 = fit_nn(X_train_, X_test_, y_train_, y_test_)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "lEw5vhaIcEZ3"
},
"source": [
"## Result\n",
"\n",
"In this experiment (test set), the best performing \"tree\" algorithm is normal decision tree. It performs even better than RF and NN. \n",
"\n",
"Both RF and NN are at a level which is similar."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 423
},
"id": "W1U0gCpdcHOv",
"outputId": "4ed65e83-2678-4b5a-aaad-3f9f26bd20fb"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" <div id=\"df-6bda29f7-6497-454d-89a8-0601dea89e27\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>DT</th>\n",
" <th>Bagging</th>\n",
" <th>RF</th>\n",
" <th>NN</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>test Accuracy</th>\n",
" <td>0.978</td>\n",
" <td>0.956</td>\n",
" <td>0.971</td>\n",
" <td>0.971</td>\n",
" </tr>\n",
" <tr>\n",
" <th>train Accuracy</th>\n",
" <td>0.985</td>\n",
" <td>0.993</td>\n",
" <td>0.984</td>\n",
" <td>1.000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-6bda29f7-6497-454d-89a8-0601dea89e27')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-6bda29f7-6497-454d-89a8-0601dea89e27 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-6bda29f7-6497-454d-89a8-0601dea89e27');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
],
"text/plain": [
" DT Bagging RF NN\n",
"test Accuracy 0.978 0.956 0.971 0.971\n",
"train Accuracy 0.985 0.993 0.984 1.000"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"print_plot_result(DT_2, Bagging_2, RF_2, NN_2)"
]
}
],
"metadata": {
"accelerator": "TPU",
"colab": {
"collapsed_sections": [],
"machine_shape": "hm",
"name": "notebook.ipynb",
"provenance": [],
"include_colab_link": true
},
"gpuClass": "standard",
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.13"
},
"vp": {
"vp_config_version": "1.0.0",
"vp_menu_width": 273,
"vp_note_display": false,
"vp_note_width": 0,
"vp_position": {
"width": 278
},
"vp_section_display": false,
"vp_signature": "VisualPython"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment