From 5052a12384054da20986a97ae660faf57d660b0c Mon Sep 17 00:00:00 2001 From: Dmitri Soshnikov Date: Fri, 18 Mar 2022 00:06:48 +0300 Subject: [PATCH] Make some changes to linear regression section to fix #543 (#562) * Rewrite linear regression section to include categorical features * Fix formatting --- 2-Regression/3-Linear/README.md | 329 +++--- .../3-Linear/images/linear-results.png | Bin 0 -> 1883 bytes .../3-Linear/images/pie-pumpkins-scatter.png | Bin 0 -> 2270 bytes 2-Regression/3-Linear/images/poly-results.png | Bin 0 -> 2131 bytes .../3-Linear/images/price-by-variety.png | Bin 0 -> 1897 bytes .../images/scatter-dayofyear-color.png | Bin 0 -> 5319 bytes .../3-Linear/images/scatter-dayofyear.png | Bin 0 -> 3568 bytes 2-Regression/3-Linear/notebook.ipynb | 358 +++++- 2-Regression/3-Linear/solution/notebook.ipynb | 1048 +++++++++++++---- 9 files changed, 1279 insertions(+), 456 deletions(-) create mode 100644 2-Regression/3-Linear/images/linear-results.png create mode 100644 2-Regression/3-Linear/images/pie-pumpkins-scatter.png create mode 100644 2-Regression/3-Linear/images/poly-results.png create mode 100644 2-Regression/3-Linear/images/price-by-variety.png create mode 100644 2-Regression/3-Linear/images/scatter-dayofyear-color.png create mode 100644 2-Regression/3-Linear/images/scatter-dayofyear.png diff --git a/2-Regression/3-Linear/README.md b/2-Regression/3-Linear/README.md index c2fe1389..2a8ae959 100644 --- a/2-Regression/3-Linear/README.md +++ b/2-Regression/3-Linear/README.md @@ -7,9 +7,11 @@ > ### [This lesson is available in R!](./solution/R/lesson_3-R.ipynb) ### Introduction -So far you have explored what regression is with sample data gathered from the pumpkin pricing dataset that we will use throughout this lesson. You have also visualized it using Matplotlib. +So far you have explored what regression is with sample data gathered from the pumpkin pricing dataset that we will use throughout this lesson. You have also visualized it using Matplotlib. -Now you are ready to dive deeper into regression for ML. In this lesson, you will learn more about two types of regression: _basic linear regression_ and _polynomial regression_, along with some of the math underlying these techniques. +Now you are ready to dive deeper into regression for ML. While visualization allows you to make sense of data, the real power of Machine Learning comes from _training models_. Models are trained on historic data to automatically capture data dependencies, and they allow you to predict outcomes for new data, which the model has not seem before. + +In this lesson, you will learn more about two types of regression: _basic linear regression_ and _polynomial regression_, along with some of the math underlying these techniques. Those models will allow us to predict pumpkin prices depending on different input data. > Throughout this curriculum, we assume minimal knowledge of math, and seek to make it accessible for students coming from other fields, so watch for notes, ๐Ÿงฎ callouts, diagrams, and other learning tools to aid in comprehension. @@ -71,251 +73,254 @@ One more term to understand is the **Correlation Coefficient** between given X a A good linear regression model will be one that has a high (nearer to 1 than 0) Correlation Coefficient using the Least-Squares Regression method with a line of regression. -โœ… Run the notebook accompanying this lesson and look at the City to Price scatterplot. Does the data associating City to Price for pumpkin sales seem to have high or low correlation, according to your visual interpretation of the scatterplot? - +โœ… Run the notebook accompanying this lesson and look at the Month to Price scatterplot. Does the data associating Month to Price for pumpkin sales seem to have high or low correlation, according to your visual interpretation of the scatterplot? Does that change if you use more fine-grained measure instead of `Month`, eg. *day of the year* (i.e. number of days since the beginning of the year)? -## Prepare your data for regression +In the code below, we will assume that we have cleaned up the data, and obtained a dataframe called `new_pumpkins`, similar to the following: -Now that you have an understanding of the math behind this exercise, create a Regression model to see if you can predict which package of pumpkins will have the best pumpkin prices. Someone buying pumpkins for a holiday pumpkin patch might want this information to be able to optimize their purchases of pumpkin packages for the patch. +ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price +---|-------|-----------|---------|------|---------|-----------|------------|------- +70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 +71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 +74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 -Since you'll use Scikit-learn, there's no reason to do this by hand (although you could!). In the main data-processing block of your lesson notebook, add a library from Scikit-learn to automatically convert all string data to numbers: +> The code to clean the data is available in [`notebook.ipynb`](notebook.ipynb). We have performed the same cleaning steps as in the previous lesson, and have calculated `DayOfYear` column using the following expression: ```python -from sklearn.preprocessing import LabelEncoder - -new_pumpkins.iloc[:, 0:-1] = new_pumpkins.iloc[:, 0:-1].apply(LabelEncoder().fit_transform) +day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` -If you look at the new_pumpkins dataframe now, you see that all the strings are now numeric. This makes it harder for you to read but much more intelligible for Scikit-learn! -Now you can make more educated decisions (not just based on eyeballing a scatterplot) about the data that is best suited to regression. +Now that you have an understanding of the math behind linear regression, let's create a Regression model to see if we can predict which package of pumpkins will have the best pumpkin prices. Someone buying pumpkins for a holiday pumpkin patch might want this information to be able to optimize their purchases of pumpkin packages for the patch. -Try to find a good correlation between two points of your data to potentially build a good predictive model. As it turns out, there's only weak correlation between the City and Price: +## Looking for Correlation -```python -print(new_pumpkins['City'].corr(new_pumpkins['Price'])) -0.32363971816089226 -``` +From the previous lesson you have probably seen that the average price for different months looks like this: -However there's a bit better correlation between the Package and its Price. That makes sense, right? Normally, the bigger the produce box, the higher the price. +Average price by month + +This suggests that there should be some correlation, and we can try training linear regression model to predict the relationship between `Month` and `Price`, or between `DayOfYear` and `Price`. Here is the scatter plot that shows the latter relationship: + +Scatter plot of Price vs. Day of Year + +It looks like there are different clusters of prices corresponding to different pumpkin varieties. To confirm this hypothesis, let's plot each pumpkin category using different color. By passing `ax` parameter to the `scatter` plotting function we can plot all points on the same graph: ```python -print(new_pumpkins['Package'].corr(new_pumpkins['Price'])) -0.6061712937226021 +ax=None +colors = ['red','blue','green','yellow'] +for i,var in enumerate(new_pumpkins['Variety'].unique()): + df = new_pumpkins[new_pumpkins['Variety']==var] + ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` -A good question to ask of this data will be: 'What price can I expect of a given pumpkin package?' +Scatter plot of Price vs. Day of Year -Let's build this regression model -## Building a linear model - -Before building your model, do one more tidy-up of your data. Drop any null data and check once more what the data looks like. +Our investigation suggests that variety has more effect on the overall price than actual selling date. So let us focus for the moment only on one pumpkin variety, and see what effect does the date have: ```python -new_pumpkins.dropna(inplace=True) -new_pumpkins.info() +pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] +pie_pumpkins.plot.scatter('DayOfYear','Price') ``` +Scatter plot of Price vs. Day of Year -Then, create a new dataframe from this minimal set and print it out: +If we now calculate the correlation between `Price` and `DayOfYear` using `corr` function, we will get something like `-0.27` - which means that training predictive model makes sense. -```python -new_columns = ['Package', 'Price'] -lin_pumpkins = new_pumpkins.drop([c for c in new_pumpkins.columns if c not in new_columns], axis='columns') +> Before training linear regression model, it is important to make sure that our data is clean. Linear regression does not work well with missing values, thus it makes sense to get rid of all empty cells: -lin_pumpkins +```python +pie_pumpkins.dropna(inplace=True) +pie_pumpkins.info() ``` -```output - Package Price -70 0 13.636364 -71 0 16.363636 -72 0 16.363636 -73 0 15.454545 -74 0 13.636364 -... ... ... -1738 2 30.000000 -1739 2 28.750000 -1740 2 25.750000 -1741 2 24.000000 -1742 2 24.000000 -415 rows ร— 2 columns +Another approach would be to fill those empty values with mean values from the corresponding column. + +## Simple Linear Regression + +To train linear regression model, we will use **Scikit Learn** library. + +```python +from sklearn.linear_model import LinearRegression +from sklearn.metrics import mean_squared_error +from sklearn.model_selection import train_test_split ``` -1. Now you can assign your X and y coordinate data: +We start by separating input values (features) and expected output (label) into separate numpy arrays: - ```python - X = lin_pumpkins.values[:, :1] - y = lin_pumpkins.values[:, 1:2] - ``` -โœ… What's going on here? You're using [Python slice notation](https://stackoverflow.com/questions/509211/understanding-slice-notation/509295#509295) to create arrays to populate `X` and `y`. +```python +X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) +y = pie_pumpkins['Price'] +``` -2. Next, start the regression model-building routines: +> Note that we had to preform `reshape` on input data in order for linear regression package to understand it correctly. Linear regression expects 2D-array as an input, where each row of the array corresponds to a vector of input features. In our case, since we have only one input - we need an array with shape N×1, where N is the dataset size. - ```python - from sklearn.linear_model import LinearRegression - from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error - from sklearn.model_selection import train_test_split +Then, we need to split the data into train and test datasets, so that we can validate our model after training: - X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) - lin_reg = LinearRegression() - lin_reg.fit(X_train,y_train) +```python +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) +``` - pred = lin_reg.predict(X_test) +Finally, training linear regression takes only two lines of code. We define the `LinearRegression` object, and fit it to our data using `fit` method: - accuracy_score = lin_reg.score(X_train,y_train) - print('Model Accuracy: ', accuracy_score) - ``` +```python +lin_reg = LinearRegression() +lin_reg.fit(X_train,y_train) +``` - Because the correlation isn't particularly good, the model produced isn't terribly accurate. +The `LinearRegression` object after `fit`-ting contains all the coefficients of the regression, which can be accessed using `.coef_` property. In our case, there is just one coefficient, which should be around `-0.017`. It means that prices seem to drop a bit with time, but not too much, around 2 cents per day. We can also access the intersection point of the regression with Y-axis using `lin_reg.intercept_` - it will be around `21` in our case, indicating the price at the beginning of the year. - ```output - Model Accuracy: 0.3315342327998987 - ``` +To see how accurate our model is, we can predict prices on test dataset, and then measure how close our predictions are to the expected values. This can be done using mean square error (MSE) metrics, which is the mean of all squared differences between expected and predicted value. -3. You can visualize the line that's drawn in the process: +```python +pred = lin_reg.predict(X_test) - ```python - plt.scatter(X_test, y_test, color='black') - plt.plot(X_test, pred, color='blue', linewidth=3) +mse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +``` - plt.xlabel('Package') - plt.ylabel('Price') +Our error seems to be around 2 points, which is ~17%. Not too good. Another indicator of model quality is **coefficient of determination**, which can be obtained like this: - plt.show() - ``` - ![A scatterplot showing package to price relationship](./images/linear.png) +```python +score = lin_reg.score(X_train,y_train) +print('Model determination: ', score) +``` +If the value is 0, it means that the model does not take input data into account, and acts as the *worst linear predictor*, which is simply a mean value of the result. The value of 1 means that we can perfectly predict all expected outputs. In our case, the coefficient is around 0.06, which is quite low. -4. Test the model against a hypothetical variety: +We can also plot the test data together with regression line to better see how regression works in our case: - ```python - lin_reg.predict( np.array([ [2.75] ]) ) - ``` - - The returned price for this mythological Variety is: +```python +plt.scatter(X_test,y_test) +plt.plot(X_test,pred) +``` - ```output - array([[33.15655975]]) - ``` +Linear regression -That number makes sense, if the logic of the regression line holds true. -๐ŸŽƒ Congratulations, you just created a model that can help predict the price of a few varieties of pumpkins. Your holiday pumpkin patch will be beautiful. But you can probably create a better model! -## Polynomial regression +## Polynomial Regression Another type of linear regression is polynomial regression. While sometimes there's a linear relationship between variables - the bigger the pumpkin in volume, the higher the price - sometimes these relationships can't be plotted as a plane or straight line. โœ… Here are [some more examples](https://online.stat.psu.edu/stat501/lesson/9/9.8) of data that could use polynomial regression -Take another look at the relationship between Variety to Price in the previous plot. Does this scatterplot seem like it should necessarily be analyzed by a straight line? Perhaps not. In this case, you can try polynomial regression. +Take another look at the relationship between Date and Price. Does this scatterplot seem like it should necessarily be analyzed by a straight line? Perhaps not. In this case, you can try polynomial regression. โœ… Polynomials are mathematical expressions that might consist of one or more variables and coefficients -Polynomial regression creates a curved line to better fit nonlinear data. - -1. Let's recreate a dataframe populated with a segment of the original pumpkin data: +Polynomial regression creates a curved line to better fit nonlinear data. In our case, if we include a squared `DayOfYear` variable into input data, we should be able to fit our data with parabolic curve, which will have a minimum at a certain point within the year. - ```python - new_columns = ['Variety', 'Package', 'City', 'Month', 'Price'] - poly_pumpkins = new_pumpkins.drop([c for c in new_pumpkins.columns if c not in new_columns], axis='columns') +Scikit-learn includes a helpful [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) to combine different steps of data processing together. A **pipeline** is a chain of **estimators**. In our case, we will create a pipeline that first adds polynomial features to our model, and then trains the regression: - poly_pumpkins - ``` +```python +from sklearn.preprocessing import PolynomialFeatures +from sklearn.pipeline import make_pipeline -A good way to visualize the correlations between data in dataframes is to display it in a 'coolwarm' chart: +pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) -2. Use the `Background_gradient()` method with `coolwarm` as its argument value: +pipeline.fit(X_train,y_train) +``` - ```python - corr = poly_pumpkins.corr() - corr.style.background_gradient(cmap='coolwarm') - ``` - This code creates a heatmap: - ![A heatmap showing data correlation](./images/heatmap.png) +Using `PolynomialFeatures(2)` means that we will include all second-degree polynomials from the input data. In our case it will just mean `DayOfYear`2, but given two input variables X and Y, this will add X2, XY and Y2. We may also use higher degree polynomial if we want. -Looking at this chart, you can visualize the good correlation between Package and Price. So you should be able to create a somewhat better model than the last one. -### Create a pipeline +Pipeline can be used in the same manner as original `LinearRegression` object, i.e. we can `fit` the pipeline, and then use `predict` to get the prediction results. Here is the graph showing test data, and the approximation curve: + +Polynomial regression -Scikit-learn includes a helpful API for building polynomial regression models - the `make_pipeline` [API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline). A 'pipeline' is created which is a chain of estimators. In this case, the pipeline includes polynomial features, or predictions that form a nonlinear path. +Using polynomial regression we can get slightly lower MSE and higher determination, but not significantly. We need to take into account other features! -1. Build out the X and y columns: +> You can see that the minimal pumpkin prices are observed somewhere around Halloween. How can you explain this? - ```python - X=poly_pumpkins.iloc[:,3:4].values - y=poly_pumpkins.iloc[:,4:5].values - ``` +๐ŸŽƒ Congratulations, you just created a model that can help predict the price of pie pumpkins. You can probably repeat the same procedure for all pumpkin types, but that would be tedious. We will learn now how to take pumpkin variety into account in our model! -2. Create the pipeline by calling the `make_pipeline()` method: +## Categorical Features - ```python - from sklearn.preprocessing import PolynomialFeatures - from sklearn.pipeline import make_pipeline +In the ideal world, we want to be able to predict prices for different pumpkin varieties using the same model. However, `Variety` column is somewhat different from columns like `Month`, because they contain non-numeric values. Such columns are called **categorical**. - pipeline = make_pipeline(PolynomialFeatures(4), LinearRegression()) +Here you can see how average price depends on variety: - X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) +Average price by variety - pipeline.fit(np.array(X_train), y_train) +To take variety into account, we first need to convert it to numeric form, or **encode**. There are several way we can do it: - y_pred=pipeline.predict(X_test) - ``` +* Simple numeric encoding that will build a table of different varieties, and then replace variety name by an index in that table. This is not the best idea for linear regression, because linear regression takes the actual numeric value of the index, and adds it to the result, multiplying by some coefficient. In our case, relationship between index number and price is clearly non-linear, even if we make sure that indices are ordered in some specific way. +* One-hot encoding, which will replace `Variety` column by 4 different columns, one for each variety, that will contain 1 if the corresponding row is of given variety, and 0 otherwise. This means that there will be four coefficients in linear regression, one for each pumpkin variety, responsible for "starting price" (or rather "additional price") for that particular variety. -### Create a sequence +The code below shows how we can one-hot encode a variety: -At this point, you need to create a new dataframe with _sorted_ data so that the pipeline can create a sequence. +```python +pd.get_dummies(new_pumpkins['Variety']) +``` -Add the following code: + ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE +----|-----------|-----------|--------------------------|---------- +70 | 0 | 0 | 0 | 1 +71 | 0 | 0 | 0 | 1 +... | ... | ... | ... | ... +1738 | 0 | 1 | 0 | 0 +1739 | 0 | 1 | 0 | 0 +1740 | 0 | 1 | 0 | 0 +1741 | 0 | 1 | 0 | 0 +1742 | 0 | 1 | 0 | 0 - ```python - df = pd.DataFrame({'x': X_test[:,0], 'y': y_pred[:,0]}) - df.sort_values(by='x',inplace = True) - points = pd.DataFrame(df).to_numpy() +To train linear regression using one-hot encoded variety as input, we just need to initialize `X` and `y` data correctly: - plt.plot(points[:, 0], points[:, 1],color="blue", linewidth=3) - plt.xlabel('Package') - plt.ylabel('Price') - plt.scatter(X,y, color="black") - plt.show() - ``` +```python +X = pd.get_dummies(new_pumpkins['Variety']) +y = new_pumpkins['Price'] +``` -You created a new dataframe by calling `pd.DataFrame`. Then you sorted the values by calling `sort_values()`. Finally you created a polynomial plot: +The rest of the code is the same as we have used above to train linear regression. If you try it, you will see that the mean squared error is about the same, but we get much higher coefficient of determination (~77%). To get even more accurate predictions, we can take more categorical features into account, as well as numeric features, such as `Month` or `DayOfYear`. To get one large array of features, we can use `join`: -![A polynomial plot showing package to price relationship](./images/polynomial.png) +```python +X = pd.get_dummies(new_pumpkins['Variety']) \ + .join(new_pumpkins['Month']) \ + .join(pd.get_dummies(new_pumpkins['City'])) \ + .join(pd.get_dummies(new_pumpkins['Package'])) +y = new_pumpkins['Price'] +``` -You can see a curved line that fits your data better. +Here we also take into account `City` and `Package` type, which gives us MSE 2.84 (10%), and determination 0.94! -Let's check the model's accuracy: +## Putting it all together - ```python - accuracy_score = pipeline.score(X_train,y_train) - print('Model Accuracy: ', accuracy_score) - ``` +To make the best model, we can use combined (one-hot encoded categorical + numeric) data from above together with polynomial regression. Here is the complete code for your convenience: - And voila! +```python +# set up training data +X = pd.get_dummies(new_pumpkins['Variety']) \ + .join(new_pumpkins['Month']) \ + .join(pd.get_dummies(new_pumpkins['City'])) \ + .join(pd.get_dummies(new_pumpkins['Package'])) +y = new_pumpkins['Price'] - ```output - Model Accuracy: 0.8537946517073784 - ``` +# make train-test split +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) -That's better! Try to predict a price: +# setup and train the pipeline +pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) +pipeline.fit(X_train,y_train) -### Do a prediction +# predict results for test data +pred = pipeline.predict(X_test) -Can we input a new value and get a prediction? +# calculate MSE and determination +mse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') -Call `predict()` to make a prediction: - - ```python - pipeline.predict( np.array([ [2.75] ]) ) - ``` - You are given this prediction: +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` - ```output - array([[46.34509342]]) - ``` +This should give us the best determination coefficient of almost 97%, and MSE=2.23 (~8% prediction error). -It does make sense, given the plot! And, if this is a better model than the previous one, looking at the same data, you need to budget for these more expensive pumpkins! +| Model | MSE | Determination | +|-------|-----|---------------| +| `DayOfYear` Linear | 2.77 (17.2%) | 0.07 | +| `DayOfYear` Polynomial | 2.73 (17.0%) | 0.08 | +| `Variety` Linear | 5.24 (19.7%) | 0.77 | +| All features Linear | 2.84 (10.5%) | 0.94 | +| All features Polynomial | 2.23 (8.25%) | 0.97 | -๐Ÿ† Well done! You created two regression models in one lesson. In the final section on regression, you will learn about logistic regression to determine categories. +๐Ÿ† Well done! You created four regression models in one lesson, and improved model quality to 97%. In the final section on regression, you will learn about logistic regression to determine categories. --- ## ๐Ÿš€Challenge diff --git a/2-Regression/3-Linear/images/linear-results.png b/2-Regression/3-Linear/images/linear-results.png new file mode 100644 index 0000000000000000000000000000000000000000..05abe0025a8f43b2b1db338a786c66a232669a29 GIT binary patch literal 1883 zcmYjS2{hZ;8vpkMC6-d2rAiD#XSyUbYMr*07AYb@TiS^AB?Sd|YDM})5CcL(kZ?oz$>Uo7BvKgB41oy#761>8@IxH?_lz632omGqdfqn7 z0d&D8E-t?3{L}92?7*U0kw~O@3X3uLfzmiK_K{EQak>izK}pVN7a+e);CPVya{8F8 zmVpxhNDxuyEL|y+i>18$%A@i&mLDTeKI_~W&Ge5Ek`N1*R<9CvE=6T|E#*FhT^jHbb+vF z-D25ZG_WOFzZc8dc{I<%^fDB?ElMfhj@6|t2&U=(NO+8S_h?>66b|D~8JXA#a46iP z+4@1%S>?LWsR5lvs;*$LXhARcK?Or)RUbB{8_U!u`!$k#^u_Dy`4=}A2+%(ZTyNla zob!8**2$C2*T@h-LUv_vqnvGK3RSgMXD^k1-{rTwCdbGKHevIz6c*r?Ddh1l>coA? zf`1^C4OPS)_m97>(Dennvdp(Q?>oxYrb<{esrpK;968Y7@L}VoKG2NC=U!nWfwg-q zgA79xKof%qKe)leP6HEJLe0~sOd#u+ckPVJCV<>$-o*p)*Kj$n#`~td3cnYJ(EDX~ zF+vS9$E1d}ktA1LaLzQ5z;V_qn$tETBVQHL8u0THv?!SPky*+&%I3x1vwZ`rEg&d!?-DTI5E?TefkCRVUhldf)!wNFm%!z+p^t8p+j>q&slsCna|33Tb|%&?AqS_^>8r%)Cr|Jx-o@&S! z`@YZ5k73Wgj~jK!l40vgO_w!TapDitKs2r^^?E{)t-BcPU0_)BI!lJbxc$ss81sa6 z2D|*B%Q>Uv?OS4K7bx93*qI=zh+{A?!Nvs!-(|v6DWb=Cl{p^oH}|0=UJl$^lyJk? zctWA={h5!lwfHcnG8SvDq-ky1m|ix@@VoG^s~a8qOjXatKx&I;KB!jzPL?bbKAlUy zzb%aBq^EfnKK|5g0V@CRl2!P6&|RH@Ad?;|#dW!r-dc^tAZ)3uc0Vyhg~zMzPGp^V zEzCkR+gH`%`rOqLXFO2-v@XiVl4&Sdipx8MK`59Cp=yB{1S6ll^7^NKGwE^y`v5mq zX~+EVnb%lYK0+LEqt%H#2Kn`iPu3bun1!$|Wo6=%%?xC~cVv%Ld2&o(11gWnqA`nK zrRAN}zQ_?uq#5tyVi>nN&>>AM77b~*@4Lj2szc_}K__u(HI0j&C(_IF!j*j?Au>dq zw_=a#k-*TJRMEj)TGU@eE5-2$68Z-o$DY4^>O$n_Szl=!a^`l6zPi7e!DLF{9~<6; zk}<1(JLz0n`-V?wfF2xVayeiMapWfEEno(9iTX}*4LAFqi)R2pl z`LGh`Zb0#D?-RA*mW3d~&5?~aCLr1H@nwfkKhM`R!wE*EvIDn6p&w}RRx?tUJLm~fGJySuvw+ac-f?$3ofk3RRn I>RQ780Enl31^@s6 literal 0 HcmV?d00001 diff --git a/2-Regression/3-Linear/images/pie-pumpkins-scatter.png b/2-Regression/3-Linear/images/pie-pumpkins-scatter.png new file mode 100644 index 0000000000000000000000000000000000000000..f0a2af56b4bf94ff2041a257924c46bce21a6f27 GIT binary patch literal 2270 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 literal 0 HcmV?d00001 diff --git a/2-Regression/3-Linear/images/poly-results.png b/2-Regression/3-Linear/images/poly-results.png new file mode 100644 index 0000000000000000000000000000000000000000..6d1e96336a580c235dfd2d1fb1127aa340abba26 GIT binary patch literal 2131 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 MtQ`^67cbHN4fvO7hyVZp literal 0 HcmV?d00001 diff --git a/2-Regression/3-Linear/images/scatter-dayofyear-color.png b/2-Regression/3-Linear/images/scatter-dayofyear-color.png new file mode 100644 index 0000000000000000000000000000000000000000..499b6f6dd5cb801f02db32f6e489d18dfee0acc6 GIT binary patch literal 5319 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 literal 0 HcmV?d00001 diff --git a/2-Regression/3-Linear/images/scatter-dayofyear.png b/2-Regression/3-Linear/images/scatter-dayofyear.png new file mode 100644 index 0000000000000000000000000000000000000000..d37356c2541ad13068ef6911e07f70fa4e05ce13 GIT binary patch literal 3568 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 HcEbMvPcSc# literal 0 HcmV?d00001 diff --git a/2-Regression/3-Linear/notebook.ipynb b/2-Regression/3-Linear/notebook.ipynb index adcbbce3..2da56e5b 100644 --- a/2-Regression/3-Linear/notebook.ipynb +++ b/2-Regression/3-Linear/notebook.ipynb @@ -1,28 +1,8 @@ { - "metadata": { - "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.8.3-final" - }, - "orig_nbformat": 2, - "kernelspec": { - "name": "python3", - "display_name": "Python 3", - "language": "python" - } - }, - "nbformat": 4, - "nbformat_minor": 2, "cells": [ { + "cell_type": "markdown", + "metadata": {}, "source": [ "## Pumpkin Pricing\n", "\n", @@ -32,9 +12,7 @@ "- 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" - ], - "cell_type": "markdown", - "metadata": {} + ] }, { "cell_type": "code", @@ -42,8 +20,175 @@ "metadata": {}, "outputs": [ { - "output_type": "execute_result", "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", + "
City NameTypePackageVarietySub VarietyGradeDateLow PriceHigh PriceMostly Low...Unit of SaleQualityConditionAppearanceStorageCropRepackTrans ModeUnnamed: 24Unnamed: 25
0BALTIMORENaN24 inch binsNaNNaNNaN4/29/17270.0280.0270.0...NaNNaNNaNNaNNaNNaNENaNNaNNaN
1BALTIMORENaN24 inch binsNaNNaNNaN5/6/17270.0280.0270.0...NaNNaNNaNNaNNaNNaNENaNNaNNaN
2BALTIMORENaN24 inch binsHOWDEN TYPENaNNaN9/24/16160.0160.0160.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
3BALTIMORENaN24 inch binsHOWDEN TYPENaNNaN9/24/16160.0160.0160.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
4BALTIMORENaN24 inch binsHOWDEN TYPENaNNaN11/5/1690.0100.090.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
\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", @@ -67,17 +212,18 @@ "4 NaN NaN NaN N NaN NaN NaN \n", "\n", "[5 rows x 26 columns]" - ], - "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
City NameTypePackageVarietySub VarietyGradeDateLow PriceHigh PriceMostly Low...Unit of SaleQualityConditionAppearanceStorageCropRepackTrans ModeUnnamed: 24Unnamed: 25
0BALTIMORENaN24 inch binsNaNNaNNaN4/29/17270.0280.0270.0...NaNNaNNaNNaNNaNNaNENaNNaNNaN
1BALTIMORENaN24 inch binsNaNNaNNaN5/6/17270.0280.0270.0...NaNNaNNaNNaNNaNNaNENaNNaNNaN
2BALTIMORENaN24 inch binsHOWDEN TYPENaNNaN9/24/16160.0160.0160.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
3BALTIMORENaN24 inch binsHOWDEN TYPENaNNaN9/24/16160.0160.0160.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
4BALTIMORENaN24 inch binsHOWDEN TYPENaNNaN11/5/1690.0100.090.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
\n

