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
    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
    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
    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.

###raw>template_hook.ano_emploi###