You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
777 lines
121 KiB
777 lines
121 KiB
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"___\n",
|
|
"\n",
|
|
"<a href='http://www.pieriandata.com'><img src='../Pierian_Data_Logo.png'/></a>\n",
|
|
"___\n",
|
|
"<center><em>Copyright by Pierian Data Inc.</em></center>\n",
|
|
"<center><em>For more information, visit us at <a href='http://www.pieriandata.com'>www.pieriandata.com</a></em></center>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Introduction to Simple Linear Regression\n",
|
|
"\n",
|
|
"In this very simple example, we'll explore how to create a very simple fit line, the classic case of y=mx+b. We'll go carefully through each step, so you can see what type of question a simple fit line can answer. Keep in mind, this case is very simplified and is not the approach we'll take later on, its just here to get you thinking about linear regression in perhaps the same way [Galton](https://en.wikipedia.org/wiki/Francis_Galton) did."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Imports"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import numpy as np\n",
|
|
"import pandas as pd\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"import seaborn as sns"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Sample Data\n",
|
|
"\n",
|
|
"This sample data is from ISLR. It displays sales (in thousands of units) for a particular product as a function of advertising budgets (in thousands of dollars) for TV, radio, and newspaper media."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 9,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"df = pd.read_csv(\"Advertising.csv\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 10,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<div>\n",
|
|
"<style scoped>\n",
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
" vertical-align: middle;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe tbody tr th {\n",
|
|
" vertical-align: top;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe thead th {\n",
|
|
" text-align: right;\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>TV</th>\n",
|
|
" <th>radio</th>\n",
|
|
" <th>newspaper</th>\n",
|
|
" <th>sales</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>230.1</td>\n",
|
|
" <td>37.8</td>\n",
|
|
" <td>69.2</td>\n",
|
|
" <td>22.1</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>44.5</td>\n",
|
|
" <td>39.3</td>\n",
|
|
" <td>45.1</td>\n",
|
|
" <td>10.4</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>17.2</td>\n",
|
|
" <td>45.9</td>\n",
|
|
" <td>69.3</td>\n",
|
|
" <td>9.3</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>151.5</td>\n",
|
|
" <td>41.3</td>\n",
|
|
" <td>58.5</td>\n",
|
|
" <td>18.5</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>180.8</td>\n",
|
|
" <td>10.8</td>\n",
|
|
" <td>58.4</td>\n",
|
|
" <td>12.9</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" TV radio newspaper sales\n",
|
|
"0 230.1 37.8 69.2 22.1\n",
|
|
"1 44.5 39.3 45.1 10.4\n",
|
|
"2 17.2 45.9 69.3 9.3\n",
|
|
"3 151.5 41.3 58.5 18.5\n",
|
|
"4 180.8 10.8 58.4 12.9"
|
|
]
|
|
},
|
|
"execution_count": 10,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"df.head()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"**Is there a relationship between *total* advertising spend and *sales*?**"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 11,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"df['total_spend'] = df['TV'] + df['radio'] + df['newspaper']"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 12,
|
|
"metadata": {
|
|
"scrolled": true
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"<AxesSubplot:xlabel='total_spend', ylabel='sales'>"
|
|
]
|
|
},
|
|
"execution_count": 12,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 432x288 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {
|
|
"needs_background": "light"
|
|
},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"sns.scatterplot(x='total_spend',y='sales',data=df)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Least Squares Line\n",
|
|
"\n",
|
|
"Full formulas available on Wikipedia: https://en.wikipedia.org/wiki/Linear_regression ,as well as in ISLR reading."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"**Understanding what a line of best fit answers.**\n",
|
|
"If someone was to spend a total of $200 , what would the expected sales be? We have simplified this quite a bit by combining all the features into \"total spend\", but we will come back to individual features later on. For now, let's focus on understanding what a linear regression line can help answer.\n",
|
|
"\n",
|
|
"**Our next ad campaign will have a total spend of $200, how many units do we expect to sell as a result of this?**"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 13,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"<AxesSubplot:xlabel='total_spend', ylabel='sales'>"
|
|
]
|
|
},
|
|
"execution_count": 13,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 432x288 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {
|
|
"needs_background": "light"
|
|
},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Basically, we want to figure out how to create this line\n",
|
|
"sns.regplot(x='total_spend',y='sales',data=df)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Let's go ahead and start solving: $$y=mx+b$$"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Simply solve for m and b, remember, that as shown in the video, we are solving in a generalized form:\n",
|
|
"\n",
|
|
"$$ \\hat{y} = \\beta_0 + \\beta_1X$$\n",
|
|
"\n",
|
|
"Capitalized to signal that we are dealing with a matrix of values, we have a known matrix of labels (sales numbers) Y and a known matrix of total_spend (X). We are going to solve for the *beta* coefficients, which as we expand to more than just a single feature, will be important to build an understanding of what features have the most predictive power. We use y hat to indicate that y hat is a prediction or estimation, y would be a true label/known value.\n",
|
|
"\n",
|
|
"We can use NumPy for this (if you really wanted to, you could solve this by [hand](https://towardsdatascience.com/linear-regression-by-hand-ee7fe5a751bf))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 14,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"X = df['total_spend']\n",
|
|
"y = df['sales']"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 15,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Help on function polyfit in module numpy:\n",
|
|
"\n",
|
|
"polyfit(x, y, deg, rcond=None, full=False, w=None, cov=False)\n",
|
|
" Least squares polynomial fit.\n",
|
|
" \n",
|
|
" Fit a polynomial ``p(x) = p[0] * x**deg + ... + p[deg]`` of degree `deg`\n",
|
|
" to points `(x, y)`. Returns a vector of coefficients `p` that minimises\n",
|
|
" the squared error in the order `deg`, `deg-1`, ... `0`.\n",
|
|
" \n",
|
|
" The `Polynomial.fit <numpy.polynomial.polynomial.Polynomial.fit>` class\n",
|
|
" method is recommended for new code as it is more stable numerically. See\n",
|
|
" the documentation of the method for more information.\n",
|
|
" \n",
|
|
" Parameters\n",
|
|
" ----------\n",
|
|
" x : array_like, shape (M,)\n",
|
|
" x-coordinates of the M sample points ``(x[i], y[i])``.\n",
|
|
" y : array_like, shape (M,) or (M, K)\n",
|
|
" y-coordinates of the sample points. Several data sets of sample\n",
|
|
" points sharing the same x-coordinates can be fitted at once by\n",
|
|
" passing in a 2D-array that contains one dataset per column.\n",
|
|
" deg : int\n",
|
|
" Degree of the fitting polynomial\n",
|
|
" rcond : float, optional\n",
|
|
" Relative condition number of the fit. Singular values smaller than\n",
|
|
" this relative to the largest singular value will be ignored. The\n",
|
|
" default value is len(x)*eps, where eps is the relative precision of\n",
|
|
" the float type, about 2e-16 in most cases.\n",
|
|
" full : bool, optional\n",
|
|
" Switch determining nature of return value. When it is False (the\n",
|
|
" default) just the coefficients are returned, when True diagnostic\n",
|
|
" information from the singular value decomposition is also returned.\n",
|
|
" w : array_like, shape (M,), optional\n",
|
|
" Weights to apply to the y-coordinates of the sample points. For\n",
|
|
" gaussian uncertainties, use 1/sigma (not 1/sigma**2).\n",
|
|
" cov : bool or str, optional\n",
|
|
" If given and not `False`, return not just the estimate but also its\n",
|
|
" covariance matrix. By default, the covariance are scaled by\n",
|
|
" chi2/sqrt(N-dof), i.e., the weights are presumed to be unreliable\n",
|
|
" except in a relative sense and everything is scaled such that the\n",
|
|
" reduced chi2 is unity. This scaling is omitted if ``cov='unscaled'``,\n",
|
|
" as is relevant for the case that the weights are 1/sigma**2, with\n",
|
|
" sigma known to be a reliable estimate of the uncertainty.\n",
|
|
" \n",
|
|
" Returns\n",
|
|
" -------\n",
|
|
" p : ndarray, shape (deg + 1,) or (deg + 1, K)\n",
|
|
" Polynomial coefficients, highest power first. If `y` was 2-D, the\n",
|
|
" coefficients for `k`-th data set are in ``p[:,k]``.\n",
|
|
" \n",
|
|
" residuals, rank, singular_values, rcond\n",
|
|
" Present only if `full` = True. Residuals is sum of squared residuals\n",
|
|
" of the least-squares fit, the effective rank of the scaled Vandermonde\n",
|
|
" coefficient matrix, its singular values, and the specified value of\n",
|
|
" `rcond`. For more details, see `linalg.lstsq`.\n",
|
|
" \n",
|
|
" V : ndarray, shape (M,M) or (M,M,K)\n",
|
|
" Present only if `full` = False and `cov`=True. The covariance\n",
|
|
" matrix of the polynomial coefficient estimates. The diagonal of\n",
|
|
" this matrix are the variance estimates for each coefficient. If y\n",
|
|
" is a 2-D array, then the covariance matrix for the `k`-th data set\n",
|
|
" are in ``V[:,:,k]``\n",
|
|
" \n",
|
|
" \n",
|
|
" Warns\n",
|
|
" -----\n",
|
|
" RankWarning\n",
|
|
" The rank of the coefficient matrix in the least-squares fit is\n",
|
|
" deficient. The warning is only raised if `full` = False.\n",
|
|
" \n",
|
|
" The warnings can be turned off by\n",
|
|
" \n",
|
|
" >>> import warnings\n",
|
|
" >>> warnings.simplefilter('ignore', np.RankWarning)\n",
|
|
" \n",
|
|
" See Also\n",
|
|
" --------\n",
|
|
" polyval : Compute polynomial values.\n",
|
|
" linalg.lstsq : Computes a least-squares fit.\n",
|
|
" scipy.interpolate.UnivariateSpline : Computes spline fits.\n",
|
|
" \n",
|
|
" Notes\n",
|
|
" -----\n",
|
|
" The solution minimizes the squared error\n",
|
|
" \n",
|
|
" .. math ::\n",
|
|
" E = \\sum_{j=0}^k |p(x_j) - y_j|^2\n",
|
|
" \n",
|
|
" in the equations::\n",
|
|
" \n",
|
|
" x[0]**n * p[0] + ... + x[0] * p[n-1] + p[n] = y[0]\n",
|
|
" x[1]**n * p[0] + ... + x[1] * p[n-1] + p[n] = y[1]\n",
|
|
" ...\n",
|
|
" x[k]**n * p[0] + ... + x[k] * p[n-1] + p[n] = y[k]\n",
|
|
" \n",
|
|
" The coefficient matrix of the coefficients `p` is a Vandermonde matrix.\n",
|
|
" \n",
|
|
" `polyfit` issues a `RankWarning` when the least-squares fit is badly\n",
|
|
" conditioned. This implies that the best fit is not well-defined due\n",
|
|
" to numerical error. The results may be improved by lowering the polynomial\n",
|
|
" degree or by replacing `x` by `x` - `x`.mean(). The `rcond` parameter\n",
|
|
" can also be set to a value smaller than its default, but the resulting\n",
|
|
" fit may be spurious: including contributions from the small singular\n",
|
|
" values can add numerical noise to the result.\n",
|
|
" \n",
|
|
" Note that fitting polynomial coefficients is inherently badly conditioned\n",
|
|
" when the degree of the polynomial is large or the interval of sample points\n",
|
|
" is badly centered. The quality of the fit should always be checked in these\n",
|
|
" cases. When polynomial fits are not satisfactory, splines may be a good\n",
|
|
" alternative.\n",
|
|
" \n",
|
|
" References\n",
|
|
" ----------\n",
|
|
" .. [1] Wikipedia, \"Curve fitting\",\n",
|
|
" https://en.wikipedia.org/wiki/Curve_fitting\n",
|
|
" .. [2] Wikipedia, \"Polynomial interpolation\",\n",
|
|
" https://en.wikipedia.org/wiki/Polynomial_interpolation\n",
|
|
" \n",
|
|
" Examples\n",
|
|
" --------\n",
|
|
" >>> import warnings\n",
|
|
" >>> x = np.array([0.0, 1.0, 2.0, 3.0, 4.0, 5.0])\n",
|
|
" >>> y = np.array([0.0, 0.8, 0.9, 0.1, -0.8, -1.0])\n",
|
|
" >>> z = np.polyfit(x, y, 3)\n",
|
|
" >>> z\n",
|
|
" array([ 0.08703704, -0.81349206, 1.69312169, -0.03968254]) # may vary\n",
|
|
" \n",
|
|
" It is convenient to use `poly1d` objects for dealing with polynomials:\n",
|
|
" \n",
|
|
" >>> p = np.poly1d(z)\n",
|
|
" >>> p(0.5)\n",
|
|
" 0.6143849206349179 # may vary\n",
|
|
" >>> p(3.5)\n",
|
|
" -0.34732142857143039 # may vary\n",
|
|
" >>> p(10)\n",
|
|
" 22.579365079365115 # may vary\n",
|
|
" \n",
|
|
" High-order polynomials may oscillate wildly:\n",
|
|
" \n",
|
|
" >>> with warnings.catch_warnings():\n",
|
|
" ... warnings.simplefilter('ignore', np.RankWarning)\n",
|
|
" ... p30 = np.poly1d(np.polyfit(x, y, 30))\n",
|
|
" ...\n",
|
|
" >>> p30(4)\n",
|
|
" -0.80000000000000204 # may vary\n",
|
|
" >>> p30(5)\n",
|
|
" -0.99999999999999445 # may vary\n",
|
|
" >>> p30(4.5)\n",
|
|
" -0.10547061179440398 # may vary\n",
|
|
" \n",
|
|
" Illustration:\n",
|
|
" \n",
|
|
" >>> import matplotlib.pyplot as plt\n",
|
|
" >>> xp = np.linspace(-2, 6, 100)\n",
|
|
" >>> _ = plt.plot(x, y, '.', xp, p(xp), '-', xp, p30(xp), '--')\n",
|
|
" >>> plt.ylim(-2,2)\n",
|
|
" (-2, 2)\n",
|
|
" >>> plt.show()\n",
|
|
"\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"help(np.polyfit)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 16,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"array([0.04868788, 4.24302822])"
|
|
]
|
|
},
|
|
"execution_count": 16,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Returns highest order coef first!\n",
|
|
"np.polyfit(X,y,1)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 17,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Potential Future Spend Budgets\n",
|
|
"potential_spend = np.linspace(0,500,100)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 21,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"predicted_sales = 0.04868788*potential_spend + 4.24302822"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 22,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"[<matplotlib.lines.Line2D at 0x1a948c95408>]"
|
|
]
|
|
},
|
|
"execution_count": 22,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 432x288 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {
|
|
"needs_background": "light"
|
|
},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"plt.plot(potential_spend,predicted_sales)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 24,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"[<matplotlib.lines.Line2D at 0x1a948dc6bc8>]"
|
|
]
|
|
},
|
|
"execution_count": 24,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 432x288 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {
|
|
"needs_background": "light"
|
|
},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"sns.scatterplot(x='total_spend',y='sales',data=df)\n",
|
|
"plt.plot(potential_spend,predicted_sales,color='red')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"**Our next ad campaign will have a total spend of $200, how many units do we expect to sell as a result of this?**"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 25,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"spend = 200\n",
|
|
"predicted_sales = 0.04868788*spend + 4.24302822"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 26,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"13.98060422"
|
|
]
|
|
},
|
|
"execution_count": 26,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"predicted_sales"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Further considerations...which we will explore in much more depth!"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Overfitting, Underfitting, and Measuring Performance\n",
|
|
"\n",
|
|
"Notice we fit to order=1 , essentially a straight line, we can begin to explore higher orders, but does higher order mean an overall better fit? Is it possible to fit too much? Too little? How would we know and how do we even define a good fit?"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 33,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"array([ 3.07615033e-07, -1.89392449e-04, 8.20886302e-02, 2.70495053e+00])"
|
|
]
|
|
},
|
|
"execution_count": 33,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"np.polyfit(X,y,3)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 34,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Potential Future Spend Budgets\n",
|
|
"potential_spend = np.linspace(0,500,100)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 35,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"predicted_sales = 3.07615033e-07*potential_spend**3 + -1.89392449e-04*potential_spend**2 + 8.20886302e-02*potential_spend**1 + 2.70495053e+00"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 40,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"[<matplotlib.lines.Line2D at 0x1a945c52908>]"
|
|
]
|
|
},
|
|
"execution_count": 40,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 432x288 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {
|
|
"needs_background": "light"
|
|
},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"sns.scatterplot(x='total_spend',y='sales',data=df)\n",
|
|
"plt.plot(potential_spend,predicted_sales,color='red')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"**Is this better than our straight line fit? What are good ways of measuring this?**"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Multiple Features\n",
|
|
"\n",
|
|
"The real data had 3 features, not everything in total spend, this would allow us to repeat the process and maybe get a more accurate result?"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 37,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"X = df[['TV','radio','newspaper']]\n",
|
|
"y = df['sales']"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 41,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"ename": "TypeError",
|
|
"evalue": "expected 1D vector for x",
|
|
"output_type": "error",
|
|
"traceback": [
|
|
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
|
|
"\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)",
|
|
"\u001b[1;32m<ipython-input-41-f24479bbc916>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;31m# Note here we're passing in 3 which matches up with 3 unique features, so we're not polynomial yet\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpolyfit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
|
|
"\u001b[1;32m<__array_function__ internals>\u001b[0m in \u001b[0;36mpolyfit\u001b[1;34m(*args, **kwargs)\u001b[0m\n",
|
|
"\u001b[1;32mc:\\users\\marcial\\anaconda3\\envs\\ml_master\\lib\\site-packages\\numpy\\lib\\polynomial.py\u001b[0m in \u001b[0;36mpolyfit\u001b[1;34m(x, y, deg, rcond, full, w, cov)\u001b[0m\n\u001b[0;32m 597\u001b[0m \u001b[1;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"expected deg >= 0\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 598\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mndim\u001b[0m \u001b[1;33m!=\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 599\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"expected 1D vector for x\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 600\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msize\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 601\u001b[0m \u001b[1;32mraise\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"expected non-empty vector for x\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;31mTypeError\u001b[0m: expected 1D vector for x"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Note here we're passing in 3 which matches up with 3 unique features, so we're not polynomial yet\n",
|
|
"np.polyfit(X,y,1)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"**Uh oh! Polyfit only works with a 1D X array! We'll need to move on to a more powerful library...**"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"-------\n",
|
|
"--------"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"anaconda-cloud": {},
|
|
"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.7.6"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 1
|
|
}
|