2015-11-14 24 views
1

我试图在地震颠簸dataset上运行kNN分类器,但是当我尝试编码shift属性的标签时,我得到了错误的值错误。以下是代码:Scikit学习不良输入形状()为特定的列

col_names = ['seismic', 'seismoacoustic', 'shift', 
     'genergy', 'gpuls', 'gdenergy', 'gdpuls', 
     'ghazard', 'nbumps', 'nbumps2', 'nbumps3', 
     'nbumps4', 'nbumps5', 'nbumps6', 'nbumps7', 
     'nbumps89', 'energy', 'maxenergy', 'class'] 

# Import 
sbumps_ds = pd.read_csv('SeismicBumpsDataset.csv', names = col_names) 

from sklearn.preprocessing import LabelEncoder 
labelenc = LabelEncoder() 

# Encode class names to numbers 
#sbumps_ds['seismic'] = labelenc.fit_transform(sbumps_ds.seismic) 
#sbumps_ds['seismoacoustic'] = labelenc.fit_transform(sbumps_ds.seismoacoustic) 
sbumps_ds['shift'] = labelenc.fit_transform(sbumps_ds.shift) 
#sbumps_ds['ghazard'] = labelenc.fit_transform(sbumps_ds.ghazard) 
#sbumps_ds['shift'] = sbumps_ds.shift.map({'W' : 0, 'N' : 1}) 
#sbumps_ds['seismic'] = sbumps_ds.seismic.map({'a':0, 'b':1, 'c':2, 'd': 3}) 

所有属性的形状都是相同的。 以下是错误:

raise ValueError("bad input shape {0}".format(shape)) 
ValueError: bad input shape() 

此外,当我尝试映射属性值,我得到这个错误:

sbumps_ds['shift'] = sbumps_ds.shift.map({'W' : 0, 'N' : 1}) 
AttributeError: 'function' object has no attribute 'map' 

将引发错误只该属性。如果我更改班次的名称,分类器的作品。

+0

DataFrames有一个[shift](http://pandas.pydata.org/pandas-docs/version/0.17.0/generated/pandas.DataFrame.shift.html)方法 – JaminSore

+0

我的谷歌技能吸我猜.. 。 谢谢 :) – fxhh

回答

2

尝试将其更改为sbumps_ds['shift'].map(...)

sbumpt_ds.shift是一种数据框的方法,因此它返回该函数而不是名为"shift"的列。