Python Tutorial

Python Machine Learning Régression linéaire


Régression

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 d’événements futurs.


Régression linéaire

La régression linéaire utilise la relation entre les points de données pour tracer une ligne droite à travers eux.

Cette ligne peut être utilisée pour prédire les valeurs futures.

En Machine Learning, prédire l’avenir est très important.


Comment ça marche?

Python a des méthodes pour trouver une relation entre les points de données et pour tracer une ligne de régression linéaire. Nous allons vous montrer comment utiliser ces méthodes au lieu de passer par la formule mathématique.

Dans l’exemple ci-dessous, l’axe des x représente l’âge et l’axe des y représente la vitesse. Nous avons enregistré l’âge et la vitesse de 13 voitures alors qu’elles passaient devant un poste de péage. Voyons si les données que nous avons collectées pourraient être utilisées dans une régression linéaire :

Exemple

Commencez par dessiner un nuage de points :

importer matplotlib.pyplot en tant que 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()

Résultat:

Exemple d’exécution »

Exemple

Importer scipy et tracez la ligne de régression linéaire :

importer matplotlib.pyplot en tant que plt
à partir des statistiques d’importation scipy

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]

pente, interception, r, p, std_err = stats.linregress(x, y)

def myfonc(x):

pente de retour * x + interception

monmodèle = liste(carte(mafonction, x))

plt.scatter(x, y)
plt.plot(x, monmodèle)
plt.show()

Résultat:

Exemple d’exécution »

Exemple expliqué

Importez les modules dont vous avez besoin.

Vous pouvez en savoir plus sur le module Matplotlib dans notre tutoriel Matplotlib.

Vous pouvez en savoir plus sur le module SciPy dans notre didacticiel SciPy.

import matplotlib.pyplot as plt
from scipy
import stats

Créez les tableaux qui représentent les valeurs des axes x et y :


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]

Exécutez une méthode qui renvoie certaines valeurs clés importantes de la régression linéaire :


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

Créer une fonction qui utilise le slope et
intercept valeurs pour renvoyer une nouvelle valeur. Cette nouvelle valeur représente où sur l’axe y la valeur x correspondante sera placée :


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

Exécutez chaque valeur du tableau x via la fonction. Cela se traduira par un nouveau tableau avec de nouvelles valeurs pour l’axe des ordonnées :


mymodel = list(map(myfunc, x))

Dessinez le nuage de points d’origine :

Tracez la droite de régression linéaire :

Affichez le diagramme :



R pour Relation

Il est important de savoir quelle est la relation entre les valeurs de l’axe des x et les valeurs de l’axe des y, s’il n’y a pas de relation, la régression linéaire ne peut pas être utilisée pour prédire quoi que ce soit.

Cette relation – le coefficient de corrélation – est appelée
r.

Le r la valeur est comprise entre -1 et 1, où 0 signifie aucune relation et 1 (et -1) signifie 100 % lié.

Python et le module Scipy calculeront cette valeur pour vous, tout ce que vous avez à faire est de l’alimenter avec les valeurs x et y.

Exemple

Dans quelle mesure mes données s’intègrent-elles dans une régression linéaire ?

à partir des statistiques d’importation scipy

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]

pente, interception, r, p, std_err = stats.linregress(x, y)

impression(r)

Essayez-le vous-même »

Note: Le résultat -0,76 montre qu’il existe une relation, pas parfaite, mais il indique que nous pourrions utiliser la régression linéaire dans les prédictions futures.


Prédire les valeurs futures

Nous pouvons maintenant utiliser les informations que nous avons recueillies pour prédire les valeurs futures.

Exemple : Essayons de prédire la vitesse d’une voiture de 10 ans.

Pour ce faire, nous avons besoin du même myfunc() fonction de l’exemple ci-dessus :


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

Exemple

Prédire la vitesse d’une voiture de 10 ans :

à partir des statistiques d’importation scipy

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]

pente, interception, r, p, std_err = stats.linregress(x, y)

def myfonc(x):

pente de retour * x + interception

vitesse = myfonc(10)

impression (vitesse)

Exemple d’exécution »

L’exemple prévoyait une vitesse à 85,6, que nous pouvions également lire sur le diagramme :


Mauvais ajustement ?

Créons un exemple où la régression linéaire ne serait pas la meilleure méthode pour prédire les valeurs futures.

Exemple

Ces valeurs pour les axes x et y devraient entraîner un très mauvais ajustement pour la régression linéaire :

importer matplotlib.pyplot en tant que plt
à partir des statistiques d’importation scipy

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]

pente, interception, r, p, std_err = stats.linregress(x, y)

def myfonc(x):
pente de retour * x + interception

monmodèle = liste(carte(mafonction, x))

plt.scatter(x, y)
plt.plot(x, monmodèle)
plt.show()

Résultat:

Exemple d’exécution »

Et le r pour relation?

Exemple

Vous devriez obtenir un très faible r valeur.

importer numpy
à partir des statistiques d’importation scipy

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]

pente, interception, r, p, std_err = stats.linregress(x, y)

impression(r)

Essayez-le vous-même »

Le résultat : 0,013 indique une très mauvaise relation et nous indique que cet ensemble de données n’est pas adapté à la régression linéaire.


#Python #Machine #Learning #Régression #linéaire

Articles similaires

Bouton retour en haut de la page