web-dev-qa-db-fra.com

TypeError: type inshashable

J'ai écrit un petit morceau de code pour faire une régression linéaire en utilisant sklearn.

J'ai créé un fichier csv à 2 colonnes (noms de colonnes X, Y avec quelques chiffres) et lorsque je lis le fichier, je vois que le contenu est correctement lu - comme indiqué ci-dessous.

Cependant, je reçois une erreur de type "unhashablehable" lorsque j'essaie de faire référence à une colonne à l'aide des commandes datafile[:,:] ou datafile[:,-1], etc.

Et lorsque j'essaie d'utiliser X comme réponse, Y comme prédicteur dans la régression linéaire de sklearn, j'obtiens une erreur de valeur, comme indiqué ci-dessous.

J'ai regardé en ligne mais je ne suis pas capable de comprendre ce qui ne va pas avec mon code ou mon fichier. S'il vous plaît aider.

import pandas as pd
datafile=pd.read_csv('samplelinear.csv')
datafile

     X    Y    
0    0 1.440000 
1    1 33.220000 
. . . 

print datafile.__class__
<class 'pandas.core.frame.DataFrame'>

datafile[:,:]
TypeError: unhashable type

datafile[:,:1]
TypeError: unhashable type


from sklearn.linear_model import LinearRegression
model=LinearRegression()

model.fit(datafile.X,datafile.Y)
ValueError: Found arrays with inconsistent numbers of samples: [ 1 14]
8
qurious

Si vous souhaitez utiliser la syntaxe de slice pour sélectionner un cadre de données, vous devez utiliser

data.iloc[:,:1]

Pour votre deuxième problème, l'entrée X doit être une matrice, pas un vecteur. Vous devez donc inclure plus de colonnes ou utiliser la syntaxe

model.fit(pd.DataFrame(datafile.X), datafile.Y)
7
maxymoo

Une autre option plus courte pour le découpage de trames de données de pandas est la suivante:

 data.ix[:,:1]
0
Teddy Belay