Python數據分析與挖掘實戰5-1代碼錯誤解決辦法
GIF
在學習《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%
運行修改後的代碼,就可以得到正確結果了:
本公眾號原創作品,未經授權禁止轉載,特此聲明,謝謝合作!
TAG:Python |