diff --git a/2-Regression/4-Logistic/solution/notebook.ipynb b/2-Regression/4-Logistic/solution/notebook.ipynb
index adcbbce3a..1b4a0cc91 100644
--- a/2-Regression/4-Logistic/solution/notebook.ipynb
+++ b/2-Regression/4-Logistic/solution/notebook.ipynb
@@ -24,21 +24,18 @@
"cells": [
{
"source": [
- "## Pumpkin Pricing\n",
+ "## Logistic Regression - Lesson 4\n",
"\n",
"Load up required libraries and dataset. Convert the data to a dataframe containing a subset of the data: \n",
"\n",
- "- Only get pumpkins priced by the bushel\n",
- "- Convert the date to a month\n",
- "- Calculate the price to be an average of high and low prices\n",
- "- Convert the price to reflect the pricing by bushel quantity"
+ "Let's look at the relationship between color and variety"
],
"cell_type": "markdown",
"metadata": {}
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": 152,
"metadata": {},
"outputs": [
{
@@ -71,7 +68,7 @@
"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
"
},
"metadata": {},
- "execution_count": 2
+ "execution_count": 152
}
],
"source": [
@@ -79,92 +76,97 @@
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"\n",
- "pumpkins = pd.read_csv('../data/US-pumpkins.csv')\n",
+ "pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n",
"\n",
"pumpkins.head()\n"
]
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": 153,
"metadata": {},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
- " Month Variety City Package Low Price High Price \\\n",
- "70 9 PIE TYPE BALTIMORE 1 1/9 bushel cartons 15.0 15.0 \n",
- "71 9 PIE TYPE BALTIMORE 1 1/9 bushel cartons 18.0 18.0 \n",
- "72 10 PIE TYPE BALTIMORE 1 1/9 bushel cartons 18.0 18.0 \n",
- "73 10 PIE TYPE BALTIMORE 1 1/9 bushel cartons 17.0 17.0 \n",
- "74 10 PIE TYPE BALTIMORE 1 1/9 bushel cartons 15.0 15.0 \n",
- "\n",
- " Price \n",
- "70 13.636364 \n",
- "71 16.363636 \n",
- "72 16.363636 \n",
- "73 15.454545 \n",
- "74 13.636364 "
+ ""
],
- "text/html": "\n\n
\n \n \n \n Month \n Variety \n City \n Package \n Low Price \n High Price \n Price \n \n \n \n \n 70 \n 9 \n PIE TYPE \n BALTIMORE \n 1 1/9 bushel cartons \n 15.0 \n 15.0 \n 13.636364 \n \n \n 71 \n 9 \n PIE TYPE \n BALTIMORE \n 1 1/9 bushel cartons \n 18.0 \n 18.0 \n 16.363636 \n \n \n 72 \n 10 \n PIE TYPE \n BALTIMORE \n 1 1/9 bushel cartons \n 18.0 \n 18.0 \n 16.363636 \n \n \n 73 \n 10 \n PIE TYPE \n BALTIMORE \n 1 1/9 bushel cartons \n 17.0 \n 17.0 \n 15.454545 \n \n \n 74 \n 10 \n PIE TYPE \n BALTIMORE \n 1 1/9 bushel cartons \n 15.0 \n 15.0 \n 13.636364 \n \n \n
\n
"
+ "text/html": " City Name Package Variety Origin Item Size Color \n \n City Name \n 1.000000 \n 0.145078 \n -0.009344 \n 0.200548 \n -0.189651 \n -0.028224 \n \n \n Package \n 0.145078 \n 1.000000 \n -0.330067 \n 0.048547 \n -0.301333 \n -0.270385 \n \n \n Variety \n -0.009344 \n -0.330067 \n 1.000000 \n 0.294407 \n 0.105008 \n 0.051986 \n \n \n Origin \n 0.200548 \n 0.048547 \n 0.294407 \n 1.000000 \n -0.061450 \n 0.073486 \n \n \n Item Size \n -0.189651 \n -0.301333 \n 0.105008 \n -0.061450 \n 1.000000 \n 0.224603 \n \n \n Color \n -0.028224 \n -0.270385 \n 0.051986 \n 0.073486 \n 0.224603 \n 1.000000 \n \n
"
},
"metadata": {},
- "execution_count": 3
+ "execution_count": 153
}
],
"source": [
+ "from sklearn.preprocessing import LabelEncoder\n",
+ "new_columns = ['Color','Origin','Item Size','Variety','City Name','Package']\n",
"\n",
- "pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n",
- "\n",
- "new_columns = ['Package', 'Variety', 'City Name', 'Month', 'Low Price', 'High Price', 'Date', 'City Num', 'Variety Num']\n",
- "\n",
- "\n",
- "pumpkins = pumpkins.drop([c for c in pumpkins.columns if c not in new_columns], axis=1)\n",
- "\n",
- "price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2\n",
- "\n",
- "month = pd.DatetimeIndex(pumpkins['Date']).month\n",
- "\n",
+ "new_pumpkins = pumpkins.drop([c for c in pumpkins.columns if c not in new_columns], axis=1)\n",
"\n",
- "new_pumpkins = pd.DataFrame({'Month': month, 'Variety': pumpkins['Variety'], 'City': pumpkins['City Name'], 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})\n",
+ "new_pumpkins.dropna(inplace=True)\n",
"\n",
- "new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/1.1\n",
+ "new_pumpkins = new_pumpkins.apply(LabelEncoder().fit_transform)\n",
"\n",
- "new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price*2\n",
- "\n",
- "new_pumpkins.head()\n"
+ "corr = new_pumpkins.corr()\n",
+ "corr.style.background_gradient(cmap='coolwarm')"
]
},
{
- "source": [
- "A basic scatterplot reminds us that we only have month data from August through December. We probably need more data to be able to draw conclusions in a linear fashion."
+ "cell_type": "code",
+ "execution_count": 154,
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "\nInt64Index: 586 entries, 23 to 1693\nData columns (total 6 columns):\n # Column Non-Null Count Dtype\n--- ------ -------------- -----\n 0 City Name 586 non-null int64\n 1 Package 586 non-null int64\n 2 Variety 586 non-null int64\n 3 Origin 586 non-null int64\n 4 Item Size 586 non-null int64\n 5 Color 586 non-null int64\ndtypes: int64(6)\nmemory usage: 32.0 KB\n"
+ ]
+ },
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "City Name 586\n",
+ "Package 586\n",
+ "Variety 586\n",
+ "Origin 586\n",
+ "Item Size 586\n",
+ "Color 586\n",
+ "dtype: int64"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 154
+ }
],
- "cell_type": "markdown",
- "metadata": {}
+ "source": [
+ "new_pumpkins.info()\n",
+ "new_pumpkins.count()"
+ ]
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": 155,
"metadata": {},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
- "(array([ 7.5, 8. , 8.5, 9. , 9.5, 10. , 10.5, 11. , 11.5, 12. , 12.5]),\n",
- " )"
+ ""
]
},
"metadata": {},
- "execution_count": 4
+ "execution_count": 155
},
{
"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