1. 程式人生 > >《機器學習實戰》第7章的一處代碼錯誤

《機器學習實戰》第7章的一處代碼錯誤

traceback com post cond 解決 elm back document image

---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-69-fab03f1fce4e> in <module>()
----> 1 adaboost.buildStump(dataArr, labelArr, D)

/home/cavin/Documents/BookData/machinelearninginaction/Ch07/adaboost.py in buildStump(dataArr, classLabels, D)
     44                 predictedVals = stumpClassify(dataMatrix, i, threshVal, inequal)
     45                 errArr = np.mat(np.ones((m, 1)))
---> 46                 errArr[predictedVals == labelMat] = 0
     47                 weightedError = D.T * errArr
     48                 print("""split: dim %d, thresh %.2f, thresh inequal: 

IndexError: index 1 is out of bounds for axis 1 with size 1

P120 程序清單7-1 單層決策樹生成函數

def buildStump(dataArr, classLabels, D):
    ...
    errArr[predictedVals == labelMat] = 0

在3.6版本的anaconda下執行會提示錯誤:
技術分享圖片

解決方法:

errArr[predictedVals == labelMat.T] = 0

也就是把labelMat轉置,出現這個錯誤原因是predictedValslabelMat的shape不同導致的

《機器學習實戰》第7章的一處代碼錯誤