Science des données - Cas de régression linéaire


Cas : Utilisez Duration + Average_Pulse pour prédire Calorie_Burnage

Créez une table de régression linéaire avec Average_Pulse et Duration comme variables explicatives :

Exemple

import pandas as pd
import statsmodels.formula.api as smf

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

model = smf.ols('Calorie_Burnage ~ Average_Pulse + Duration', data = full_health_data)
results = model.fit()
print(results.summary())

Exemple expliqué :

  • Importez la bibliothèque statsmodels.formula.api en tant que smf. Statsmodels est une bibliothèque statistique en Python.
  • Utilisez l'ensemble de données full_health_data.
  • Créez un modèle basé sur les moindres carrés ordinaires avec smf.ols(). Notez que la variable explicative doit être écrite en premier entre parenthèses. Utilisez l'ensemble de données full_health_data.
  • En appelant .fit(), vous obtenez les résultats variables. Cela contient beaucoup d'informations sur le modèle de régression.
  • Appelez summary() pour obtenir le tableau avec les résultats de la régression linéaire.

Sortir:

Cas de table de régression linéaire

La fonction de régression linéaire peut être réécrite mathématiquement comme suit :

Calorie_Burnage = Average_Pulse * 3.1695 + Duration * 5.8424 - 334.5194

Arrondi à deux décimales :

Calorie_Burnage = Average_Pulse * 3.17 + Duration * 5.84 - 334.52


Définir la fonction de régression linéaire en Python

Définissez la fonction de régression linéaire en Python pour effectuer des prédictions.

Qu'est-ce que Calorie_Burnage si :

  • Le pouls moyen est de 110 et la durée de la séance d'entraînement est de 60 minutes ?
  • Le pouls moyen est de 140 et la durée de la séance d'entraînement est de 45 minutes ?
  • Le pouls moyen est de 175 et la durée de la séance d'entraînement est de 20 minutes ?

Exemple

def Predict_Calorie_Burnage(Average_Pulse, Duration):
 return(3.1695*Average_Pulse + 5.8434 * Duration - 334.5194)

print(Predict_Calorie_Burnage(110,60))
print(Predict_Calorie_Burnage(140,45))
print(Predict_Calorie_Burnage(175,20))

Les réponses:

  • Le pouls moyen est de 110 et la durée de la séance d'entraînement est de 60 minutes = 365 Calories
  • Le pouls moyen est de 140 et la durée de la séance d'entraînement est de 45 minutes = 372 Calories
  • Le pouls moyen est de 175 et la durée de la séance d'entraînement est de 20 minutes = 337 Calories

Accéder aux Coefficients

Regardez les coefficients :

  • Calorie_Burnage augmente de 3,17 si Average_Pulse augmente de un.
  • Calorie_Burnage augmente de 5,84 si la durée augmente de un.

Accéder à la valeur P

Regardez la valeur P pour chaque coefficient.

  • La valeur P est de 0,00 pour Average_Pulse, Duration et Intercept.
  • La valeur P est statistiquement significative pour toutes les variables, car elle est inférieure à 0,05.

Nous pouvons donc conclure ici que Average_Pulse et Duration ont une relation avec Calorie_Burnage.


R au carré ajusté

Il y a un problème avec le R au carré si nous avons plus d'une variable explicative.

Le R au carré augmentera presque toujours si nous ajoutons plus de variables et ne diminuera jamais.

C'est parce que nous ajoutons plus de points de données autour de la fonction de régression linéaire.

Si nous ajoutons des variables aléatoires qui n'affectent pas Calorie_Burnage, nous risquons de conclure à tort que la fonction de régression linéaire est un bon ajustement. Le R-carré ajusté s'ajuste à ce problème.

Il est donc préférable de regarder la valeur R-carré ajustée si nous avons plus d'une variable explicative.

Le R au carré ajusté est de 0,814.

La valeur de R-Squared est toujours comprise entre 0 et 1 (0% à 100%).

  • Une valeur R-Squared élevée signifie que de nombreux points de données sont proches de la ligne de la fonction de régression linéaire.
  • Une valeur R-Squared faible signifie que la ligne de la fonction de régression linéaire ne correspond pas bien aux données.

Conclusion : Le modèle correspond bien au point de données !

Toutes nos félicitations! Vous avez maintenant terminé le dernier module de la bibliothèque de science des données.