data-science-ipython-notebooks/scikit-learn/scikit-learn-linear-reg.ipynb
2015-05-31 09:46:22 -04:00

136 lines
24 KiB
Python

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# scikit-learn-linear-reg"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Credits: Forked from [PyCon 2015 Scikit-learn Tutorial](https://github.com/jakevdp/sklearn_pycon2015) by Jake VanderPlas\n",
"\n",
"* Linear Regression"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import seaborn; \n",
"from sklearn.linear_model import LinearRegression\n",
"import pylab as pl\n",
"\n",
"seaborn.set()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Linear Regression\n",
"\n",
"Linear Regression is a supervised learning algorithm that models the relationship between a scalar dependent variable y and one or more explanatory variables (or independent variable) denoted X.\n",
"\n",
"Generate some data:"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x11006e550>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Create some simple data\n",
"import numpy as np\n",
"np.random.seed(0)\n",
"X = np.random.random(size=(20, 1))\n",
"y = 3 * X.squeeze() + 2 + np.random.randn(20)\n",
"\n",
"plt.plot(X.squeeze(), y, 'o');"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Fit the model:"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x103f774d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"model = LinearRegression()\n",
"model.fit(X, y)\n",
"\n",
"# Plot the data and the model prediction\n",
"X_fit = np.linspace(0, 1, 100)[:, np.newaxis]\n",
"y_fit = model.predict(X_fit)\n",
"\n",
"plt.plot(X.squeeze(), y, 'o')\n",
"plt.plot(X_fit.squeeze(), y_fit);"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.9"
}
},
"nbformat": 4,
"nbformat_minor": 0
}