diff --git a/2-Regression/4-Logistic/solution/notebook.ipynb b/2-Regression/4-Logistic/solution/notebook.ipynb
index be24dd5a..ce69d7dc 100644
--- a/2-Regression/4-Logistic/solution/notebook.ipynb
+++ b/2-Regression/4-Logistic/solution/notebook.ipynb
@@ -6,7 +6,7 @@
"source": [
"## Logistic Regression - Lesson 4\n",
"\n",
- "Load up required libraries and dataset. Convert the data to a dataframe containing a subset of the data"
+ "Load up required libraries and dataset. Convert the data to a dataframe containing a subset of the data:"
]
},
{
@@ -15,8 +15,175 @@
"metadata": {},
"outputs": [
{
- "output_type": "execute_result",
"data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " City Name \n",
+ " Type \n",
+ " Package \n",
+ " Variety \n",
+ " Sub Variety \n",
+ " Grade \n",
+ " Date \n",
+ " Low Price \n",
+ " High Price \n",
+ " Mostly Low \n",
+ " ... \n",
+ " Unit of Sale \n",
+ " Quality \n",
+ " Condition \n",
+ " Appearance \n",
+ " Storage \n",
+ " Crop \n",
+ " Repack \n",
+ " Trans Mode \n",
+ " Unnamed: 24 \n",
+ " Unnamed: 25 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 \n",
+ " BALTIMORE \n",
+ " NaN \n",
+ " 24 inch bins \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " 4/29/17 \n",
+ " 270.0 \n",
+ " 280.0 \n",
+ " 270.0 \n",
+ " ... \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " E \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " \n",
+ " \n",
+ " 1 \n",
+ " BALTIMORE \n",
+ " NaN \n",
+ " 24 inch bins \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " 5/6/17 \n",
+ " 270.0 \n",
+ " 280.0 \n",
+ " 270.0 \n",
+ " ... \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " E \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " \n",
+ " \n",
+ " 2 \n",
+ " BALTIMORE \n",
+ " NaN \n",
+ " 24 inch bins \n",
+ " HOWDEN TYPE \n",
+ " NaN \n",
+ " NaN \n",
+ " 9/24/16 \n",
+ " 160.0 \n",
+ " 160.0 \n",
+ " 160.0 \n",
+ " ... \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " N \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " \n",
+ " \n",
+ " 3 \n",
+ " BALTIMORE \n",
+ " NaN \n",
+ " 24 inch bins \n",
+ " HOWDEN TYPE \n",
+ " NaN \n",
+ " NaN \n",
+ " 9/24/16 \n",
+ " 160.0 \n",
+ " 160.0 \n",
+ " 160.0 \n",
+ " ... \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " N \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " \n",
+ " \n",
+ " 4 \n",
+ " BALTIMORE \n",
+ " NaN \n",
+ " 24 inch bins \n",
+ " HOWDEN TYPE \n",
+ " NaN \n",
+ " NaN \n",
+ " 11/5/16 \n",
+ " 90.0 \n",
+ " 100.0 \n",
+ " 90.0 \n",
+ " ... \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " N \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
5 rows × 26 columns
\n",
+ "
"
+ ],
"text/plain": [
" City Name Type Package Variety Sub Variety Grade Date \\\n",
"0 BALTIMORE NaN 24 inch bins NaN NaN NaN 4/29/17 \n",
@@ -40,45 +207,139 @@
"4 NaN NaN NaN N NaN NaN NaN \n",
"\n",
"[5 rows x 26 columns]"
- ],
- "text/html": "\n\n
\n \n \n \n City Name \n Type \n Package \n Variety \n Sub Variety \n Grade \n Date \n Low Price \n High Price \n Mostly Low \n ... \n Unit of Sale \n Quality \n Condition \n Appearance \n Storage \n Crop \n Repack \n Trans Mode \n Unnamed: 24 \n Unnamed: 25 \n \n \n \n \n 0 \n BALTIMORE \n NaN \n 24 inch bins \n NaN \n NaN \n NaN \n 4/29/17 \n 270.0 \n 280.0 \n 270.0 \n ... \n NaN \n NaN \n NaN \n NaN \n NaN \n NaN \n E \n NaN \n NaN \n NaN \n \n \n 1 \n BALTIMORE \n NaN \n 24 inch bins \n NaN \n NaN \n NaN \n 5/6/17 \n 270.0 \n 280.0 \n 270.0 \n ... \n NaN \n NaN \n NaN \n NaN \n NaN \n NaN \n E \n NaN \n NaN \n NaN \n \n \n 2 \n BALTIMORE \n NaN \n 24 inch bins \n HOWDEN TYPE \n NaN \n NaN \n 9/24/16 \n 160.0 \n 160.0 \n 160.0 \n ... \n NaN \n NaN \n NaN \n NaN \n NaN \n NaN \n N \n NaN \n NaN \n NaN \n \n \n 3 \n BALTIMORE \n NaN \n 24 inch bins \n HOWDEN TYPE \n NaN \n NaN \n 9/24/16 \n 160.0 \n 160.0 \n 160.0 \n ... \n NaN \n NaN \n NaN \n NaN \n NaN \n NaN \n N \n NaN \n NaN \n NaN \n \n \n 4 \n BALTIMORE \n NaN \n 24 inch bins \n HOWDEN TYPE \n NaN \n NaN \n 11/5/16 \n 90.0 \n 100.0 \n 90.0 \n ... \n NaN \n NaN \n NaN \n NaN \n NaN \n NaN \n N \n NaN \n NaN \n NaN \n \n \n
\n
5 rows × 26 columns
\n
"
+ ]
},
+ "execution_count": 1,
"metadata": {},
- "execution_count": 1
+ "output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
- "import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"\n",
- "pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n",
+ "full_pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n",
"\n",
- "pumpkins.head()\n"
+ "full_pumpkins.head()\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " City Name \n",
+ " Package \n",
+ " Variety \n",
+ " Origin \n",
+ " Item Size \n",
+ " Color \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 2 \n",
+ " BALTIMORE \n",
+ " 24 inch bins \n",
+ " HOWDEN TYPE \n",
+ " DELAWARE \n",
+ " med \n",
+ " ORANGE \n",
+ " \n",
+ " \n",
+ " 3 \n",
+ " BALTIMORE \n",
+ " 24 inch bins \n",
+ " HOWDEN TYPE \n",
+ " VIRGINIA \n",
+ " med \n",
+ " ORANGE \n",
+ " \n",
+ " \n",
+ " 4 \n",
+ " BALTIMORE \n",
+ " 24 inch bins \n",
+ " HOWDEN TYPE \n",
+ " MARYLAND \n",
+ " lge \n",
+ " ORANGE \n",
+ " \n",
+ " \n",
+ " 5 \n",
+ " BALTIMORE \n",
+ " 24 inch bins \n",
+ " HOWDEN TYPE \n",
+ " MARYLAND \n",
+ " lge \n",
+ " ORANGE \n",
+ " \n",
+ " \n",
+ " 6 \n",
+ " BALTIMORE \n",
+ " 36 inch bins \n",
+ " HOWDEN TYPE \n",
+ " MARYLAND \n",
+ " med \n",
+ " ORANGE \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " City Name Package Variety Origin Item Size Color\n",
+ "2 BALTIMORE 24 inch bins HOWDEN TYPE DELAWARE med ORANGE\n",
+ "3 BALTIMORE 24 inch bins HOWDEN TYPE VIRGINIA med ORANGE\n",
+ "4 BALTIMORE 24 inch bins HOWDEN TYPE MARYLAND lge ORANGE\n",
+ "5 BALTIMORE 24 inch bins HOWDEN TYPE MARYLAND lge ORANGE\n",
+ "6 BALTIMORE 36 inch bins HOWDEN TYPE MARYLAND med ORANGE"
+ ]
+ },
+ "execution_count": 2,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
- "from sklearn.preprocessing import LabelEncoder\n",
- "\n",
- "new_columns = ['Color','Origin','Item Size','Variety','City Name','Package']\n",
+ "# Select the columns we want to use\n",
+ "columns_to_select = ['City Name','Package','Variety', 'Origin','Item Size', 'Color']\n",
+ "pumpkins = full_pumpkins.loc[:, columns_to_select]\n",
"\n",
- "new_pumpkins = pumpkins.drop([c for c in pumpkins.columns if c not in new_columns], axis=1)\n",
+ "# Drop rows with missing values\n",
+ "pumpkins.dropna(inplace=True)\n",
"\n",
- "new_pumpkins.dropna(inplace=True)\n",
- "\n",
- "new_pumpkins = new_pumpkins.apply(LabelEncoder().fit_transform)"
+ "pumpkins.head()"
]
},
{
+ "attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
- "Check the data shape, size, and quality"
+ "# Let's have a look to our data!\n",
+ "\n",
+ "By visualising it with Seaborn"
]
},
{
@@ -87,38 +348,48 @@
"metadata": {},
"outputs": [
{
- "output_type": "execute_result",
"data": {
"text/plain": [
- ""
+ ""
]
},
+ "execution_count": 3,
"metadata": {},
- "execution_count": 3
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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S0tLab1CCxcuxAcffIBXXnkFbm5uGDZsGF555RW89dZbBtd1cnLCjBkzMGjQIFy6dAleXl4AYHDuomRnZyM7O1t6nJ6eXqJxRERU/THQEMzMzHD79u2nuuaQIUOwefNmDB06FL1798bp06dx5syZYseYmZkBAHJycsq0Znh4OD755BO9dssOi2BlaQ7bBv5lmpeIiKoe76F5jomiiN27d+PXX39F586di+1br149affFwsICPj4+5V5/+fLlOH36NMaOHYvly5fDwcGhyL4pKSn44osvULduXWl3BgCmTJkiq8vCwgIHDhwwOEdoaCjS0tKk4/r16+W+BiIiqh64Q/Mc2rFjBywsLJCbm4uCggK8+eabmDVrVrFjDhw4ILs3pUaNGuWuw9HREe+99x62bNmCnj17GuxTr149iKKI//77D82aNcPGjRthYmIinZ80aRKCg4NlY+rWrWtwLrVaDbVaXe66iYio+mGgeQ5ptVpERkbCxMQEderUgUr15B8Dd3f3Et1DU1oqlarY9Q8cOAArKys4OjoavNnX3t4eHh4eFV4XEREpCwPNc8jc3FwxIaCyghQRET1bGGioRG7duoWsrCxZm52dXYW89FQeGRkZep+HU7NmTb23mBMR0bONNwVTiXh5ecHJyUl2/PHHH1VdFmbMmKFX1+TJk6u6LCIiesoEURTFqi6CqCqkp6fD2toaV05u4du2iYgUjjs0REREpHgMNERERKR4DDRERESkeAw0REREpHgMNERERKR4DDRERESkeAw0REREpHgMNERERKR4DDRERESkeAw0REREpHgMNERERKR4/LZteu7Z1tfy27mJiBSOOzRERESkeAw0REREpHgMNERERKR4DDRERESkeAw0REREpHgMNERERKR4DDRERESkeAw0REREpHgMNERERKR4/KRgeu5dXdUElmYlz/Zuw65UYjVERFQW3KEhIiIixWOgISIiIsVjoCEiIiLFY6AhIiIixWOgISIiIsVjoCEiIiLFY6AhIiIixWOgISIiIsVjoCEiIiLFY6AhIiIixWOgISIiIsVjoCEiIiLFY6AhIiIixWOgISIiIsVjoCml4OBgCIIgHXZ2dggMDMSpU6dk/QRBwJYtW2RtcXFxeO211+Dg4ABTU1M0aNAAAwYMwP79+4td083NDYIgYO3atXrnfHx8IAgCVq5cqXcu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",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
}
],
"source": [
- "new_pumpkins.info"
+ "import seaborn as sns\n",
+ "# Specify colors for each values of the hue variable\n",
+ "palette = {\n",
+ " 'ORANGE': 'orange',\n",
+ " 'WHITE': 'wheat',\n",
+ "}\n",
+ "# Plot a bar plot to visualize how many pumpkins of each variety are orange or white\n",
+ "sns.catplot(\n",
+ " data=pumpkins, y=\"Variety\", hue=\"Color\", kind=\"count\",\n",
+ " palette=palette, \n",
+ ")"
]
},
{
+ "attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
- "Working with Item Size to Color, create a scatterplot using Seaborn"
+ "# Data pre-processing\n",
+ "\n",
+ "Let's encode features and labels to better plot the data and train the model"
]
},
{
@@ -127,179 +398,780 @@
"metadata": {},
"outputs": [
{
- "output_type": "execute_result",
"data": {
"text/plain": [
- ""
+ "array(['med', 'lge', 'sml', 'xlge', 'med-lge', 'jbo', 'exjbo'],\n",
+ " dtype=object)"
]
},
+ "execution_count": 4,
"metadata": {},
- "execution_count": 4
- },
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Let's look at the different values of the 'Item Size' column\n",
+ "pumpkins['Item Size'].unique()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from sklearn.preprocessing import OrdinalEncoder\n",
+ "# Encode the 'Item Size' column using ordinal encoding\n",
+ "item_size_categories = [['sml', 'med', 'med-lge', 'lge', 'xlge', 'jbo', 'exjbo']]\n",
+ "ordinal_features = ['Item Size']\n",
+ "ordinal_encoder = OrdinalEncoder(categories=item_size_categories)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from sklearn.preprocessing import OneHotEncoder\n",
+ "# Encode all the other features using one-hot encoding\n",
+ "categorical_features = ['City Name', 'Package', 'Variety', 'Origin']\n",
+ "categorical_encoder = OneHotEncoder(sparse_output=False)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [
{
- "output_type": "display_data",
"data": {
- "text/plain": "",
- "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n