Search code examples
scikit-learnsklearn-pandas

TypeError: unhashable type


I wrote a small piece of code to do linear regression using sklearn.

I created a 2 column csv file (column names X,Y with some numbers) and when I read the file I see that the content is properly read - as shown below.

However, I am getting "unhashable type" error when I try to refer to a column using the commands datafile[:,:] or datafile[:,-1] etc.

And when I try to use X as a response and Y as a predictor in sklearn's linear regression, I am getting a Value error as shown below.

I looked online but was not able to figure out what is wrong with my code or file.

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]

Solution

  • If you want to use the slice syntax to select from a dataframe you have to use

    data.iloc[:,:1]
    

    For your second problem, the X input needs to be a matrix, not a vector, so either include more columns or use the syntax:

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