🔥Limited Offer: Get 50% OFFon AI & Full Stack Courses🔥
Back to Python Notes
Topic #136

Linear Regression


Regression

The term regression is used when you try to find the relationship between variables.

In Machine Learning, and in statistical modeling, that relationship is used to predict the outcome of future events.


Linear Regression

Linear regression uses the relationship between the data-points to draw a straight line through all them.

This line can be used to predict future values.

image

In Machine Learning, predicting the future is very important.


How Does it Work?

Python has methods for finding a relationship between data-points and to draw a line of linear regression. We will show you how to use these methods instead of going through the mathematic formula.

In the example below, the x-axis represents age, and the y-axis represents speed. We have registered the age and speed of 13 cars as they were passing a tollbooth. Let us see if the data we collected could be used in a linear regression:

Example

  import matplotlib.pyplot as plt

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y =
  [99,86,87,88,111,86,103,87,94,78,77,85,86]

plt.scatter(x, y)
plt.show()

image

Example

import matplotlib.pyplot as plt
from scipy import stats

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y =
[99,86,87,88,111,86,103,87,94,78,77,85,86]

slope, intercept, r,
p, std_err = stats.linregress(x, y)

def myfunc(x):

return slope * x + intercept

mymodel = list(map(myfunc, x))

plt.scatter(x, y)
plt.plot(x, mymodel)
plt.show()

image

Example Explained

Import the modules you need.

You can learn about the Matplotlib module in our Matplotlib Tutorial.

You can learn about the SciPy module in our SciPy Tutorial.

<p><code class="pythonHigh">import matplotlib.pyplot as plt<br/>from scipy
  import stats</code></p>

Create the arrays that represent the values of the x and y axis:

<p><code class="pythonHigh">
x = [5,7,8,7,2,17,2,9,4,11,12,9,6]<br/>y = [99,86,87,88,111,86,103,87,94,78,77,85,86]
</code></p>

Execute a method that returns some important key values of Linear Regression:

<p><code class="pythonHigh">
slope, intercept, r,
  p, std_err = stats.linregress(x, y)</code></p>

Create a function that uses the slope and intercept values to return a new value. This new value represents where on the y-axis the corresponding x value will be placed:

<p><code class="pythonHigh">
def myfunc(x):<br/>
  return slope * x + intercept</code></p>

Run each value of the x array through the function. This will result in a new array with new values for the y-axis:

<p><code class="pythonHigh">
  mymodel = list(map(myfunc, x))</code></p>

Draw the original scatter plot:

<p><code class="pythonHigh">
plt.scatter(x, y)</code></p>

Draw the line of linear regression:

<p><code class="pythonHigh">
  plt.plot(x, mymodel)</code></p>

Display the diagram:

<p><code class="pythonHigh">
  plt.show()</code></p>

R for Relationship

It is important to know how the relationship between the values of the x-axis and the values of the y-axis is, if there are no relationship the linear regression can not be used to predict anything.

This relationship - the coefficient of correlation - is called r.

The r value ranges from -1 to 1, where 0 means no relationship, and 1 (and -1) means 100% related.

Python and the Scipy module will compute this value for you, all you have to do is feed it with the x and y values.

Example

  from scipy import stats

x =
  [5,7,8,7,2,17,2,9,4,11,12,9,6]
y =
  [99,86,87,88,111,86,103,87,94,78,77,85,86]

slope, intercept, r,
  p, std_err = stats.linregress(x, y)

print(r)

Note: The result -0.76 shows that there is a relationship, not perfect, but it indicates that we could use linear regression in future predictions.


Predict Future Values

Now we can use the information we have gathered to predict future values.

Example: Let us try to predict the speed of a 10 years old car.

To do so, we need the same myfunc() function from the example above:

<p><code class="pythonHigh">
def myfunc(x):<br/>
  return slope * x + intercept</code></p>

Example

from scipy import stats

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y =
[99,86,87,88,111,86,103,87,94,78,77,85,86]

slope, intercept, r,
p, std_err = stats.linregress(x, y)

def myfunc(x):

return slope * x + intercept

speed = myfunc(10)

print(speed)

The example predicted a speed at 85.6, which we also could read from the diagram:

image


Bad Fit?

Let us create an example where linear regression would not be the best method to predict future values.

Example

import matplotlib.pyplot as plt
from scipy import stats

x = [89,43,36,36,95,10,66,34,38,20,26,29,48,64,6,5,36,66,72,40]
y =
[21,46,3,35,67,95,53,72,58,10,26,34,90,33,38,20,56,2,47,15]

slope,
intercept, r, p, std_err = stats.linregress(x, y)

def
myfunc(x):
  return slope * x + intercept

mymodel = list(map(myfunc,
x))

plt.scatter(x, y)
plt.plot(x, mymodel)
plt.show()

image

And the r for relationship?

Example

  import numpy
from scipy import stats

x =
  [89,43,36,36,95,10,66,34,38,20,26,29,48,64,6,5,36,66,72,40]
y =
  [21,46,3,35,67,95,53,72,58,10,26,34,90,33,38,20,56,2,47,15]

slope, intercept, r,
  p, std_err = stats.linregress(x, y)

print(r)

Note: The result: 0.013 indicates a very bad relationship, and tells us that this data set is not suitable for linear regression.

Want to go beyond the notes?

Join CodingNow 2.0's Python course — live mentorship, real projects, and 100% placement support.

Enroll Now — Free Demo Available

Linear Regression – FAQs

Quick answers about learning Linear Regression in Python.

This free note from CodingNow 2.0 explains Linear Regression in Python — concept, syntax and worked code examples you can copy, run and revise before interviews.
Yes. Every Python topic on CodingNow 2.0, including Linear Regression, is 100% free with no signup required.
With focused practice, most students grasp Linear Regression in 1–3 days from these notes; pairing it with CodingNow 2.0's mentor-led course takes you to job-ready depth faster.
Use the code examples in this note, then ask doubts for free on the CodingNow 2.0 Community (/community) — expert instructors answer within 24 hours.
WhatsApp
Call NowEnroll Now