當前位置:
首頁 > 最新 > Python數據分析與挖掘實戰5-1代碼錯誤解決辦法

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%

運行修改後的代碼,就可以得到正確結果了:

本公眾號原創作品,未經授權禁止轉載,特此聲明,謝謝合作!


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python 的精彩文章:

Linux及Python入門須知

TAG:Python |