2015-12-11 25 views
4

我写了一小段代码来使用sklearn进行线性回归。TypeError:难以置信的类型

我创建了一个2列csv文件(列名为X,Y有一些数字),当我读取文件时,我看到内容已正确读取 - 如下所示。

但是,我得到“unhashable型”的错误,当我尝试使用命令datafile[:,:]datafile[:,-1]等来指代一列..

当我尝试使用X作为回应,Y为预测中sklearn的线性回归,我得到如下所示的Value错误。

我在网上查找,但无法弄清楚我的代码或文件出了什么问题。请帮忙。

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] 

回答

4

如果你想使用切片语法从数据框中选择你要使用

data.iloc[:,:1] 

对于你的第二个问题,X输入必须是一个矩阵,而不是一个矢量,所以或者包括更多列或使用以下语法:

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

非常感谢你.. – qurious

0

用于切分大熊猫数据帧的另一个较短的选项是:

data.ix[:,:1] 
+0

这已被弃用我认为有利于iloc的位置切片和LOC为基于标签的切片。 –

+0

感谢Michael的评论。这是准确的。 –