IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques d'apprentissage automatique Discussion :

Scikit learn [DEB] Regr lineaire pb de structure de données


Sujet :

Bibliothèques d'apprentissage automatique

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2012
    Messages : 112
    Points : 98
    Points
    98
    Par défaut Scikit learn [DEB] Regr lineaire pb de structure de données
    Bonjour à tous,
    Je n'arrive pas à me dépatouiller d'un problème de structure de données. J'utilise le modèle linéaire de la library scikit learn pour un régression linéaire simple.Voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    import numpy as np
    import pandas as pd
    from sklearn import linear_model
    #vecteurs de données dans un tableau numpy
    data= np.array([[12240, 27195, 37675,50962,55805],[4.9, 5.8, 6.5,7.32,7.2]])
    #Transposition
    data=data.T
    #création d'un datframe de shape(5,2) avec en tête
    frame=pd.DataFrame(data,columns=['pib','satisf'])
    X=frame['pib']
    y=frame['satisf']
    reg = linear_model.LinearRegression()
    reg.fit(X,y)
    Voici le code erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ValueError: Expected 2D array, got 1D array instead:
    array=[12240. 27195. 37675. 50962. 55805.].
    Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.]
    J'ai bien compris que python attend un tableau 2D or mon dataframe est 2D. J'ai essayé de reshaper mais je n'arrive à rien.
    Voici un code(qui n'est pas de moi) en tout point semblable sur un dataframe (62,2) qui marche parfaitement . Qu'elle est la différence de stucture des données ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    import pandas as pd
    import matplotlib.pyplot as plt
    import numpy as np
    import seaborn as sns
    from sklearn import linear_model
    #http://www.xavierdupre.fr/app/ensae_teaching_cs/helpsphinx/notebooks/
    #td2a_eco_regressions_lineaires.html
    iris = sns.load_dataset("iris")
    sns.pairplot(iris, hue="species");
    plt.show()
    #regression lineaire avec scikitlearn
    X = iris[["petal_length"]]
    y = iris["petal_width"]
    # On fit le modele
    model = linear_model.LinearRegression()
    results = model.fit(X, y)
    En vous remerciant de m'avoir consacré de votre temps

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par torquemada Voir le message
    Qu'elle est la différence de stucture des données ?
    Relisez les deux codes et soyez attentif à la subtile différence dans la construction du X =...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2012
    Messages : 112
    Points : 98
    Points
    98
    Par défaut
    A la vue de ces doubles crochets je m'étais acharné à tenter de modifier la structure de mes données d'origine ,d'autant plus que l'exemple de la doc officielle fait intervenir un tableau à double entrée pour les données
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    X  =  np . tableau ([[ 1 ,  1 ],  [ 1 ,  2 ],  [ 2 ,  2 ],  [ 2 ,  3 ]]) 
    >>> # y = 1 * x_0 + 2 * x_1 + 3 
    >>> y  =  np . dot ( X ,  np . array ([ 1 , 2 ]))  +  3 
    >>> reg  =  LinearRegression () . fit ( X ,  y )
    J'en conclus que si le vecteur de donnée est sur une colonne il suffit de le mettre en" double crochet".Merci une nouvelle fois Wiztricks.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/06/2016, 11h17
  2. regression knn avec scikit learn
    Par fafa isfan dans le forum Bibliothèques d'apprentissage automatique
    Réponses: 1
    Dernier message: 14/06/2016, 11h02
  3. probléme d'utilisation de scikit learn avec une dataframe de pandas
    Par fafa isfan dans le forum Bibliothèques d'apprentissage automatique
    Réponses: 1
    Dernier message: 13/06/2016, 11h45
  4. PCA et scikit-learn
    Par Fanuilos dans le forum Bibliothèques d'apprentissage automatique
    Réponses: 1
    Dernier message: 14/12/2013, 20h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo