问题:NameError: name 'weights' is not defined
属于作者的排版错误;
weights = logRegres.gradAscent(dataArr,labelMat)
所以: weights.getA()是什么?
matrix.getA()
Return self as an ndarray object.
Equivalent to np.asarray(self).
Parameters: None
Returns: ret : ndarrayself as an ndarray
也就是说矩阵通过这个getA()这个方法可以将自身返回成一个n维数组对象为什么要这样做呢?
因为plotBestFit()函数中有计算散点x,y坐标的部分,其中计算y的时候用到了weights,如果weights是矩阵的话,weights[1]就是[[0.48007329]](注意这里有中括号!),就不是一个数了,最终你会发现y的计算结果的len()只有1,而x的len()则是60
问题:AttributeError: 'numpy.ndarray' object has no attribute 'getA'
究其原因,还是因为原书中代码有错误(翻遍了整个CSDN都没有结果,最后还是翻了原作者提供的代码明白的,作者也把代码更正过来了