2015-11-14 36 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"的列。