You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
621 lines
66 KiB
621 lines
66 KiB
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 28,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"<class 'pandas.core.frame.DataFrame'>\n",
|
|
"RangeIndex: 274 entries, 0 to 273\n",
|
|
"Data columns (total 7 columns):\n",
|
|
" # Column Non-Null Count Dtype \n",
|
|
"--- ------ -------------- ----- \n",
|
|
" 0 species 274 non-null object \n",
|
|
" 1 island 274 non-null object \n",
|
|
" 2 bill_length_mm 274 non-null float64\n",
|
|
" 3 bill_depth_mm 274 non-null float64\n",
|
|
" 4 flipper_length_mm 274 non-null float64\n",
|
|
" 5 body_mass_g 274 non-null float64\n",
|
|
" 6 year 274 non-null int64 \n",
|
|
"dtypes: float64(4), int64(1), object(2)\n",
|
|
"memory usage: 15.1+ KB\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"import pandas as pd\n",
|
|
"import numpy as np\n",
|
|
"\n",
|
|
"full_penguins = pd.read_csv('penguins_binary_classification.csv')\n",
|
|
"\n",
|
|
"full_penguins.info()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 29,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<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>species</th>\n",
|
|
" <th>island</th>\n",
|
|
" <th>bill_length_mm</th>\n",
|
|
" <th>bill_depth_mm</th>\n",
|
|
" <th>flipper_length_mm</th>\n",
|
|
" <th>body_mass_g</th>\n",
|
|
" <th>year</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>Adelie</td>\n",
|
|
" <td>Torgersen</td>\n",
|
|
" <td>39.1</td>\n",
|
|
" <td>18.7</td>\n",
|
|
" <td>181.0</td>\n",
|
|
" <td>3750.0</td>\n",
|
|
" <td>2007</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>Adelie</td>\n",
|
|
" <td>Torgersen</td>\n",
|
|
" <td>39.5</td>\n",
|
|
" <td>17.4</td>\n",
|
|
" <td>186.0</td>\n",
|
|
" <td>3800.0</td>\n",
|
|
" <td>2007</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>Adelie</td>\n",
|
|
" <td>Torgersen</td>\n",
|
|
" <td>40.3</td>\n",
|
|
" <td>18.0</td>\n",
|
|
" <td>195.0</td>\n",
|
|
" <td>3250.0</td>\n",
|
|
" <td>2007</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>Adelie</td>\n",
|
|
" <td>Torgersen</td>\n",
|
|
" <td>36.7</td>\n",
|
|
" <td>19.3</td>\n",
|
|
" <td>193.0</td>\n",
|
|
" <td>3450.0</td>\n",
|
|
" <td>2007</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>Adelie</td>\n",
|
|
" <td>Torgersen</td>\n",
|
|
" <td>39.3</td>\n",
|
|
" <td>20.6</td>\n",
|
|
" <td>190.0</td>\n",
|
|
" <td>3650.0</td>\n",
|
|
" <td>2007</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" species island bill_length_mm bill_depth_mm flipper_length_mm \\\n",
|
|
"0 Adelie Torgersen 39.1 18.7 181.0 \n",
|
|
"1 Adelie Torgersen 39.5 17.4 186.0 \n",
|
|
"2 Adelie Torgersen 40.3 18.0 195.0 \n",
|
|
"3 Adelie Torgersen 36.7 19.3 193.0 \n",
|
|
"4 Adelie Torgersen 39.3 20.6 190.0 \n",
|
|
"\n",
|
|
" body_mass_g year \n",
|
|
"0 3750.0 2007 \n",
|
|
"1 3800.0 2007 \n",
|
|
"2 3250.0 2007 \n",
|
|
"3 3450.0 2007 \n",
|
|
"4 3650.0 2007 "
|
|
]
|
|
},
|
|
"execution_count": 29,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"full_penguins.head()\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 30,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"<seaborn.axisgrid.FacetGrid at 0x2097b57d8b0>"
|
|
]
|
|
},
|
|
"execution_count": 30,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAkAAAAHpCAYAAABqYYONAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAzmklEQVR4nO3deVxU9eL/8fcAMiyyKCpgiaBYYrmgaBGZmZZ220zLrtcSU7NccrupLdft54LtpZYt19TKyhbLwvTm3pVyV6zEXdIKs1sJAorgfH5/+Gi+TWohgiN+Xs/HYx4P5pwzZz6fwfTVOWdmHMYYIwAAAIv4eHsAAAAA5xoBBAAArEMAAQAA6xBAAADAOgQQAACwDgEEAACsQwABAADrEECVhDFGeXl54mObAAA4ewRQJXH48GGFhYXp8OHD3h4KAACVHgEEAACsQwABAADrEEAAAMA6BBAAALAOAQQAAKxDAAEAAOsQQAAAwDoEEAAAsA4BBAAArEMAAQAA6xBAAADAOgQQAACwDgEEAACs4+ftAeDMhIWFeXsIqGSMMd4eAgCcdzgCBAAArEMAAQAA6xBAAADAOgQQAACwDgEEAACsQwABAADrEEAAAMA6BBAAALAOAQQAAKxDAAEAAOsQQAAAwDoEEAAAsA4BBAAArEMAAQAA6xBAAADAOgQQAACwDgEEAACsQwABAADrEEAAAMA6BBAAALAOAQQAAKxDAAEAAOsQQAAAwDoEEAAAsA4BBAAArEMAAQAA6xBAAADAOgQQAACwDgEEAACsQwABAADrEEAAAMA6BBAAALAOAQQAAKxDAAEAAOsQQAAAwDoEEAAAsA4BBAAArEMAAQAA6xBAAADAOgQQAACwDgEEAACsQwABAADrEEAAAMA6BBAAALAOAQQAAKxDAAEAAOsQQAAAwDoEEAAAsA4BBAAArEMAAQAA6xBAAADAOgQQAACwDgEEAACs47UAcjgcf3obO3ast4YGAAAucH7eeuKcnBz3z3PnztXo0aO1fft297KqVaue0f6Ki4tVpUqVchvfb4wxOn78uPz8vPZSAQCAcua1I0BRUVHuW1hYmBwOh/t+rVq19Mwzz+jiiy+W0+lUs2bNtGjRIvdjs7Oz5XA4NHfuXLVp00YBAQGaM2eOSkpKNGjQIIWHhysiIkIjR45UamqqOnXq5H6sy+VSWlqa4uLiFBgYqKZNm+r99993r1+xYoUcDocWLlyoFi1ayOl0atWqVcrMzFTbtm0VEhKi0NBQtWjRQuvXr3c/btWqVWrdurUCAwNVp04dDRo0SAUFBe71sbGxmjRpknr16qWQkBDFxMTolVdeOe3rU1RUpLy8PI8bAAAoJ+Y8MHPmTBMWFua+/8wzz5jQ0FDz9ttvm23btpkRI0aYKlWqmB07dhhjjNm7d6+RZGJjY80HH3xg9uzZY3744QczYcIEU716dTNv3jyTlZVlHnjgARMaGmpuu+02974nTJhgGjZsaBYtWmR2795tZs6caZxOp1mxYoUxxpjly5cbSaZJkybms88+M7t27TI///yzueyyy8zdd99tsrKyzI4dO8y7775rNm/ebIwxZteuXSY4ONg8++yzZseOHSYjI8MkJiaanj17up+3bt26pnr16uaFF14wO3fuNGlpacbHx8ds27btlK/JmDFjjKSTbrm5ueX86gMAYJ/zMoBq165tJk6c6LFNy5YtTf/+/Y0x/xdAzz33nMc2kZGR5sknn3TfLykpMTExMe4AOnr0qAkKCjJffPGFx+N69+5tunXrZoz5vwD66KOPPLYJCQkxs2bNOuX4e/fubfr27eux7L///a/x8fExR44cMcacCKC7777bvd7lcplatWqZ6dOnn3KfR48eNbm5ue7b/v37CSAAAMrJeXdhS15enn744QelpKR4LE9JSVFmZqbHsqSkJPfPubm5+vHHH9WqVSv3Ml9fX7Vo0UIul0uStGvXLhUWFur666/32M+xY8eUmJh42n1L0rBhw9SnTx+98cYbat++ve68807Vr19fkpSZmaktW7Zozpw57u2NMXK5XNq7d68SEhIkSU2aNHGv/+2U38GDB0/5OjidTjmdzlOuAwAAZ+e8C6AzERwcfEbb5+fnS5IWLFigiy66yGPdH2Pjj/seO3as/vGPf2jBggVauHChxowZo3feeUe333678vPzdf/992vQoEEnPWdMTIz75z9epO1wONxxBgAAzp3zLoBCQ0NVu3ZtZWRkqE2bNu7lGRkZHkd3/igsLEyRkZFat26drrnmGknS8ePHtXHjRjVr1kyS1KhRIzmdTu3bt89j36V1ySWX6JJLLtHQoUPVrVs3zZw5U7fffruaN2+urVu3Kj4+/oz3CQAAzr3zLoAkafjw4RozZozq16+vZs2aaebM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XqtXr1a7du1Uq1YtVatWTdWqVVN4eLiqVatW3mMsE6fTqaioKEVFRalZs2Z6+OGHtX//fv3000/Kzs6Ww+HQ5s2bJf31L+e7775Tt27dVL16dQUHByspKUlr1qxxr58+fbrq168vf39/XXrppXrjjTc8xnLo0CH16dPH/YfxuuuuU2Zm5p+Ov6io6LwMSwCAd+Xk5Khbt27q1auXsrKytGLFCnXu3Nl9+nzp0qXu5W+//bbmzZuncePGuR+flpam119/XS+99JK++eYbDR06VHfffbdWrlwpSfr+++91zTXXyOl0atmyZdqwYYN69eqlkpKSU47nr/Y3atQobd26VQsXLlRWVpamT5+uGjVqVPCr9NfKdAhk+fLl5T2OCpWfn68333xT8fHxioiIUEFBgcf63/9yatSooV27dunIkSPux7Zp00YXXXSRPv74Y0VFRWnjxo3ut/5/+OGHGjx4sJ577jm1b99e6enpuvfee3XxxRerbdu2kqQ777xTgYGBWrhwocLCwvTyyy+rXbt22rFjh6pXr37KMaelpXn8gf3NlqkxCgksU7eiksieEeftIQDWiO2919tDOGM5OTkqKSlR586dVbduXUlS48aN3ev9/f312muvKSgoSJdddpn+3//7fxo+fLjGjx+v4uJiTZo0SUuWLFFycrIkqV69elq1apVefvlltWnTRi+88ILCwsL0zjvvqEqVKpKkSy655JRjKSoq+sv97du3T4mJiUpKSpIkxcbGVtRLc0bKFEBt2rQp73GUu/T0dFWtWlWSVFBQoOjoaKWnp8vH5+R4+LNfzltvvaWffvpJ69atc8dKfHy8e/1TTz2lnj17qn///pKkYcOGafXq1XrqqafUtm1brVq1SmvXrtXBgwfldDrdj/noo4/0/vvvq2/fvqcc/yOPPKJhw4a57+fl5alOnTpn8YoAAC4ETZs2Vbt27dS4cWN16NBBN9xwg+644w73GZimTZsqKCjIvX1ycrLy8/O1f/9+5efnq7CwUNdff73HPo8dO6bExERJ0ubNm9W6dWt3/PyZXbt2/eX++vXrpy5dumjjxo264YYb1KlTJ1111VVn9RqUh7O6CKawsFD79u3zOLcoSU2aNDmrQZWHtm3bavr06ZJOnOJ68cUXdeONN2rt2rUnbftnv5zNmzcrMTHxtEdqsrKyToqYlJQUPf/885KkzMxM5efnKyIiwmObI0eOuM+nnorT6XQHEwAAv/H19dXixYv1xRdf6LPPPtPUqVP12GOPeVyacTr5+fmSpAULFuiiiy7yWPfbvzmBgYGlHktp9nfjjTfq22+/1aeffqrFixerXbt2GjBggJ566qlSP09FKFMA/fTTT7r33nu1cOHCU64/Hz4IMTg42ONIzb///W+FhYXp1VdfVZ8+fTy2/bNfzpn8QTiV/Px8RUdHa8WKFSetuxCuogcAnHsOh0MpKSlKSUnR6NGjVbduXX344YeSTvyP95EjR9z/fq1evVpVq1ZVnTp1VL16dTmdTu3bt++0Z3OaNGmi2bNnq7i4+C+PAjVq1Ogv9ydJNWvWVGpqqlJTU9W6dWsNHz7c6wFUpotJhgwZokOHDmnNmjUKDAzUokWLNHv2bDVo0EAff/xxeY+xXDgcDvn4+Liv7fmj3345b775pp577jm98sorkk78Qdi8ebN++eWXUz4uISFBGRkZHssyMjLUqFEjSVLz5s114MAB+fn5KT4+3uN2PlwEBgCoXNasWaNJkyZp/fr12rdvn+bNm6effvpJCQkJkk6cfurdu7e2bt2qTz/9VGPGjNHAgQPl4+OjkJAQPfTQQxo6dKhmz56t3bt3a+PGjZo6dapmz54tSRo4cKDy8vL097//XevXr9fOnTv1xhtvaPv27SeNpTT7Gz16tObPn69du3bpm2++UXp6unus3lSmI0DLli3T/PnzlZSUJB8fH9WtW1fXX3+9QkNDlZaWpptuuqm8x3nGioqKdODAAUknToFNmzZN+fn5uuWWW07advTo0WrRooUuu+wyFRUVefxyunXrpkmTJqlTp05KS0tTdHS0Nm3apNq1ays5OVnDhw9X165dlZiYqPbt2+uTTz7RvHnztGTJEkkn3jGXnJysTp066YknntAll1yiH374QQsWLNDtt9/uvu4IAIDSCA0N1eeff67nnntOeXl5qlu3rp5++mndeOONmjt3rtq1a6cGDRrommuuUVFRkbp166axY8e6Hz9+/HjVrFlTaWlp2rNnj8LDw9W8eXM9+uijkqSIiAgtW7ZMw4cPV5s2beTr66tmzZopJSXllOP5q/35+/vrkUceUXZ2tgIDA9W6dWu98847Ff46/ZUyfRJ0aGiotmzZotjYWNWtW1dvvfWWUlJStHfvXl122WUqLCysiLGWWs+ePd3lKZ0o1IYNG2rkyJHq0qXLSZ8EPWHCBL311lsev5xnn31WcXEn3o3z7bff6p///KcWL16skpISNWrUSC+88IJatWol6cTb4J966int379fcXFx+te//qV77rnH/fyHDx/WY489pg8++EA//fSToqKidM011ygtLa3UFzb/9knQvAsMAMpPZXwX2J+5UL6m4lwoUwC1bNlSEyZMUIcOHXTrrbcqPDxcaWlpmjJlit5///0/vbgXZUMAAUD5I4DsVaZTYIMHD1ZOTo4kacyYMerYsaPmzJkjf39/zZo1qzzHBwAAUO7KdATojwoLC7Vt2zbFxMRwYW8F4QgQAJS/C+0IEEqvXL4MKygoSM2bNy+PXQEAAFS4UgfQ7z+V+K8888wzZRoMAADAuVDqANq0aVOptnM4HGUeDAAAwLlQ6gCqbF+ACgAAcDrlcjVtXl6ePvroI23btq08dgcAAFChyhRAXbt21bRp0ySd+FLPpKQkde3aVY0bN9YHH3xQrgMEAAAob2UKoM8//1ytW7eWJH344YcyxujQoUOaMmWKJkyYUK4DBACgMnM4HOf0di6MHTtWzZo1K/X22dnZcjgc2rx5syRpxYoVcjgcOnToUIWMrzTKFEC5ubmqXr26JGnRokXq0qWLgoKCdNNNN2nnzp3lOkAAAFDxvvzyS/n6+p6T7/O86qqrlJOTo7CwsAp/rtMpUwDVqVNHX375pQoKCrRo0SLdcMMNkk586WhAQEC5DhAAAFS8GTNm6MEHH9Tnn3+uH374oUKfy9/fX1FRUV5953iZAmjIkCHq3r27Lr74YkVHR+vaa6+VdOLUWOPGjctzfAAAoILl5+dr7ty56tevn2666aaTvtZq8uTJioyMVEhIiHr37q2jR4+etI9///vfSkhIUEBAgBo2bKgXX3zxtM93qlNgq1atUuvWrRUYGKg6depo0KBBKigoKK8pnqRMAdS/f3+tXr1ar732mr744gv5+JzYTb169TRx4sRyHSAAAKhY7777rho2bKhLL71Ud999t1577TX99k1Z7777rsaOHatJkyZp/fr1io6OPilu5syZo9GjR2vixInKysrSpEmTNGrUKM2ePbtUz79792517NhRXbp00ZYtWzR37lytWrVKAwcOLPe5/qbU3wU2bNgwjR8/XsHBwX/5qdB8EnT547vAAKD8nYvvAjvX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",
|
|
"text/plain": [
|
|
"<Figure size 600.5x500 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"full_penguins.species.unique()\n",
|
|
"\n",
|
|
"pallete = {\n",
|
|
" \"Adelie\" :\"black\",\n",
|
|
" \"Gentoo\" : \"orange\"\n",
|
|
"}\n",
|
|
"\n",
|
|
"import seaborn as sns\n",
|
|
"\n",
|
|
"sns.catplot(data=full_penguins, y=\"island\", hue=\"species\", kind=\"count\", palette=pallete)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 35,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"from sklearn.preprocessing import OneHotEncoder\n",
|
|
"\n",
|
|
"categorical_features = [\"island\"]\n",
|
|
"categorical_encoder = OneHotEncoder(sparse_output=False)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 32,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"from sklearn.preprocessing import OrdinalEncoder\n",
|
|
"\n",
|
|
"ordinal_features = [\"bill_length_mm\",\t\"bill_depth_mm\",\t\"flipper_length_mm\",\t\"body_mass_g\",\t\"year\"]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 36,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<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>cat__island_Biscoe</th>\n",
|
|
" <th>cat__island_Dream</th>\n",
|
|
" <th>cat__island_Torgersen</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>1.0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>1.0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>1.0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>1.0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>1.0</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" cat__island_Biscoe cat__island_Dream cat__island_Torgersen\n",
|
|
"0 0.0 0.0 1.0\n",
|
|
"1 0.0 0.0 1.0\n",
|
|
"2 0.0 0.0 1.0\n",
|
|
"3 0.0 0.0 1.0\n",
|
|
"4 0.0 0.0 1.0"
|
|
]
|
|
},
|
|
"execution_count": 36,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"from sklearn.compose import ColumnTransformer\n",
|
|
"ct = ColumnTransformer(transformers=[(\"cat\", categorical_encoder, categorical_features)])\n",
|
|
"\n",
|
|
"ct.set_output(transform=\"pandas\")\n",
|
|
"encoded_features = ct.fit_transform(full_penguins)\n",
|
|
"encoded_features.head()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 44,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<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>bill_length_mm</th>\n",
|
|
" <th>bill_depth_mm</th>\n",
|
|
" <th>flipper_length_mm</th>\n",
|
|
" <th>body_mass_g</th>\n",
|
|
" <th>year</th>\n",
|
|
" <th>cat__island_Biscoe</th>\n",
|
|
" <th>cat__island_Dream</th>\n",
|
|
" <th>cat__island_Torgersen</th>\n",
|
|
" <th>species</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>39.1</td>\n",
|
|
" <td>18.7</td>\n",
|
|
" <td>181.0</td>\n",
|
|
" <td>3750.0</td>\n",
|
|
" <td>2007</td>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>1.0</td>\n",
|
|
" <td>0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>39.5</td>\n",
|
|
" <td>17.4</td>\n",
|
|
" <td>186.0</td>\n",
|
|
" <td>3800.0</td>\n",
|
|
" <td>2007</td>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>1.0</td>\n",
|
|
" <td>0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>40.3</td>\n",
|
|
" <td>18.0</td>\n",
|
|
" <td>195.0</td>\n",
|
|
" <td>3250.0</td>\n",
|
|
" <td>2007</td>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>1.0</td>\n",
|
|
" <td>0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>36.7</td>\n",
|
|
" <td>19.3</td>\n",
|
|
" <td>193.0</td>\n",
|
|
" <td>3450.0</td>\n",
|
|
" <td>2007</td>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>1.0</td>\n",
|
|
" <td>0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>39.3</td>\n",
|
|
" <td>20.6</td>\n",
|
|
" <td>190.0</td>\n",
|
|
" <td>3650.0</td>\n",
|
|
" <td>2007</td>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>0.0</td>\n",
|
|
" <td>1.0</td>\n",
|
|
" <td>0</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" bill_length_mm bill_depth_mm flipper_length_mm body_mass_g year \\\n",
|
|
"0 39.1 18.7 181.0 3750.0 2007 \n",
|
|
"1 39.5 17.4 186.0 3800.0 2007 \n",
|
|
"2 40.3 18.0 195.0 3250.0 2007 \n",
|
|
"3 36.7 19.3 193.0 3450.0 2007 \n",
|
|
"4 39.3 20.6 190.0 3650.0 2007 \n",
|
|
"\n",
|
|
" cat__island_Biscoe cat__island_Dream cat__island_Torgersen species \n",
|
|
"0 0.0 0.0 1.0 0 \n",
|
|
"1 0.0 0.0 1.0 0 \n",
|
|
"2 0.0 0.0 1.0 0 \n",
|
|
"3 0.0 0.0 1.0 0 \n",
|
|
"4 0.0 0.0 1.0 0 "
|
|
]
|
|
},
|
|
"execution_count": 44,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"from sklearn.preprocessing import LabelEncoder\n",
|
|
"\n",
|
|
"label_encoder = LabelEncoder()\n",
|
|
"encoded_label = label_encoder.fit_transform(full_penguins.species)\n",
|
|
"encoded_penguins = encoded_features.assign(species=encoded_label)\n",
|
|
"encoded_penguins.head()\n",
|
|
"\n",
|
|
"full_penguins.head()\n",
|
|
"\n",
|
|
"columns_for_training = [\"bill_length_mm\", \"bill_depth_mm\", \"flipper_length_mm\", \"body_mass_g\", \"year\"]\n",
|
|
"\n",
|
|
"encoded_penguins = pd.concat([full_penguins[columns_for_training],encoded_penguins], axis=1)\n",
|
|
"\n",
|
|
"encoded_penguins.head()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 45,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"['Adelie', 'Gentoo']"
|
|
]
|
|
},
|
|
"execution_count": 45,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"list(label_encoder.inverse_transform([0,1]))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 49,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"0.9017964035172064\n",
|
|
"-0.8326064366975109\n",
|
|
"0.9017964035172064\n",
|
|
"0.8198367781987648\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"print(encoded_penguins.flipper_length_mm.corr(encoded_penguins.species))\n",
|
|
"print(encoded_penguins.bill_depth_mm.corr(encoded_penguins.species))\n",
|
|
"print(encoded_penguins.flipper_length_mm.corr(encoded_penguins.species))\n",
|
|
"print(encoded_penguins.body_mass_g.corr(encoded_penguins.species))\n",
|
|
"\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 57,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"from sklearn.model_selection import train_test_split\n",
|
|
"X = encoded_penguins[encoded_penguins.columns.difference([\"species\"])]\n",
|
|
"\n",
|
|
"y = encoded_penguins.species\n",
|
|
"\n",
|
|
"XTrain, XTest, yTrain, yTest = train_test_split(X, y, test_size=0.2, random_state=0)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 58,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"from sklearn.metrics import f1_score, classification_report\n",
|
|
"from sklearn.linear_model import LogisticRegression\n",
|
|
"\n",
|
|
"model = LogisticRegression()\n",
|
|
"model.fit(XTrain, yTrain)\n",
|
|
"preds = model.predict(XTest)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 59,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
" precision recall f1-score support\n",
|
|
"\n",
|
|
" 0 1.00 1.00 1.00 28\n",
|
|
" 1 1.00 1.00 1.00 27\n",
|
|
"\n",
|
|
" accuracy 1.00 55\n",
|
|
" macro avg 1.00 1.00 1.00 55\n",
|
|
"weighted avg 1.00 1.00 1.00 55\n",
|
|
"\n",
|
|
"Predicted labels: [1 1 1 0 1 1 0 1 0 1 1 1 1 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 1 0 0 0 0 1 0 0 1\n",
|
|
" 0 0 1 0 1 1 0 0 1 1 1 1 0 1 0 0 0 1]\n",
|
|
"F1-score: 1.0\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"print(classification_report(yTest, preds))\n",
|
|
"print(\"Predicted labels: \", preds)\n",
|
|
"print(\"F1-score: \", f1_score(yTest, preds))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 60,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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",
|
|
"text/plain": [
|
|
"<Figure size 600x600 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"from sklearn.metrics import roc_curve, roc_auc_score\n",
|
|
"import matplotlib\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"%matplotlib inline\n",
|
|
"\n",
|
|
"y_scores = model.predict_proba(XTest)\n",
|
|
"fpr, tpr, thresholds = roc_curve(yTest, y_scores[:,1])\n",
|
|
"\n",
|
|
"fig = plt.figure(figsize=(6, 6))\n",
|
|
"plt.plot([0, 1], [0, 1], 'k--')\n",
|
|
"plt.plot(fpr, tpr)\n",
|
|
"plt.xlabel('False Positive Rate')\n",
|
|
"plt.ylabel('True Positive Rate')\n",
|
|
"plt.title('ROC Curve')\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 56,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"1.0\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"auc = roc_auc_score(yTest,y_scores[:,1])\n",
|
|
"print(auc)"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": ".venv",
|
|
"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.12.5"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2
|
|
}
|