Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eu tellus id massa feugiat vulputate eleifend eget odio. Nullam vel laoreet arcu. Quisque a rutrum nulla, eu dignissim purus. Aliquam vestibulum, justo quis euismod lobortis, lacus ipsum feugiat libero, nec dignissim eros erat sit amet massa. Fusce eu placerat justo, eu luctus ex. Quisque tempor mauris ligula, sed euismod nunc auctor in. Integer lacinia efficitur tempus. Etiam tristique euismod pretium.
Proin at mattis orci, ac pellentesque dui. Nulla molestie aliquam vestibulum. Cras viverra felis sem, non venenatis tellus laoreet vitae. Proin porttitor, turpis eu rhoncus aliquam, felis erat dictum justo, et placerat diam ante vel purus. Integer vel risus rutrum, vehicula libero at, porttitor neque. Sed sagittis ligula ac sapien dignissim aliquam. Praesent arcu felis, porttitor eu nunc sit amet, pulvinar varius mauris. Aliquam erat volutpat. Proin a velit ut nunc commodo tristique. Nullam sit amet sodales lacus.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eu tellus id massa feugiat vulputate eleifend eget odio. Nullam vel laoreet arcu. Quisque a rutrum nulla, eu dignissim purus. Aliquam vestibulum, justo quis euismod lobortis, lacus ipsum feugiat libero, nec dignissim eros erat sit amet massa. Fusce eu placerat justo, eu luctus ex. Quisque tempor mauris ligula, sed euismod nunc auctor in. Integer lacinia efficitur tempus. Etiam tristique euismod pretium.
Proin at mattis orci, ac pellentesque dui. Nulla molestie aliquam vestibulum. Cras viverra felis sem, non venenatis tellus laoreet vitae. Proin porttitor, turpis eu rhoncus aliquam, felis erat dictum justo, et placerat diam ante vel purus. Integer vel risus rutrum, vehicula libero at, porttitor neque. Sed sagittis ligula ac sapien dignissim aliquam. Praesent arcu felis, porttitor eu nunc sit amet, pulvinar varius mauris. Aliquam erat volutpat. Proin a velit ut nunc commodo tristique. Nullam sit amet sodales lacus.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eu tellus id massa feugiat vulputate eleifend eget odio. Nullam vel laoreet arcu. Quisque a rutrum nulla, eu dignissim purus. Aliquam vestibulum, justo quis euismod lobortis, lacus ipsum feugiat libero, nec dignissim eros erat sit amet massa. Fusce eu placerat justo, eu luctus ex. Quisque tempor mauris ligula, sed euismod nunc auctor in. Integer lacinia efficitur tempus. Etiam tristique euismod pretium.
Proin at mattis orci, ac pellentesque dui. Nulla molestie aliquam vestibulum. Cras viverra felis sem, non venenatis tellus laoreet vitae. Proin porttitor, turpis eu rhoncus aliquam, felis erat dictum justo, et placerat diam ante vel purus. Integer vel risus rutrum, vehicula libero at, porttitor neque. Sed sagittis ligula ac sapien dignissim aliquam. Praesent arcu felis, porttitor eu nunc sit amet, pulvinar varius mauris. Aliquam erat volutpat. Proin a velit ut nunc commodo tristique. Nullam sit amet sodales lacus.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eu tellus id massa feugiat vulputate eleifend eget odio. Nullam vel laoreet arcu. Quisque a rutrum nulla, eu dignissim purus. Aliquam vestibulum, justo quis euismod lobortis, lacus ipsum feugiat libero, nec dignissim eros erat sit amet massa. Fusce eu placerat justo, eu luctus ex. Quisque tempor mauris ligula, sed euismod nunc auctor in. Integer lacinia efficitur tempus. Etiam tristique euismod pretium.
Proin at mattis orci, ac pellentesque dui. Nulla molestie aliquam vestibulum. Cras viverra felis sem, non venenatis tellus laoreet vitae. Proin porttitor, turpis eu rhoncus aliquam, felis erat dictum justo, et placerat diam ante vel purus. Integer vel risus rutrum, vehicula libero at, porttitor neque. Sed sagittis ligula ac sapien dignissim aliquam. Praesent arcu felis, porttitor eu nunc sit amet, pulvinar varius mauris. Aliquam erat volutpat. Proin a velit ut nunc commodo tristique. Nullam sit amet sodales lacus.
import pandas as pd
pd.read_csv('data/sample_data.csv')
ID | Description | Value (mm) | |
---|---|---|---|
0 | 1 | 6-inch pipe | 152.4 |
1 | 2 | 8-inch pipe | 203.2 |
2 | 3 | 12-inch pipe | 304.8 |
3 | 4 | 16-inch pipe | 406.4 |
4 | 5 | 18-inch pipe | 457.2 |
We will start with the most familiar linear regression, a straight-line fit to data. A straight-line fit is a model of the form $$ y = ax + b $$ where $a$ is commonly known as the slope, and $b$ is commonly known as the intercept.
%matplotlib inline
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()
import numpy as np
rng = np.random.RandomState(1)
x = 10 * rng.rand(50)
y = 2 * x - 5 + rng.randn(50)
plt.scatter(x, y);
We can use Scikit-Learn's LinearRegression
estimator to fit this data and construct the best-fit line:
from sklearn.linear_model import LinearRegression
model = LinearRegression(fit_intercept=True)
model.fit(x[:, np.newaxis], y)
xfit = np.linspace(0, 10, 1000)
yfit = model.predict(xfit[:, np.newaxis])
plt.scatter(x, y)
plt.plot(xfit, yfit);
The slope and intercept of the data are contained in the model's fit parameters, which in Scikit-Learn are always marked by a trailing underscore.
Here the relevant parameters are coef_
and intercept_
:
print("Model slope: ", model.coef_[0]) print("Model intercept:", model.intercept_)
We see that the results are very close to the inputs, as we might hope.
The LinearRegression
estimator is much more capable than this, however—in addition to simple straight-line fits, it can also handle multidimensional linear models of the form
$$
y = a_0 + a_1 x_1 + a_2 x_2 + \cdots
$$
where there are multiple $x$ values.
Geometrically, this is akin to fitting a plane to points in three dimensions, or fitting a hyper-plane to points in higher dimensions.
The multidimensional nature of such regressions makes them more difficult to visualize, but we can see one of these fits in action by building some example data, using NumPy's matrix multiplication operator:
rng = np.random.RandomState(1)
X = 10 * rng.rand(100, 3)
y = 0.5 + np.dot(X, [1.5, -2., 1.])
model.fit(X, y)
print(model.intercept_)
print(model.coef_)
0.5000000000000127 [ 1.5 -2. 1. ]
Here the $y$ data is constructed from three random $x$ values, and the linear regression recovers the coefficients used to construct the data.
In this way, we can use the single LinearRegression
estimator to fit lines, planes, or hyperplanes to our data.
It still appears that this approach would be limited to strictly linear relationships between variables, but it turns out we can relax this as well.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eu tellus id massa feugiat vulputate eleifend eget odio. Nullam vel laoreet arcu. Quisque a rutrum nulla, eu dignissim purus. Aliquam vestibulum, justo quis euismod lobortis, lacus ipsum feugiat libero, nec dignissim eros erat sit amet massa. Fusce eu placerat justo, eu luctus ex. Quisque tempor mauris ligula, sed euismod nunc auctor in. Integer lacinia efficitur tempus. Etiam tristique euismod pretium.
Proin at mattis orci, ac pellentesque dui. Nulla molestie aliquam vestibulum. Cras viverra felis sem, non venenatis tellus laoreet vitae. Proin porttitor, turpis eu rhoncus aliquam, felis erat dictum justo, et placerat diam ante vel purus. Integer vel risus rutrum, vehicula libero at, porttitor neque. Sed sagittis ligula ac sapien dignissim aliquam. Praesent arcu felis, porttitor eu nunc sit amet, pulvinar varius mauris. Aliquam erat volutpat. Proin a velit ut nunc commodo tristique. Nullam sit amet sodales lacus.
ID | Description | Value (mm) |
---|---|---|
1 | 6-inch pipe | 152.4 |
2 | 8-inch pipe | 203.2 |
3 | 12-inch pipe | 304.8 |
4 | 16-inch pipe | 406.4 |
5 | 18-inch pipe | 457.2 |
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eu tellus id massa feugiat vulputate eleifend eget odio. Nullam vel laoreet arcu. Quisque a rutrum nulla, eu dignissim purus. Aliquam vestibulum, justo quis euismod lobortis, lacus ipsum feugiat libero, nec dignissim eros erat sit amet massa. Fusce eu placerat justo, eu luctus ex. Quisque tempor mauris ligula, sed euismod nunc auctor in. Integer lacinia efficitur tempus. Etiam tristique euismod pretium.
Proin at mattis orci, ac pellentesque dui. Nulla molestie aliquam vestibulum. Cras viverra felis sem, non venenatis tellus laoreet vitae. Proin porttitor, turpis eu rhoncus aliquam, felis erat dictum justo, et placerat diam ante vel purus. Integer vel risus rutrum, vehicula libero at, porttitor neque. Sed sagittis ligula ac sapien dignissim aliquam. Praesent arcu felis, porttitor eu nunc sit amet, pulvinar varius mauris. Aliquam erat volutpat. Proin a velit ut nunc commodo tristique. Nullam sit amet sodales lacus.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eu tellus id massa feugiat vulputate eleifend eget odio. Nullam vel laoreet arcu. Quisque a rutrum nulla, eu dignissim purus. Aliquam vestibulum, justo quis euismod lobortis, lacus ipsum feugiat libero, nec dignissim eros erat sit amet massa. Fusce eu placerat justo, eu luctus ex. Quisque tempor mauris ligula, sed euismod nunc auctor in. Integer lacinia efficitur tempus. Etiam tristique euismod pretium.
Proin at mattis orci, ac pellentesque dui. Nulla molestie aliquam vestibulum. Cras viverra felis sem, non venenatis tellus laoreet vitae. Proin porttitor, turpis eu rhoncus aliquam, felis erat dictum justo, et placerat diam ante vel purus. Integer vel risus rutrum, vehicula libero at, porttitor neque. Sed sagittis ligula ac sapien dignissim aliquam. Praesent arcu felis, porttitor eu nunc sit amet, pulvinar varius mauris. Aliquam erat volutpat. Proin a velit ut nunc commodo tristique. Nullam sit amet sodales lacus.
...