5 rows ร— 26 columns

\n
" + ] }, + "execution_count": 2, "metadata": {}, - "execution_count": 2 + "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", + "from datetime import datetime\n", "\n", "pumpkins = pd.read_csv('../data/US-pumpkins.csv')\n", "\n", @@ -90,8 +236,90 @@ "metadata": {}, "outputs": [ { - "output_type": "execute_result", "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", + "
MonthVarietyCityPackageLow PriceHigh PricePrice
709PIE TYPEBALTIMORE1 1/9 bushel cartons15.015.013.636364
719PIE TYPEBALTIMORE1 1/9 bushel cartons18.018.016.363636
7210PIE TYPEBALTIMORE1 1/9 bushel cartons18.018.016.363636
7310PIE TYPEBALTIMORE1 1/9 bushel cartons17.017.015.454545
7410PIE TYPEBALTIMORE1 1/9 bushel cartons15.015.013.636364
\n", + "
" + ], "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", @@ -106,42 +334,46 @@ "72 16.363636 \n", "73 15.454545 \n", "74 13.636364 " - ], - "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
MonthVarietyCityPackageLow PriceHigh PricePrice
709PIE TYPEBALTIMORE1 1/9 bushel cartons15.015.013.636364
719PIE TYPEBALTIMORE1 1/9 bushel cartons18.018.016.363636
7210PIE TYPEBALTIMORE1 1/9 bushel cartons18.018.016.363636
7310PIE TYPEBALTIMORE1 1/9 bushel cartons17.017.015.454545
7410PIE TYPEBALTIMORE1 1/9 bushel cartons15.015.013.636364
\n
" + ] }, + "execution_count": 3, "metadata": {}, - "execution_count": 3 + "output_type": "execute_result" } ], "source": [ - "\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", + "new_columns = ['Package', 'Variety', 'City Name', 'Month', 'Low Price', 'High Price', 'Date']\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", + "day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days)\n", "\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 = pd.DataFrame(\n", + " {'Month': month, \n", + " 'DayOfYear' : day_of_year, \n", + " 'Variety': pumpkins['Variety'], \n", + " 'City': pumpkins['City Name'], \n", + " 'Package': pumpkins['Package'], \n", + " 'Low Price': pumpkins['Low Price'],\n", + " 'High Price': pumpkins['High Price'], \n", + " 'Price': price})\n", "\n", "new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/1.1\n", - "\n", "new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price*2\n", "\n", "new_pumpkins.head()\n" ] }, { + "cell_type": "markdown", + "metadata": {}, "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": "markdown", - "metadata": {} + ] }, { "cell_type": "code", @@ -149,26 +381,28 @@ "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", " )" ] }, + "execution_count": 4, "metadata": {}, - "execution_count": 4 + "output_type": "execute_result" }, { - "output_type": "display_data", "data": { - "text/plain": "
", + "image/png": "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", "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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", - "image/png": "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\n" + "text/plain": [ + "
" + ] }, "metadata": { "needs_background": "light" - } + }, + "output_type": "display_data" } ], "source": [ @@ -183,5 +417,27 @@ "outputs": [], "source": [] } - ] -} \ No newline at end of file + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.8.3-final" + }, + "orig_nbformat": 2 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/2-Regression/3-Linear/solution/notebook.ipynb b/2-Regression/3-Linear/solution/notebook.ipynb index 19c54006..23943df4 100644 --- a/2-Regression/3-Linear/solution/notebook.ipynb +++ b/2-Regression/3-Linear/solution/notebook.ipynb @@ -1,32 +1,8 @@ { - "metadata": { - "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.7.0" - }, - "orig_nbformat": 2, - "kernelspec": { - "name": "python37364bit8d3b438fb5fc4430a93ac2cb74d693a7", - "display_name": "Python 3.7.0 64-bit ('3.7')" - }, - "metadata": { - "interpreter": { - "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" - } - } - }, - "nbformat": 4, - "nbformat_minor": 2, "cells": [ { + "cell_type": "markdown", + "metadata": {}, "source": [ "## Linear and Polynomial Regression for Pumpkin Pricing - Lesson 3\n", "\n", @@ -36,18 +12,183 @@ "- 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" - ], - "cell_type": "markdown", - "metadata": {} + ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 167, "metadata": {}, "outputs": [ { - "output_type": "execute_result", "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", + "
City NameTypePackageVarietySub VarietyGradeDateLow PriceHigh PriceMostly Low...Unit of SaleQualityConditionAppearanceStorageCropRepackTrans ModeUnnamed: 24Unnamed: 25
0BALTIMORENaN24 inch binsNaNNaNNaN4/29/17270.0280.0270.0...NaNNaNNaNNaNNaNNaNENaNNaNNaN
1BALTIMORENaN24 inch binsNaNNaNNaN5/6/17270.0280.0270.0...NaNNaNNaNNaNNaNNaNENaNNaNNaN
2BALTIMORENaN24 inch binsHOWDEN TYPENaNNaN9/24/16160.0160.0160.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
3BALTIMORENaN24 inch binsHOWDEN TYPENaNNaN9/24/16160.0160.0160.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
4BALTIMORENaN24 inch binsHOWDEN TYPENaNNaN11/5/1690.0100.090.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
\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", @@ -71,241 +212,412 @@ "4 NaN NaN NaN N NaN NaN NaN \n", "\n", "[5 rows x 26 columns]" - ], - "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
City NameTypePackageVarietySub VarietyGradeDateLow PriceHigh PriceMostly Low...Unit of SaleQualityConditionAppearanceStorageCropRepackTrans ModeUnnamed: 24Unnamed: 25
0BALTIMORENaN24 inch binsNaNNaNNaN4/29/17270.0280.0270.0...NaNNaNNaNNaNNaNNaNENaNNaNNaN
1BALTIMORENaN24 inch binsNaNNaNNaN5/6/17270.0280.0270.0...NaNNaNNaNNaNNaNNaNENaNNaNNaN
2BALTIMORENaN24 inch binsHOWDEN TYPENaNNaN9/24/16160.0160.0160.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
3BALTIMORENaN24 inch binsHOWDEN TYPENaNNaN9/24/16160.0160.0160.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
4BALTIMORENaN24 inch binsHOWDEN TYPENaNNaN11/5/1690.0100.090.0...NaNNaNNaNNaNNaNNaNNNaNNaNNaN
\n

5 rows ร— 26 columns

\n
" + ] }, + "execution_count": 167, "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", + "from datetime import datetime\n", "\n", "pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n", - "\n", - "pumpkins.head()\n" + "pumpkins.head()" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 168, "metadata": {}, "outputs": [ { - "output_type": "execute_result", "data": { - "text/plain": [ - " Month Variety City Package Low Price High Price Price\n", - "70 1 3 1 0 5 3 13.636364\n", - "71 1 3 1 0 10 7 16.363636\n", - "72 2 3 1 0 10 7 16.363636\n", - "73 2 3 1 0 9 6 15.454545\n", - "74 2 3 1 0 5 3 13.636364" + "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", + "
MonthDayOfYearVarietyCityPackageLow PriceHigh PricePrice
709267PIE TYPEBALTIMORE1 1/9 bushel cartons15.015.013.636364
719267PIE TYPEBALTIMORE1 1/9 bushel cartons18.018.016.363636
7210274PIE TYPEBALTIMORE1 1/9 bushel cartons18.018.016.363636
7310274PIE TYPEBALTIMORE1 1/9 bushel cartons17.017.015.454545
7410281PIE TYPEBALTIMORE1 1/9 bushel cartons15.015.013.636364
\n", + "
" ], - "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
MonthVarietyCityPackageLow PriceHigh PricePrice
7013105313.636364
71131010716.363636
72231010716.363636
7323109615.454545
7423105313.636364
\n
" + "text/plain": [ + " Month DayOfYear Variety City Package Low Price \\\n", + "70 9 267 PIE TYPE BALTIMORE 1 1/9 bushel cartons 15.0 \n", + "71 9 267 PIE TYPE BALTIMORE 1 1/9 bushel cartons 18.0 \n", + "72 10 274 PIE TYPE BALTIMORE 1 1/9 bushel cartons 18.0 \n", + "73 10 274 PIE TYPE BALTIMORE 1 1/9 bushel cartons 17.0 \n", + "74 10 281 PIE TYPE BALTIMORE 1 1/9 bushel cartons 15.0 \n", + "\n", + " High Price Price \n", + "70 15.0 13.636364 \n", + "71 18.0 16.363636 \n", + "72 18.0 16.363636 \n", + "73 17.0 15.454545 \n", + "74 15.0 13.636364 " + ] }, + "execution_count": 168, "metadata": {}, - "execution_count": 2 + "output_type": "execute_result" } ], "source": [ - "from sklearn.preprocessing import LabelEncoder\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']\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", + "day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days)\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 = pd.DataFrame(\n", + " {'Month': month, \n", + " 'DayOfYear' : day_of_year, \n", + " 'Variety': pumpkins['Variety'], \n", + " 'City': pumpkins['City Name'], \n", + " 'Package': pumpkins['Package'], \n", + " 'Low Price': pumpkins['Low Price'],\n", + " 'High Price': pumpkins['High Price'], \n", + " 'Price': price})\n", "\n", "new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/1.1\n", - "\n", "new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price*2\n", "\n", - "new_pumpkins.iloc[:, 0:-1] = new_pumpkins.iloc[:, 0:-1].apply(LabelEncoder().fit_transform)\n", - "\n", "new_pumpkins.head()\n" ] }, { + "cell_type": "markdown", + "metadata": {}, "source": [ "A 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": "markdown", - "metadata": {} + ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 169, "metadata": {}, "outputs": [ { - "output_type": "execute_result", "data": { "text/plain": [ - "" + "" ] }, + "execution_count": 169, "metadata": {}, - "execution_count": 3 + "output_type": "execute_result" }, { - "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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", - "image/png": "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\n" + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX4AAAEGCAYAAABiq/5QAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAkT0lEQVR4nO3dfXRV9Z3v8fc3EB7kYcAQA+Wh0IZSUWLqzWVARi+W+lQdodXOtHcQZ41dOGumc1tn5graXqc67Ywybe2009Urtb3F2mnrkhYVtEIj1NoRNTAQEFQyhRpoCBihgEJIyPf+cXZiHs5Jzsbss0/O/rzWOivnfM/Z53zdhm9+57d/D+buiIhIchTFnYCIiOSWCr+ISMKo8IuIJIwKv4hIwqjwi4gkzOC4E8jGuHHjfOrUqXGnISIyoGzZsuUNdy/tHh8QhX/q1KnU1NTEnYaIyIBiZr9NF1dXj4hIwqjwi4gkjAq/iEjCqPCLiCSMCr+ISMKo8EuHphPNbK8/StOJ5rhTEZEIDYjhnBK9x7YdYNnqWoqLimhpa2PFDRVcXzkx7rREJAJq8QtNJ5pZtrqWUy1tHG9u5VRLG7evrlXLX6RAqfAL+4+cpLio669CcVER+4+cjCkjEYmSCr8waexwWtrausRa2tqYNHZ4TBmJSJRU+IWSkUNZcUMFQwcb5xQPYuhgY8UNFZSMHBp3aiISARV+ASC1AaeBBT9FpGBFWvjNbJ+Z7TCzbWZWE8TONbMNZrYn+Dk2yhykb+0Xd5tb23j79BmaW3VxV6SQ5aLFf7m7V7p7VfB4OVDt7tOB6uCxxEgXd0WSJY6unoXAquD+KmBRDDlIJ7q4K5IsURd+B9ab2RYzWxrEyty9ASD4eV7EOUgf2i/uDisuYtTQwQwrLtLFXZECFvXM3Xnu/jszOw/YYGavZHtg8IdiKcCUKVOiyk8C11dOZF75OPYfOcmkscNV9EUKWKQtfnf/XfDzEPAzYDbQaGYTAIKfhzIcu9Ldq9y9qrS0x85hEoGSkUO5aPIYFX2RAhdZ4TezEWY2qv0+cCWwE3gcuDl42c3AY1HlICIiPUXZ1VMG/MzM2j/n393952b2EvCImd0CvA58IsIcRESkm8gKv7v/BrgoTbwJWBDV54qISO80c1dEJGFU+KVDzd4mvrb+VWr2NsWdiohESBuxCACLH9zMc3Wpgv+NZ+q4tLyEH3x6TsxZiUgU1OIXavY2dRT9dr+qa1LLX6RAqfALz+55I1RcRAY2FX7hsunjQsVFZGBT4ReqppVwaXlJl9il5SVUTSvJcISIDGQq/ALAjVWTGTKoiCGDjCGDivhE1eS4UxKRiKjwS8dGLKfPtHH6jHP6jDZiESlkKvyijVjOUvWugyx7dDvVuw7GnYpIKBrHL9qI5Sxcef8mXmt8C4Cf1OxnRtkInr5tfqw5iWRLLX7p2IhlyCBj6OBUP782YsmsetfBjqLf7tXGt9TylwFDhV8AqNn3JqfPOM2tqX7+mt++GXdKeWv9rsZQcZF8o8Iv1DUe56HNr3eJPfT869Q1Ho8po/x25cyyUHGRfKPCL2yrPxoqnnQLZo5nRtmILrEZZSNYMHN8TBmJhKOLu0Ll5DGh4gJP3zaf6l0HWb+rkStnlqnoy4ASeYvfzAaZ2X+a2drg8RfN7ICZbQtuH406B+ldedkolsztuqH9krlTKC8bFVNGA8OCmeO578aLVPSz1HSime31RzU/JA/kosX/WWA3MLpT7H53/0oOPluydM/CWSyZM5Vt9UepnDxGRV/61WPbDrBsdS3FRUW0tLWx4oYKrq+cGHdaiRVpi9/MJgHXAg9G+TnSP8rLRnFj1WQVfelX7TPDT7W0cby5lVMtmhket6i7er4O3A60dYt/xsxqzex7ZjY23YFmttTMasys5vDhwxGnKSJR0czw/BNZ4Tez64BD7r6l21PfBt4PVAINwFfTHe/uK929yt2rSktLo0pTRCKmmeH5J8oW/zzgejPbB/wY+LCZPezuje5+xt3bgO8AsyPMQURi1j4zfFhxEaOGDmZYcZFmhscssou77n4HcAeAmc0H/t7dF5vZBHdvCF72MWBnVDmISH64vnIi88rHsf/ISSaNHa6iH7M4xvGvMLNKwIF9wK0x5CAiOVYycqgKfp7ISeF3903ApuD+Tbn4TBERSU9LNoiIJIwKv4hIwqjwi4gkjAq/iEjCqPCLiCSMCr+ISMKo8EsHLZsbztLvv8AHv/AkS7//QtypDAh1jcd5tKZeO7vlAW3EIoCWzQ1r6vJ1HffXv/IGU5evY9+918aYUX67a82OLtt7Lpk7hXsWzooxo2RTi1+0bG5ImVr4avmnpz2d848Kv2jZ3JCerWsKFU867emcf1T4RcvmhnRZeUmoeNJpT+f8o8IvWjY3pJV//oeh4kmnPZ3zj7l73Dn0qaqqymtqauJOo+A1nWjWsrkhLP3+Czxb18Rl5SUq+lmoazyuPZ1zzMy2uHtVj7gKv4hIYcpU+NXVIyKSMJEXfjMbZGb/aWZrg8fnmtkGM9sT/Ey72brkniZwhfPlJ3Yy959/wZef0CZy2ViztZ5Pr3qJNVvr404l8SLv6jGzvwWqgNHufp2ZrQDedPd7zWw5MNbdl/X2HurqiZ4mcIXzvuXr6DwOqgj4jSZwZTTnnzZw8NjpjscTRg/h+TuviDGjZIilq8fMJgHXAg92Ci8EVgX3VwGLosxB+qYJXOF8+YmdtHWLtQVx6WnN1vouRR+g4dhptfxjFHVXz9eB26HLv5Oy9s3Wg5/npTvQzJaaWY2Z1Rw+fDjiNJNNE7jCWbvzYKh40q3dkeF8ZYhL9CIr/GZ2HXDI3beczfHuvtLdq9y9qrS0tJ+zk840gSuc6y4cHyqedNfNynC+MsQlelG2+OcB15vZPuDHwIfN7GGg0cwmAAQ/D0WYg2RBE7jC+fwfX9jjH05REJeeFl08mQmjh3SJTRg9hEUXT44pI8nJOH4zmw/8fXBx91+Apk4Xd89199t7O14Xd3NDE7jC+fITO1m78yDXXTheRT8La7bWs3bHQa6bNV5FP0dincDVrfCXAI8AU4DXgU+4+5u9Ha/CLyISXqbCn5P1+N19E7ApuN8ELMjF54qISE+auSsikjAFXfg1EzWcBzbu4Zp/fZYHNu6JO5UBQVsJykBVsFsvaiZqOOd/4UlOtqau9+xuOM7Xq/ew+0sfjTmr/KWtBGUgK8gWv2aihvPAxj0dRb/dyVZXyz8DbSUoA11BFn7NRA1nTW1DqHjSaStBGegKsvBrJmo4iyomhIonnbYSlIGuIAu/ZqKGc+vl0xk+2LrEhg82br18ekwZ5TdtJSgDXUHvwKWZqOE8sHEPa2obWFQxQUU/C9pKUPKdtl4U6WdqWEi+i3Xmrkih0XBhGcgKso9fJEoaLiwDnQq/dFj0zV/yvuXrWPTNX8adSl7TcOGzo5n0+UNdPQLA1OXrOu5vO3CCqcvXsU97yKY1aexwjje3dokdb27VcOFeqGssv6jFLxlb+Gr5p/dnK/8jVDzp1DWWf1T4hdoDJ0LFk+6VQ2+HiiedusbyT5R77g4zsxfNbLuZvWxmdwfxL5rZATPbFty0EljMKiaODBVPug+ed06oeNJpJn3+ibLF3wx82N0vAiqBq81sTvDc/e5eGdyejDAHycKav/kfoeJJ9/O/vTxUPOnaZ9IPHVzUcdNM+nhFVvg9pb2voDi45f9ssYT6o/KSLo8v7fZY5N2o2fcmza1tHbea3/a626pELNI+fjMbZGbbgEPABnd/IXjqM2ZWa2bfM7OxUeYgfavZ28RzdU1dYr+qa6Jmb1OGI5Jt6fdfCBVPOi1jnX8iLfzufsbdK4FJwGwzuxD4NvB+Ut0/DcBX0x1rZkvNrMbMag4fPhxlmon37J43QsWT7tm69H8QM8WTTstY55+cjOpx96OkNlu/2t0bgz8IbcB3gNkZjlnp7lXuXlVaWpqLNBPrsunjQsWT7rIM3WCZ4kmnZazzT5SjekrNbExwfzjwEeAVM+u8yPvHgJ1R5SDZqZqWvmBliifdyj//w1DxpMu0cqlWNI1PlC3+CcBGM6sFXiLVx78WWGFmO4L45cBtEeYgWfj7n2wNFU+6//nAr0PFk06/X/knsiUb3L0W+FCa+E1RfaacnQ27D4WKJ92Lvz0aKp50+v3KP5q5K1xx/nmh4kk3+71jQsWTTr9f+UeFX/jKn14cKp50/37rvFDxpNPvV/5R4RcA/mDYoF4fi7wb40cP6fJ4QrfHklsq/MLD/7GX35860yX2+1NnePg/9saUUX6r+Id1oeJJt2ZrPQePne4Sazh2mjVb62PKSLIq/Gb2ATOrNrOdweMKM/tCtKlJrjxW2xAqnnTHMqwmnCmedGt3HAwVl+hl2+L/DnAH0AIdI3Y+GVVSklsLKyaEiifd6Axri2WKJ911s8aHikv0si3857j7i91irWlfKQPO4kumpe3jX3zJtJgyym+1d6ffmSxTPOkWXTy5R5/+hNFDWHTx5JgykmwL/xtm9n6C1TXN7EZS6+xIgVjYbRu8hR/Stni9+ddPVnZ5/I1uj6Wr5++8gq//SQUfOf88vv4nFTx/5xVxp5Ro5t73Sslm9j5gJXAJcATYCyx2932RZheoqqrympqaXHxUItU1Hucj9z/bI/6L2y7TtPo0mk40M+++ZzjV8s7mIsOKi/j1sg9rjXnJK2a2xd2rusezmrnr7r8BPmJmI4Aid9d6qgWkt9UTVfh7at9K8BTvFP72rQRV+GUgyHZUzz+Z2Rh3f8vdj5vZWDP7UtTJSW5o9cRwtJWgDHTZ9vFfEyytDIC7HwG0V26BGDtiCIOKrEtsUJExdoQm2aTTvpVgEWCk/hFpK8G+1TUe59Gaem3AkgeyXaRtkJkNdfdm6FhmWb/lBWL/kZMUGXSewlVkqOuiF/9nzY6Ojh4PHl9fqQvimdy1ZkeXXbiWzJ3CPQtnxZhRsmXb4n8YqDazW8zsL4ANwKro0pJcamk9Q8uZrhf5W844La1nMhyRbJrpHI62Xsw/WRV+d18BfBk4H7gA+McgJgXghb3pN77OFE86zXQOR1sv5p+s1+N396eApyLMRWRAWFgxgZf2HUkbl540eCD/9NriN7Pngp/HzexYp9txMzvWx7HDzOxFM9tuZi+b2d1B/Fwz22Bme4KfY/vvP0fOxlUXpJ86nymedJrpHE552SiWzJ3SJbZk7hQNFY5Rry1+d/+j4OfZ/B9qBj7s7ifMrBh4zsyeAj4OVLv7vWa2HFgOLDuL95d+oj1Rw0vXxy+Z3bNwFkvmTGVb/VEqJ4/R71bM+uzjN7Oi9lU5w/CUE8HD4uDmwELeuTC8ClgU9r2lf12+ojpUPOm05+7ZKS8bxY1Vk1X080Cfhd/d24DtZjalr9d2Z2aDzGwbcIjUZusvAGXu3hC8dwOQdv81M1tqZjVmVnP48OGwHy0h7H3zVKh40mnPXRnosh3OOQF4OViT//H2W18HufsZd68EJgGzzezCbBNz95XuXuXuVaWlpdkeJmdh2rnDQsWTTnvuykCX7aieu9/Nh7j7UTPbBFwNNJrZBHdvMLMJpL4NSIw23r6Aqct77h618fYFMWST//791nlpz5f23JWBoq9RPcPM7HPAJ4APAr9291+23/o4ttTMxgT3hwMfAV4BHgduDl52M/DYu/ovkH6x795rmRismT5x9BD23au15Xuz795ruWTaGAYXwSXTxuh8yYDSV4t/Faldt34FXAPMBD6b5XtPAFaZ2SBSf2Aecfe1ZvY88IiZ3QK8TuqPisTsrjU7OBDsi3rg2GnuemyHptT3QS18Gaj6Kvwz3X0WgJl9F+i+C1dGwfaMH0oTbwLUh5BHMk2pXzJnqkZgiBSgvi7utrTfcXdttVigNKVeJFn6avFf1GmGrgHDg8dGaqj+6Eizk5zQlPqz84Wfbueplxu55oIyvvTxi+JORyRrfc3cHdTb81IYystGMaNsBK82vtURm1E2Qt08veg8qufhF/fz8Iv7dYFXBoxsx/FLAatrPN6l6AO82viWls3N4As/3R4qLpJvVPhFffwhPfVyY6i4SL5R4RfGnlMcKp5011xQFioukm9U+IUjb7eEiiddpgu5usArA4UKv2hUz1nYd++1LJ49iZIRxSyePUkXdmVAyXoHLilc7RtlPPR8182wNaqnd1/6+EV86eNxZyESngq/ANooQyRJVPilQ3nZKBV8kQRQH7+ISMKo8EuHusbjPFpTr4lbIgVOXT0CpJZl7rxC55K5U7Qss0iBUotfMi7LrJa/SGGKrPCb2WQz22hmu83sZTP7bBD/opkdMLNtwe2jUeUg2dGSDSLJEmVXTyvwd+6+1cxGAVvMbEPw3P3u/pUIP1tC0AQukWSJrPC7ewPQENw/bma7gYlRfZ6cvbEjhqQ2WOgUsyAuIoUnJ338ZjaV1DaMLwShz5hZrZl9z8zGZjhmqZnVmFnN4cOHc5FmYu0/cpKRQ7u2AUYOHcz+IydjykhEohR54TezkcBq4HPufgz4NvB+oJLUN4KvpjvO3Ve6e5W7V5WWlkadZqJNGjuclra2LrGWtjYmjR0eU0YiEqVIC7+ZFZMq+j90958CuHuju59x9zbgO8DsKHOQvpWMHMqKGyoYbDDIYLDBihsqKBk5NO7URCQCUY7qMeC7wG53/1qn+IROL/sYsDOqHCR7/7ZxD60OZxxaHb61cU/cKYlIRKIc1TMPuAnYYWbbgtidwKfMrJLUtcR9wK0R5iBZqN51kNfSbL1YvesgC2aOjykrEYlKlKN6niM1OKS7J6P6TDk763el3zJw/a5GFX6RAqSZu8KVM9NvGZgpLiIDmwq/sGDmeGaUjegSm1E2Qq19kQKlRdoEgKdvm0/1roOs39XIlTPLVPRFCpgKv3RYMHO8Cr5IAqirR0QkYVT4RUQSRoVfOmgHLpFkUB+/ANqBSyRJ1OIX7cAlkjAq/KIduEQSRoVftAOXSMKo8AvlZaNYMndKl9iSuVMoLxsVU0YiEiVd3BUA7lk4iyVzprKt/iiVk8eo6IsUMBV+6VBeNkoFPwQtcRGOzld4TSea2X/kJJPGDu/XjZFU+EXOwpX3b+rYw+AnNfuZUTaCp2+bH2tO+UznK7zHth1g2epaiouKaGlrY8UNFVxfObFf3jvKHbgmm9lGM9ttZi+b2WeD+LlmtsHM9gQ/0262LpKvetu4RnrS+Qqv6UQzy1bXcqqljePNrZxqaeP21bU0nWjul/eP8uJuK/B37n4+MAf4azObCSwHqt19OlAdPJY8ULO3ia+tf5WavU1xp5LXetu4RnrS+Qpv/5GTFBd1Lc/FRUXsP3KyX94/ssLv7g3uvjW4fxzYDUwEFgKrgpetAhZFlYNkb/GDm7nxgc1845k6bnxgMzc9uDnulPKWNq4JR+crvEljh9PS1tYl1tLWxqSxw/vl/XMynNPMpgIfAl4Ayty9AVJ/HIDzcpGDZFazt4nn6rq28n9V16SWfwbauCYcna/wSkYOZcUNFQwrLmLU0MEMKy5ixQ0V/XaBN/KLu2Y2ElgNfM7dj5ml24Y37XFLgaUAU6ZM6ePV8m48u+eNjPGqaSU5zmZg0MY14eh8hXd95UTmlY+LZFSPuXu/vVmPNzcrBtYCT7v714LYq8B8d28wswnAJnef0dv7VFVVeU1NTWR5Jl3N3iZufKBn186jt85R4RcZwMxsi7tXdY9HOarHgO8Cu9uLfuBx4Obg/s3AY1HlINmpmlbCpeVdC/yl5SUq+n1Ys7WeT696iTVb6+NOZUBoOtHM9vqj/TYyRc5elF0984CbgB1mti2I3QncCzxiZrcArwOfiDAHydKeQ11X4qw7pJU5ezPnnzZw8NhpAH6x+xD3/fwVnr/zipizyl9RjkmX8KIc1fOcu5u7V7h7ZXB70t2b3H2Bu08Pfr4ZVQ6SnTVb6zuKWLuGY6fVks1A5yucqMekS3gFvUibvlpmZ+2O9BNpMsWTTucrnKjHpEt4BVv4H9t2gHn3PcPiB19g3n3P8Pi2A3GnlLeum5V+hEWmeNLpfIUT9Zh0Ca8gC7++WobT+PtToeJJt+jiyUwYPaRLbMLoISy6eHJMGeW3qMekS3gFuUhb+1fLU7zTymj/aqlftp7W1DZkjN96+fQcZzMwPH/nFazZWs/aHQe5btZ4Ff0+RDkmXcIryMKvr5bhLKqYwO6GnqN4FlVMiCGbgWPRxZNV8EMoGTlUBT9PFGRXT/tXy6GDjXOKBzF0sOmrZS9uvXw6wwd3nVE9fLCptS9SoAqy8AOk5iMbWPBTevXfpp7b5XFVt8fSk1YzDaeu8TiP1tRT16g5InEryK6e9ou7za3vdPfcvrqWeeXj1OpPo7dF2jR7N73FD27uOGffeKaOS8tL+MGn58ScVf66a80OHtr8esfjJXOncM/CWTFmlGwF2eLXuOFwelukTXrSaqbh1DUe71L0AR56/nW1/GNUkIVfF3fDuWz6uFDxpNMfynC21R8NFZfoFWTh17jhcDJ156ibJz39oQyncvKYUHGJXkH28YPGDYfx5Sd2Zox//o8vzHE2+e9Xrx3KGNcfy57Ky0axZO4UHnq+ax9/edmoGLNKtoIt/KBxw9lauzPD2jM7D6rwp/HIlv0Z47dddX6OsxkY7lk4iyVzprKt/iiVk8eo6MesILt6JJzrLsyw9kyGeNJNGnNOqLiklJeN4saqySr6eUCFX/jT2e8NFU+68d3W6ekrLil/8/BLXHDXU/zNwy/FncqAUb3rIMse3U71rv5d+bWgu3okO8/VHc4YV+usp5r634eKC0xdvq7j/hM7D/HE8nXsu/faGDPKf1fev4nXGt8C4Cc1+5lRNoKnb5vfL+8d5daL3zOzQ2a2s1Psi2Z2wMy2BbePRvX5kr2jb7eEiifdmdYzoeJJl6mFr5Z/ZtW7DnYU/XavNr7Vby3/KLt6vg9cnSZ+f+cduSL8fMnSW6dbQ8WTrunt9OclUzzpnnkt/fyGTHGB9bsaQ8XDinLrxWcBbas4AFw1M/1F3EzxpJv1npGh4kn34Q+kn9+QKS5w5cyyUPGw4ri4+xkzqw26gsZmepGZLTWzGjOrOXw4fR+09I+qaSVpV+fUmPT07l50Uah40n1z8X8PFRdYMHM8M8pGdInNKBvBgn5qjOW68H8beD9QCTQAX830Qndf6e5V7l5VWlqao/SSqXrXQU62epfYyVbv95EEhWLS2OEMK+76T2dYcZGWBOnFvnuvpXxc6vyUjxuuC7tZePq2+dxx1Qc4f8Io7rjqA/12YRdyXPjdvdHdz7h7G/AdYHYuP1/Si7o/sdCUjBzKqZaua0GdamnTZMFeTL9jHXVvpBZJrHvjJNPvWNfHEbL4wc3889OvsbvhOP/89Gvc9ODmfnvvnBZ+M+u8pdPHgPRrBUhOzXrP6FDxpPvCT7eHiifd/U/vpqXrF0paPBWX9KJeATbK4Zw/Ap4HZpjZfjO7BVhhZjvMrBa4HLgtqs+X7A0bkn46R6Z40j31cvpvQpniSfdYbfouw0xxiX4F2ChH9XzK3Se4e7G7T3L377r7Te4+y90r3P16d0+/y7fklFZPDOeaC9KPrMgUT7qFFekvSGaKS/QrwGrJBpGQLv9g+gKfKZ50mRau04J2mVVNK+HS8q6j6i4tL+m3kXb6Li+9bpShJRt66u1ieH8NtyskmUaHVe86qPPVix98eg41e5t4ds8bXDZ9XL8Or1aLX9TVE1LUk2sKjUaNnb2qaSX87ZUz+n1OjQq/dGyU0Zk2ysgs6sk1hUZ/KPOPuXvfr4pZVVWV19TUxJ1GwatrPK6NMkKo3nWQ9bsauXJmmYp+H666fxOvdlp0rD9XmpTMzGyLu1f1iKvwi0gu6A9l7mUq/Lq4K3KWmk40a0/nEBbMHK+CnydU+EXOwmPbDrBsdS3FRUW0tLWx4oYKrq+cGHdaIlnRxV2RkJpONLNsdS2nWto43tzKqZY2bl9dS9OJ5rhTE8mKCr9ISPuPnKS4qOs/neKiIvYfORlTRiLhqPCLhDRp7HBa2rquztnS1qZlmWXAUOEXCalk5FBW3FBBcREMKoLiIlhxQ4Uu8Pah6UQz2+uPqkssD+jirshZ+LeNe2hfkv8M8K2Ne3Rxtxe6GJ5f1OIXCal610Fe6zQZCeDVxre0Y1kGuhief1T4RULS2jPh6GJ4/olyI5bvmdkhM9vZKXaumW0wsz3Bz4ybrYvkK609E44uhuefKFv83weu7hZbDlS7+3SgOngsMqBokbZw2i+GDysuYtTQwQwrLtLF8JhFulaPmU0F1rr7hcHjV4H57t4Q7L+7yd1n9PU+WqtH8pHWnglHS1zkXr6s1VPWvt1iUPzPy/RCM1sKLAWYMmVKppeJxEZrz4RTMnKoCn6eyNuLu+6+0t2r3L2qtLQ07nRERApGrgt/Y9DFQ/DzUI4/X0Qk8XJd+B8Hbg7u3ww8luPPFxFJvCiHc/4IeB6YYWb7zewW4F7gCjPbA1wRPBYRkRyK7OKuu38qw1MLovpMERHp24DYetHMDgO/PcvDxwFv9GM6/UV5haO8wlFe4eRrXvDucnuvu/cYHTMgCv+7YWY16caxxk15haO8wlFe4eRrXhBNbnk7nFNERKKhwi8ikjBJKPwr404gA+UVjvIKR3mFk695QQS5FXwfv4iIdJWEFr+IiHSiwi8ikjAFU/jN7DYze9nMdprZj8xsWLfnzcy+YWZ1ZlZrZhfnSV7zzez3ZrYtuN2Vo7w+G+T0spl9Ls3zcZ2vvvLKyfl6NxsJmdnVZvZqcO76dc+Jd5nXPjPbEZy3fl3nPENenwj+P7aZWcbhiDGcr2zzyvX5+hczeyX49/YzMxuT4dh3f77cfcDfgInAXmB48PgR4M+7veajwFOAAXOAF/Ikr/mk9izI5fm6ENgJnENq9vYvgOl5cL6yySsn5wu4DLgY2NkptgJYHtxfDtyX5rhBwH8B7wOGANuBmXHnFTy3DxiXw/N1PjAD2ARUZTgujvPVZ14xna8rgcHB/fui/P0qmBY/qUIx3MwGkyocv+v2/ELgIU/ZDIxpXyk05rzicD6w2d3fdvdW4JfAx7q9Jo7zlU1eOeHuzwJvdgsvBFYF91cBi9IcOhuoc/ffuPtp4MfBcXHnFal0ebn7bnd/tY9Dc36+sswrUhnyWh/83gNsBialObRfzldBFH53PwB8BXgdaAB+7+7ru71sIlDf6fH+IBZ3XgBzzWy7mT1lZhdEmVNgJ3CZmZWY2TmkWveTu70m5+cry7wg9+erXZeNhIB0GwnFcd6yyQvAgfVmtsVSGx3lgzjOV7biPF9/Qeobd3f9cr4KovAHfZoLgWnAe4ARZra4+8vSHBrpWNYs89pKaj2Ni4BvAmuizAlSLR5SXyU3AD8n9XWxtdvLcn6+sswr5+crpJyftxDmufvFwDXAX5vZZXEnhM5XD2b2eVK/9z9M93SaWOjzVRCFH/gIsNfdD7t7C/BT4JJur9lP19bjJKLvdukzL3c/5u4ngvtPAsVmNi7ivHD377r7xe5+GamvnHu6vSSO89VnXnGdr0A2GwnFcd6y2uDI3X8X/DwE/IxUt0HcYvk9y0Yc58vMbgauA/7Mg079bvrlfBVK4X8dmGNm55iZkVr6eXe31zwOLAlGq8wh1e3SEHdeZjY+eA4zm03q/0lTxHlhwX7HZjYF+Djwo24vieN89ZlXXOcrkM1GQi8B081smpkNAT4ZHBdrXmY2wsxGtd8ndSFxZ/fXxSCO89WnOM6XmV0NLAOud/e3M7ysf85XFFes47gBdwOvkPqf8wNgKPCXwF8GzxvwLVJXxHfQy9X8HOf1GeBlUt0am4FLcpTXr4BdwecuCGL5cL76yisn54vUH5wGoIVUK+sWoASoJvUtpBo4N3jte4AnOx37UeC14Nx9Ph/yIjUKZHtwezlHeX0suN8MNAJP58n56jOvmM5XHan++23B7f9Gdb60ZIOISMIUSlePiIhkSYVfRCRhVPhFRBJGhV9EJGFU+EVEEkaFXwQwMzezH3R6PNjMDpvZ2rN8vzFm9ledHs8/2/cS6W8q/CIpbwEXmtnw4PEVwIF38X5jgL/q60UicVDhF3nHU8C1wf1P0WnWsKXWvF8TrJW+2cwqgvgXg7XVN5nZb8zsfwWH3Au8P1jL/V+C2EgzezRYc/2H7TOQRXJNhV/kHT8GPmmpzXIqgBc6PXc38J/uXgHcCTzU6bkPAleRWsvlH8ysmNS6+P/l7pXu/r+D130I+Bwwk9TM0HkR/reIZKTCLxJw91pgKqnW/pPdnv4jUktu4O7PACVm9gfBc+vcvdnd3yC1QFpZho940d33u3sbqSn5U/v1P0AkS4PjTkAkzzxOag+F+aTWwGnX23K4zZ1iZ8j87yrb14lESi1+ka6+B9zj7ju6xZ8F/gxSI3SAN9z9WC/vcxwYFUWCIu+WWhwinbj7fuBf0zz1ReD/mVkt8DbvLIOc6X2azOzXwWbaTwHr+jtXkbOl1TlFRBJGXT0iIgmjwi8ikjAq/CIiCaPCLyKSMCr8IiIJo8IvIpIwKvwiIgnz/wEDeg/76NO6rgAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] }, "metadata": { "needs_background": "light" - } + }, + "output_type": "display_data" } ], "source": [ - "import matplotlib.pyplot as plt\n", - "plt.scatter('Month','Price',data=new_pumpkins)" + "new_pumpkins.plot.scatter('Month','Price')" ] }, { - "source": [ - "Try some different correlations" + "cell_type": "code", + "execution_count": 170, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 170, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } ], + "source": [ + "new_pumpkins.plot.scatter('DayOfYear','Price')" + ] + }, + { "cell_type": "markdown", - "metadata": {} + "metadata": {}, + "source": [ + "Let's see if there is correlation:" + ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 171, "metadata": {}, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ - "0.3236397181608923\n0.6061712937226016\n" + "-0.14878293554077535\n", + "-0.16673322492745407\n" ] } ], "source": [ - "print(new_pumpkins['City'].corr(new_pumpkins['Price']))\n", - "\n", - "print(new_pumpkins['Package'].corr(new_pumpkins['Price']))\n" + "print(new_pumpkins['Month'].corr(new_pumpkins['Price']))\n", + "print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price']))" ] }, { - "source": [ - "Drop unused columns" - ], "cell_type": "markdown", - "metadata": {} + "metadata": {}, + "source": [ + "Looks like correlation is pretty small, but there is some other more important relationship - because price points in the plot above seem to have several distinct clusters. Let's make a plot that will show different pumpkin varieties: " + ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 172, "metadata": {}, "outputs": [ { - "output_type": "stream", - "name": "stdout", - "text": [ - "\nInt64Index: 415 entries, 70 to 1742\nData columns (total 7 columns):\n # Column Non-Null Count Dtype \n--- ------ -------------- ----- \n 0 Month 415 non-null int64 \n 1 Variety 415 non-null int64 \n 2 City 415 non-null int64 \n 3 Package 415 non-null int64 \n 4 Low Price 415 non-null int64 \n 5 High Price 415 non-null int64 \n 6 Price 415 non-null float64\ndtypes: float64(1), int64(6)\nmemory usage: 25.9 KB\n" - ] + "data": { + "image/png": "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5sxSZs68nu9975ccemg3RBzH3RbOOOMMrr32Wh577DHASb8sEnpOPGmZVRv1hg8/kZqaLyPqff755yxbtozbbrutwTZt2jSWLl3KF198wbx58zj55JMZP348AB07duThhx9ueNIAOPXUU1m8eDH79u1jx44dfP755xQWFja7V5cuXTjttNNYsGBBg+2pp55q+Fs/99xznHfeeVxyySURZ0kfffTRdOzYkc2bN0f7Z4mJDRs20KdPn4bjEfE+ymKO30gCBQXN/+H37XPsXjF5cnT21ojUqnfs5UB/YJy7bz1u1bKeQ72z2b17NytWrOCEE06IqHfZZcVs27aZnTu3ce65TohI1Vl0/eabb24IF0yZMiWixvHHH88nn3wCOD/MwZP4y8vv55JLCjnpJEdn/fr1De8Fp5AuLCxk/vz5zbRFGvXee+9VvvnNyRHTPK9evbohDFJPfUhk1apVrFq1ilGjRoVcM3DgQHbs2MG2bdvc+wljx47ltdde48UXX2TixIkR611cXNzg1NevX8+aNWsa0krX/+AWFxdHXAPhgw8+4Oijj+awww4L+/6UKVMa/jY333xzxHKEI9xnd/3111NSUsIZZ5zBHXfcEfJZxIqFeoyEk5/vxN1LSpyW/r59zrGXyyxMmODE+INWG2T48NjCPOA45EAgNDwTCEC3bjVACVDnbrjHY4HIFYqs13g8YsQIKisrKS8vbzWOu3HjOrZu/TcHDgh79uwgEOhM//6O448U6mlKcLqW3Fyn76WqynHal156I7fddhM9ezrvFwT9Src11HPDDWfw739vpEePw7j++hkR0zyrKtL0cSPIHul9IMR+ySWX8OCDD7J161buvfdefv3rX4e9ZsKECVx33XVs27aNp59+mosuuoicnBw2btzI559/zimnnIKI0L59e1auXMmwYcMAJzfR448/zj/+8Q9effXViPUOF+ppK+E+u29961sN93zllVc47rjjWLlyJfGsU2ItfiMpFBc7TmXhQmcfIYoRFytWwIIFzg/MggXOcTwceywMGuQsjj5okHMMlUDTZmuua49FL5SJEydy0003RQzz1DN16lR++cvpFBdfzDPP/BfDh9PgpNvKhx9+GJLbpWdPGnR6945eryl//esiKiurGDnyWJ59dlpEvWOPPZYPP/yQg0FxqoMHD/LRRx8xZMgQjj32WJrm6vrH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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" } ], "source": [ - "\n", - "new_pumpkins.dropna(inplace=True)\n", - "new_pumpkins.info()\n", - "\n", - "\n" + "ax=None\n", + "colors = ['red','blue','green','yellow']\n", + "for i,var in enumerate(new_pumpkins['Variety'].unique()):\n", + " ax = new_pumpkins[new_pumpkins['Variety']==var].plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var)" ] }, { - "source": [ - "Create a new dataframe" + "cell_type": "code", + "execution_count": 173, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 173, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } ], + "source": [ + "new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar')" + ] + }, + { "cell_type": "markdown", - "metadata": {} + "metadata": {}, + "source": [ + "For the time being, let's concentrate only on one variety - **pie type**." + ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 174, "metadata": {}, "outputs": [ { - "output_type": "execute_result", + "name": "stdout", + "output_type": "stream", + "text": [ + "-0.2669192282197318\n" + ] + }, + { "data": { "text/plain": [ - " Package Price\n", - "70 0 13.636364\n", - "71 0 16.363636\n", - "72 0 16.363636\n", - "73 0 15.454545\n", - "74 0 13.636364\n", - "... ... ...\n", - "1738 2 30.000000\n", - "1739 2 28.750000\n", - "1740 2 25.750000\n", - "1741 2 24.000000\n", - "1742 2 24.000000\n", - "\n", - "[415 rows x 2 columns]" - ], - "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
PackagePrice
70013.636364
71016.363636
72016.363636
73015.454545
74013.636364
.........
1738230.000000
1739228.750000
1740225.750000
1741224.000000
1742224.000000
\n

415 rows ร— 2 columns

\n
" + "" + ] }, + "execution_count": 174, "metadata": {}, - "execution_count": 6 + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" } ], "source": [ - "new_columns = ['Package', 'Price']\n", - "lin_pumpkins = new_pumpkins.drop([c for c in new_pumpkins.columns if c not in new_columns], axis='columns')\n", - "\n", - "lin_pumpkins\n" + "pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE']\n", + "print(pie_pumpkins['DayOfYear'].corr(pie_pumpkins['Price']))\n", + "pie_pumpkins.plot.scatter('DayOfYear','Price')" ] }, { - "source": [ - "Set X and y arrays to correspond to Package and Price" - ], "cell_type": "markdown", - "metadata": {} + "metadata": {}, + "source": [ + "### Linear Regression\n", + "\n", + "We will use Scikit Learn to train linear regression model:" + ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 175, "metadata": {}, "outputs": [], "source": [ - "X = lin_pumpkins.values[:, :1]\n", - "y = lin_pumpkins.values[:, 1:2]\n" + "from sklearn.linear_model import LinearRegression\n", + "from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error\n", + "from sklearn.model_selection import train_test_split" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 176, "metadata": {}, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ - "Model Accuracy: 0.3315342327998989\n" + "Mean error: 2.77 (17.2%)\n" ] } ], "source": [ - "from sklearn.linear_model import LinearRegression\n", - "from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error\n", - "from sklearn.model_selection import train_test_split\n", - "\n", + "X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)\n", + "y = pie_pumpkins['Price']\n", "\n", "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)\n", "lin_reg = LinearRegression()\n", @@ -313,222 +625,442 @@ "\n", "pred = lin_reg.predict(X_test)\n", "\n", - "accuracy_score = lin_reg.score(X_train,y_train)\n", - "print('Model Accuracy: ', accuracy_score)" + "mse = np.sqrt(mean_squared_error(y_test,pred))\n", + "print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')\n" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 177, "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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", - "image/png": "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\n" + "text/plain": [ + "[]" + ] + }, + "execution_count": 177, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] }, "metadata": { "needs_background": "light" - } + }, + "output_type": "display_data" } ], "source": [ - "\n", - "plt.scatter(X_test, y_test, color='black')\n", - "plt.plot(X_test, pred, color='blue', linewidth=3)\n", - "\n", - "plt.xlabel('Package')\n", - "plt.ylabel('Price')\n", - "\n", - "plt.show()\n", - "\n" + "plt.scatter(X_test,y_test)\n", + "plt.plot(X_test,pred)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The slope of the line can be determined from linear regression coefficients:" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 178, "metadata": {}, "outputs": [ { - "output_type": "execute_result", "data": { "text/plain": [ - "array([[33.15655975]])" + "(array([-0.01751876]), 21.133734359909326)" ] }, + "execution_count": 178, "metadata": {}, - "execution_count": 10 + "output_type": "execute_result" } ], "source": [ - "lin_reg.predict( np.array([ [2.75] ]) )" + "lin_reg.coef_, lin_reg.intercept_" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can use the trained model to predict price:" ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 179, "metadata": {}, "outputs": [ { - "output_type": "execute_result", "data": { "text/plain": [ - " Month Variety City Package Price\n", - "70 1 3 1 0 13.636364\n", - "71 1 3 1 0 16.363636\n", - "72 2 3 1 0 16.363636\n", - "73 2 3 1 0 15.454545\n", - "74 2 3 1 0 13.636364\n", - "... ... ... ... ... ...\n", - "1738 1 1 9 2 30.000000\n", - "1739 1 1 9 2 28.750000\n", - "1740 1 1 9 2 25.750000\n", - "1741 1 1 9 2 24.000000\n", - "1742 1 1 9 2 24.000000\n", - "\n", - "[415 rows x 5 columns]" - ], - "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
MonthVarietyCityPackagePrice
70131013.636364
71131016.363636
72231016.363636
73231015.454545
74231013.636364
..................
1738119230.000000
1739119228.750000
1740119225.750000
1741119224.000000
1742119224.000000
\n

415 rows ร— 5 columns

\n
" + "array([16.64893156])" + ] }, + "execution_count": 179, "metadata": {}, - "execution_count": 11 + "output_type": "execute_result" } ], "source": [ - "new_columns = ['Variety', 'Package', 'City', 'Month', 'Price']\n", - "poly_pumpkins = new_pumpkins.drop([c for c in new_pumpkins.columns if c not in new_columns], axis='columns')\n", + "# Pumpkin price on programmer's day\n", + "\n", + "lin_reg.predict([[256]])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Polynomial Regression\n", + "\n", + "Sometimes the relationship between features and the results is inherently non-linear. For example, pumpkin prices might be high in winter (months=1,2), then drop over summer (months=5-7), and then rise again. Linear regression is unable to fin this relationship accurately.\n", "\n", - "poly_pumpkins" + "In this case, we may consider adding extra features. Simple way is to use polynomials from input features, which would result in **polynomial regression**. In Scikit Learn, we can automatically pre-compute polynomial features using pipelines: " ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 180, "metadata": {}, "outputs": [ { - "output_type": "execute_result", + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean error: 2.73 (17.0%)\n", + "Model determination: 0.07639977655280217\n" + ] + }, + { "data": { "text/plain": [ - "" - ], - "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
Month Variety City Package Price
Month1.0000000.171330-0.188728-0.144847-0.148783
Variety0.1713301.000000-0.248441-0.614855-0.863479
City-0.188728-0.2484411.0000000.3016040.323640
Package-0.144847-0.6148550.3016041.0000000.606171
Price-0.148783-0.8634790.3236400.6061711.000000
" + "[]" + ] }, + "execution_count": 180, "metadata": {}, - "execution_count": 12 + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" } ], "source": [ - "corr = poly_pumpkins.corr()\n", - "corr.style.background_gradient(cmap='coolwarm')" + "from sklearn.preprocessing import PolynomialFeatures\n", + "from sklearn.pipeline import make_pipeline\n", + "\n", + "pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())\n", + "\n", + "pipeline.fit(X_train,y_train)\n", + "\n", + "pred = pipeline.predict(X_test)\n", + "\n", + "mse = np.sqrt(mean_squared_error(y_test,pred))\n", + "print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')\n", + "\n", + "score = pipeline.score(X_train,y_train)\n", + "print('Model determination: ', score)\n", + "\n", + "plt.scatter(X_test,y_test)\n", + "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))" ] }, { - "source": [ - "Select the Package/Price columns" - ], "cell_type": "markdown", - "metadata": {} + "metadata": {}, + "source": [ + "### Encoding varieties\n", + "\n", + "In the ideal world, we want to be able to predict prices for different pumpkin varieties using the same model. To take variety into account, we first need to convert it to numeric form, or **encode**. There are several way we can do it:\n", + "\n", + "* Simple numeric encoding that will build a table of different varieties, and then replace variety name by an index in that table. This is not the best idea for linear regression, because linear regression takes the numeric value of the index into account, and the numeric value is likely not to correlate numerically with the price.\n", + "* One-hot encoding, which will replace `Variety` column by 4 different columns, one for each variety, that will contain 1 if the corresponding row is of given variety, and 0 otherwise.\n", + "\n", + "The code below shows how we can can one-hot encode a variety:" + ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 181, "metadata": {}, - "outputs": [], + "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", + "
FAIRYTALEMINIATUREMIXED HEIRLOOM VARIETIESPIE TYPE
700001
710001
720001
730001
740001
...............
17380100
17390100
17400100
17410100
17420100
\n", + "

415 rows ร— 4 columns

\n", + "
" + ], + "text/plain": [ + " FAIRYTALE MINIATURE MIXED HEIRLOOM VARIETIES PIE TYPE\n", + "70 0 0 0 1\n", + "71 0 0 0 1\n", + "72 0 0 0 1\n", + "73 0 0 0 1\n", + "74 0 0 0 1\n", + "... ... ... ... ...\n", + "1738 0 1 0 0\n", + "1739 0 1 0 0\n", + "1740 0 1 0 0\n", + "1741 0 1 0 0\n", + "1742 0 1 0 0\n", + "\n", + "[415 rows x 4 columns]" + ] + }, + "execution_count": 181, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "X=poly_pumpkins.iloc[:,3:4].values\n", - "y=poly_pumpkins.iloc[:,4:5].values\n" + "pd.get_dummies(new_pumpkins['Variety'])" ] }, { - "source": [ - "Create Polynomial Regression model" - ], "cell_type": "markdown", - "metadata": {} + "metadata": {}, + "source": [ + "### Linear Regression on Variety \n", + "\n", + "We will now use the same code as above, but instead of `DayOfYear` we will use our one-hot-encoded variety as input:" + ] }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 182, + "metadata": {}, + "outputs": [], + "source": [ + "X = pd.get_dummies(new_pumpkins['Variety'])\n", + "y = new_pumpkins['Price']" + ] + }, + { + "cell_type": "code", + "execution_count": 183, "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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", - "image/png": "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\n" - }, - "metadata": { - "needs_background": "light" - } + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean error: 5.24 (19.7%)\n", + "Model determination: 0.774085281105197\n" + ] } ], "source": [ - "from sklearn.preprocessing import PolynomialFeatures\n", - "from sklearn.pipeline import make_pipeline\n", + "def run_linear_regression(X,y):\n", + " X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)\n", + " lin_reg = LinearRegression()\n", + " lin_reg.fit(X_train,y_train)\n", "\n", - "pipeline = make_pipeline(PolynomialFeatures(4), LinearRegression())\n", + " pred = lin_reg.predict(X_test)\n", "\n", - "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)\n", + " mse = np.sqrt(mean_squared_error(y_test,pred))\n", + " print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')\n", "\n", - "pipeline.fit(np.array(X_train), y_train)\n", + " score = lin_reg.score(X_train,y_train)\n", + " print('Model determination: ', score)\n", "\n", - "y_pred=pipeline.predict(X_test)\n", - "\n", - "df = pd.DataFrame({'x': X_test[:,0], 'y': y_pred[:,0]})\n", - "df.sort_values(by='x',inplace = True)\n", - "points = pd.DataFrame(df).to_numpy()\n", - "\n", - "plt.plot(points[:, 0], points[:, 1],color=\"blue\", linewidth=3)\n", - "plt.xlabel('Package')\n", - "plt.ylabel('Price')\n", - "\n", - "plt.scatter(X,y, color=\"black\")\n", - "\n", - "plt.show()\n", - "\n" + "run_linear_regression(X,y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also try using other features in the same manner, and combining them with numerical features, such as `Month` or `DayOfYear`:" ] }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 184, "metadata": {}, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ - "Model Accuracy: 0.8537946517073784\n" + "Mean error: 2.84 (10.5%)\n", + "Model determination: 0.9401096672643048\n" ] } ], "source": [ - "accuracy_score = pipeline.score(X_train,y_train)\n", - "print('Model Accuracy: ', accuracy_score)\n", - "\n" + "X = pd.get_dummies(new_pumpkins['Variety']) \\\n", + " .join(new_pumpkins['Month']) \\\n", + " .join(pd.get_dummies(new_pumpkins['City'])) \\\n", + " .join(pd.get_dummies(new_pumpkins['Package']))\n", + "y = new_pumpkins['Price']\n", + "\n", + "run_linear_regression(X,y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Polynomial Regression\n", + "\n", + "Polynomial regression can also be used with categorical features that are one-hot-encoded. The code to train polynomial regression would essentially be the same as we have seen above." ] }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 185, "metadata": {}, "outputs": [ { - "output_type": "execute_result", - "data": { - "text/plain": [ - "array([[46.34509342]])" - ] - }, - "metadata": {}, - "execution_count": 16 + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean error: 2.23 (8.25%)\n", + "Model determination: 0.9652870784724543\n" + ] } ], "source": [ - "pipeline.predict( np.array([ [2.75] ]) )" + "from sklearn.preprocessing import PolynomialFeatures\n", + "from sklearn.pipeline import make_pipeline\n", + "\n", + "pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)\n", + "\n", + "pipeline.fit(X_train,y_train)\n", + "\n", + "pred = pipeline.predict(X_test)\n", + "\n", + "mse = np.sqrt(mean_squared_error(y_test,pred))\n", + "print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')\n", + "\n", + "score = pipeline.score(X_train,y_train)\n", + "print('Model determination: ', score)" ] }, { @@ -538,5 +1070,35 @@ "outputs": [], "source": [] } - ] -} \ No newline at end of file + ], + "metadata": { + "interpreter": { + "hash": "86193a1ab0ba47eac1c69c1756090baa3b420b3eea7d4aafab8b85f8b312f0c5" + }, + "kernelspec": { + "display_name": "Python 3.7.0 64-bit ('3.7')", + "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.5" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + }, + "orig_nbformat": 2 + }, + "nbformat": 4, + "nbformat_minor": 2 +}