【发布时间】:2014-09-09 14:13:13
【问题描述】:
我有一个名为 training 的数据集,它是在使用 Pandas 进行操作时读取的。大约有 150 个变量,所以我将它们放在一个列表中,我想将它们传递给岭回归;但是,我收到一条错误消息“不可散列的类型:列表”
我可能遗漏了一些明显的东西,因为这是我第一次使用 python(用于 R 和 Stata)。
代码如下:
# Variables to use (potentially) -- for dummies, one has already been taken out to avoid dummy var trap
continuous_vars = ['VehicleAge','VehOdo', 'MMRAcquisitionAuctionAveragePrice', 'MMRAcquisitionAuctionCleanPrice', 'MMRAcquisitionRetailAveragePrice', 'MMRAcquisitonRetailCleanPrice', 'MMRCurrentAuctionAveragePrice', 'MMRCurrentAuctionCleanPrice', 'MMRCurrentRetailAveragePrice', 'MMRCurrentRetailCleanPrice', 'VehBCost', 'IsOnlineSale', 'WarrantyCost', 'reliability_score', 'num_bought']
make_cats = ['BUICK', 'CADILLAC', 'CHEVROLET', 'CHRYSLER', 'DODGE', 'FORD', 'GMC', 'HONDA', 'HUMMER', 'HYUNDAI', 'INFINITI', 'ISUZU', 'JEEP', 'KIA', 'LEXUS', 'LINCOLN', 'MAZDA', 'MERCURY', 'MINI', 'MITSUBISHI', 'NISSAN', 'OLDSMOBILE', 'PLYMOUTH', 'PONTIAC', 'SATURN', 'SCION', 'SUBARU', 'SUZUKI', 'TOYOTA', 'TOYOTA SCION', 'VOLKSWAGEN', 'VOLVO']
state_cats = ['AR', 'AZ', 'CA', 'CO', 'FL', 'GA', 'IA', 'ID', 'IL', 'IN', 'KY', 'LA', 'MA', 'MD', 'MI', 'MN', 'MO', 'MS', 'NC', 'NE', 'NH', 'NJ', 'NM', 'NV', 'NY', 'OH', 'OK', 'OR', 'PA', 'SC', 'TN', 'TX', 'UT', 'VA', 'WA', 'WV']
auction_cats = ['ADESA', 'MANHEIM', 'OTHER']
trans_cats = ['AUTO']
color_cats = ['BEIGE', 'BLACK', 'BLUE', 'BROWN', 'GOLD', 'GREEN', 'GREY', 'MAROON', 'NOT AVAIL', 'ORANGE', 'OTHER', 'PURPLE', 'RED', 'SILVER', 'WHITE', 'YELLOW']
wheel_cats = ['Alloy', 'Covers', 'Special']
nat_cats = ['AMERICAN', 'OTHER', 'OTHER ASIAN', 'TOP LINE ASIAN']
size_cats =['COMPACT', 'CROSSOVER', 'LARGE', 'LARGE SUV', 'LARGE TRUCK', 'MEDIUM', 'MEDIUM SUV', 'SMALL SUV', 'SMALL TRUCK', 'SPECIALTY', 'SPORTS', 'VAN']
year_cats = ['2001', '2002', '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010_x']
all_vars = continuous_vars + make_cats + state_cats + auction_cats + trans_cats + color_cats + wheel_cats + nat_cats + size_cats + year_cats
hashable = all_vars
## Ridge Regression
ridge_reg = Ridge(alpha=1)
ridge_reg.fit(training[hashable], training['IsBadBuy'])
更新 我更新了代码以反映一些建议。这是新的错误消息:
File "C:\Anaconda\lib\site-packages\pandas\core\indexing.py", line 1068, in _convert_to_indexer
raise KeyError('%s not in index' % objarr[mask])
KeyError: "['reliability_score' 'num_bought' 'BUICK' 'CADILLAC' 'CHEVROLET' 'CHRYSLER'\n 'DODGE' 'FORD' 'GMC' 'HONDA' 'HUMMER' 'HYUNDAI' 'INFINITI' 'ISUZU' 'JEEP'\n 'KIA' 'LEXUS' 'LINCOLN' 'MAZDA' 'MERCURY' 'MINI' 'MITSUBISHI' 'NISSAN'\n 'OLDSMOBILE' 'PLYMOUTH' 'PONTIAC' 'SATURN' 'SCION' 'SUBARU' 'SUZUKI'\n 'TOYOTA' 'TOYOTA SCION' 'VOLKSWAGEN' 'VOLVO' 'AR' 'AZ' 'CA' 'CO' 'FL' 'GA'\n 'IA' 'ID' 'IL' 'IN' 'KY' 'LA' 'MA' 'MD' 'MI' 'MN' 'MO' 'MS' 'NC' 'NE' 'NH'\n 'NJ' 'NM' 'NV' 'NY' 'OH' 'OK' 'OR' 'PA' 'SC' 'TN' 'TX' 'UT' 'VA' 'WA' 'WV'\n 'ADESA' 'MANHEIM' 'OTHER' 'AUTO' 'BEIGE' 'BLACK' 'BLUE' 'BROWN' 'GOLD'\n 'GREEN' 'GREY' 'MAROON' 'NOT AVAIL' 'ORANGE' 'OTHER' 'PURPLE' 'RED'\n 'SILVER' 'WHITE' 'YELLOW' 'Alloy' 'Covers' 'Special' 'AMERICAN' 'OTHER'\n 'OTHER ASIAN' 'TOP LINE ASIAN' 'COMPACT' 'CROSSOVER' 'LARGE' 'LARGE SUV'\n 'LARGE TRUCK' 'MEDIUM' 'MEDIUM SUV' 'SMALL SUV' 'SMALL TRUCK' 'SPECIALTY'\n 'SPORTS' 'VAN' '2001' '2002' '2003' '2004' '2005' '2006' '2007' '2008'\n '2009' '2010_x'] not in index"
【问题讨论】:
-
我注意到 KeyError 输出中有一些
\n。你可能会调查这些是从哪里来的。 -
您不需要创建临时文件来保存结果,您可以使用
print(all_vars)的结果编辑您的问题吗,您似乎已经为克莱斯勒、吉普车嵌入了\n, 2008 ..等 -
您还可以从
training.info()或training.columns打印输出吗?您的列名可能嵌入了\n或与您尝试的列之一不匹配,您可以尝试每个对每一轮进行分组以查看它们是否作为列选择工作 -
与其用另一个问题更新这个问题,为什么不接受对您有帮助的答案,并提出一个新问题呢?这样对每个人都更好!
标签: python pandas scikit-learn modeling