Partage
  • Partager sur Facebook
  • Partager sur Twitter

Afficher courbe régression linéaire

    27 novembre 2019 à 19:25:23

    Bonjour, voici un exercice d'un cours openclassroom pour lequel j'aimerai l'avis de quelqu'un, je veux être sûr d'avoir bien compris. 

    Dans cette activité, vous allez faire appel à tout ce que vous avez étudié dans la deuxième partie du cours. Nous allons nous intéresser à la relation entre la distance qui nous sépare d'une galaxie, et la vitesse à laquelle elle s'éloigne de nous. Cette relation fut découverte pour la première fois par Erwin Hubble en 1929. Son article est disponible ici

    Pour cela, vous aurez besoin du fichier hubble.csv.

    Votre tâche consiste à charger le contenu de ce fichier grâce à Pandas, regarder les données qu'elle contient, et effectuer une régression linéaire entre les deux variable distance et velocity

    Pour faire cette régression, vous devez utiliser la bibliothèque scikit-learn. La page de documentation la plus approprié pour cette activité est ici.

    Livrables

    Vous devrez aussi visualiser vos résultats, avec des graphiques de qualité (n'hésitez pas à relire le chapitre sur matplotlib).

    Ces graphiques doivent inclure à la fois les points de données, et la courbe obtenue grâce à la régression linéaire.

    import pandas as pd 
    import matplotlib.pyplot as plt
    import numpy as np
    from sklearn.linear_model import LinearRegression
    
    data = pd.read_csv('C:/Users/Barbara/Desktop/Raph/MOOC/Python/Exercice_librairies/hubble_data.csv')
    data.columns = ('distance', 'vitesse_eloignement')
    data



     distancevitesse_eloignement
    0 0.032 170
    1 0.034 290
    2 0.214 -130
    3 0.263 -70
    4 0.275 -185
    5 0.275 -220
    6 0.450 200
    7 0.500 290
    8 0.500 270
    9 0.630 200
    10 0.800 300
    11 0.900 -30
    12 0.900 650
    13 0.900 150
    14 0.900 500
    15 1.000 920
    16 1.100 450
    17 1.100 500
    18 1.400 500
    19 1.700 960
    20 2.000 500
    21 2.000 850
    22 2.000 800
    23 2.000 1090

    x = data['distance']
    y = data['vitesse_eloignement']
    plt.plot(x,y, 'o')
    plt.plot(x,y)
    plt.title('eloignement galaxies')
    plt.xlabel('distance')
    plt.ylabel('vitesse_eloignement')

    Ensuite pour utiliser sklearn je me base sur ce site 

     je code comme ceci 

    X = data[["distance"]]
    y = data["vitesse_eloignement"]
    
    model = LinearRegression()
    results = model.fit(X,y)
    a = results.intercept_ 
    b = float(results.coef_)
    print ('y =', a, '+', b, '*x')
    y = -40.783649095860596 + 454.1584409226286 *x
    Pour afficher la droite j'ai vu dans un autre cours, le code en ligne 5 
    x = data['distance']
    y = data['vitesse_eloignement']
    plt.plot(x,y, 'o')
    plt.plot(x,y)
    plt.plot(np.arange(3),[a+b*x for x in np.arange(3)])
    plt.title('eloignement galaxies')
    plt.xlabel('distance')
    plt.ylabel('vitesse_eloignement')
    Pensez-vous que je donne bien tous les livrables?  Dans l'énoncé il est demandé d'afficher une courbe c'est normal?
    Quelqu'un verrait comment améliorer le graphique ou une remarque sur le travail?
    Merci 

    -
    Edité par RaphaëlBitoun 27 novembre 2019 à 19:27:17

    • Partager sur Facebook
    • Partager sur Twitter
      27 novembre 2019 à 23:48:59

      C'est à la fin de l'énoncé, ce qu'il faut restituer pour l'exercice
      • Partager sur Facebook
      • Partager sur Twitter

      Afficher courbe régression linéaire

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown