Science des données - Régression linéaire


Il nous manque une variable importante qui affecte Calorie_Burnage, qui est la durée de la séance d'entraînement.

La durée en combinaison avec Average_Pulse expliquera ensemble Calorie_Burnage plus précisément.


Régression linéaire

Le terme régression est utilisé lorsque vous essayez de trouver la relation entre des variables.

Dans l'apprentissage automatique et dans la modélisation statistique, cette relation est utilisée pour prédire le résultat des événements.

Dans ce module, nous aborderons les questions suivantes :

  • Pouvons-nous conclure que Average_Pulse et Duration sont liés à Calorie_Burnage ?
  • Pouvons-nous utiliser Average_Pulse et Duration pour prédire Calorie_Burnage ?

Méthode des moindres carrés

La régression linéaire utilise la méthode des moindres carrés.

Le concept consiste à tracer une ligne à travers tous les points de données tracés. La ligne est positionnée de manière à minimiser la distance à tous les points de données.

La distance est appelée "résidus" ou "erreurs".

Les lignes pointillées rouges représentent la distance entre les points de données et la fonction mathématique dessinée.

Régression linéaire - moindre carré

Régression linéaire utilisant une variable explicative

Dans cet exemple, nous allons essayer de prédire Calorie_Burnage avec Average_Pulse en utilisant la régression linéaire :

Exemple

import pandas as pd
import matplotlib.pyplot as plt
from scipy import stats

full_health_data = pd.read_csv("data.csv", header=0, sep=",")

x = full_health_data["Average_Pulse"]
y = full_health_data ["Calorie_Burnage"]

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, slope * x + intercept)
plt.ylim(ymin=0, ymax=2000)
plt.xlim(xmin=0, xmax=200)
plt.xlabel("Average_Pulse")
plt.ylabel ("Calorie_Burnage")
plt.show()

Exemple expliqué :

  • Importez les modules dont vous avez besoin : Pandas, matplotlib et Scipy
  • Isolez Average_Pulse comme x. Isoler Calorie_burnage comme y
  • Obtenez les valeurs clés importantes avec : pente, interception, r, p, std_err = stats.linregress(x, y)
  • Créez une fonction qui utilise les valeurs de pente et d'interception pour renvoyer une nouvelle valeur. Cette nouvelle valeur représente où sur l'axe y la valeur x correspondante sera placée
  • Exécutez chaque valeur du tableau x via la fonction. Cela se traduira par un nouveau tableau avec de nouvelles valeurs pour l'axe y : mymodel = list(map(myfunc, x))
  • Dessinez le nuage de points d'origine : plt.scatter(x, y)
  • Tracez la droite de régression linéaire : plt.plot(x, mymodel)
  • Définir les valeurs maximales et minimales de l'axe
  • Intitulez l'axe : "Average_Pulse" et "Calorie_Burnage"

Sortir:

Régression linéaire - Une variable - Moindres carrés

Pensez-vous que la ligne est capable de prédire précisément Calorie_Burnage ?

Nous montrerons que la variable Average_Pulse seule ne suffit pas pour faire une prédiction précise de Calorie_Burnage.