Python数据分析与挖掘实战5-1代码错误解决办法

在学习《Python数据分析与挖掘实战》这本书的同学会发现,如果对第五章的5-1示例代码不加修改会出现这样的错误:IndexError: boolean index did not match indexed array along dimension 0; dimension is 9 but corresponding boolean dimension is 8.

小编去网上了找了一圈解决办法,结果没有找到,甚是失望,于是自己发奋想出一个办法,在这里分享给大家。

这是书上的代码:

#-*- coding: utf-8 -*-#逻辑回归 自动建模import pandas as pd#参数初始化filename = '../data/bankloan.xls'data = pd.read_excel(filename)x = data.iloc[:,:8].as_matrix()y = data.iloc[:,8].as_matrix()from sklearn.linear_model import LogisticRegression as LRfrom sklearn.linear_model import RandomizedLogisticRegression as RLR rlr = RLR() #建立随机逻辑回归模型,筛选变量rlr.fit(x, y) #训练模型rlr.get_support() #获取特征筛选结果,也可以通过.scores_方法获取各个特征的分数print(u'通过随机逻辑回归模型筛选特征结束。')print(u'有效特征为:%s' % ','.join(data.columns[rlr.get_support()]))x = data[data.columns[rlr.get_support()]].as_matrix() #筛选好特征lr = LR() #建立逻辑货柜模型lr.fit(x, y) #用筛选后的特征数据来训练模型print(u'逻辑回归模型训练结束。')print(u'模型的平均正确率为:%s' % lr.score(x, y)) #给出模型的平均正确率,本例为81.4%

运行出现的错误的意思就是导入的数据的列数和相应的布尔维不同,其实这时我们把数据的相应列去除即可,修改后的代码如下:

#-*- coding: utf-8 -*-

#逻辑回归 自动建模

importpandasaspd

#参数初始化

filename ='../data/bankloan.xls'

data = pd.read_excel(filename)x = data.iloc[:,:8].as_matrix()y = data.iloc[:,8].as_matrix()

fromsklearn.linear_modelimportLogisticRegressionasLR

fromsklearn.linear_modelimportRandomizedLogisticRegressionasRLR rlr = RLR()#建立随机逻辑回归模型,筛选变量

rlr.fit(x, y)#训练模型

rlr.get_support()#获取特征筛选结果,也可以通过.scores_方法获取各个特征的分数

print(u'通过随机逻辑回归模型筛选特征结束。')data2 = data.drop('违约',1)#去除y列

print(u'有效特征为:%s'%','.join(data2.columns[rlr.get_support()]))x = data[data2.columns[rlr.get_support()]].as_matrix()#筛选好特征

lr = LR()#建立逻辑货柜模型

lr.fit(x, y)#用筛选后的特征数据来训练模型

print(u'逻辑回归模型训练结束。')print(u'模型的平均正确率为:%s'% lr.score(x, y))#给出模型的平均正确率,本例为81.4%

运行修改后的代码,就可以得到正确结果了:

本公众号原创作品,未经授权禁止转载,特此声明,谢谢合作!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180128G093E700?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券