《机器学习实战》第九章
在學習《Machine Learning in Active》的第九章時,由于自己使用的是python3所以在測試代碼時出現(xiàn)了不少錯誤,下面就做一下整合,并給出解決方法
1.NameError: name 'errType' is not defined
最開始提示NameError: name 'errType' is not defined錯誤,所以我就把函數(shù)createTree()和chooseBestSplit()的聲明改了一下。
原來的是:
def createTree(dataSet, leafType = regLeaf, errType = regErr, ops = (1, 4)):
和
def chooseBestSplit(dataSet, leafType = regLeaf, errType = regErr, ops = (1, 4)):
我的改法:
def?createTree(dataSet, ops = (1, 4)):
和
def?createTree(dataSet, ops = (1, 4)):
但是要記住要把兩個函數(shù)中出現(xiàn)的所有l(wèi)eafType換成regLeaf,所有errType換成regErr,一定要注意,改了之后還要注意createTree()函數(shù)是一個迭代函數(shù),函數(shù)里面的迭代語句里的四個參數(shù)也要改成2個,還有就是之后的算法中會修改leafType和errType的值,因為我們把它去掉了,所以要修改算法中的每一個leafType和errType
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
注意:后來發(fā)現(xiàn),一定要把regLeaf和regErr放在createTree函數(shù)之前就可以編譯通過了,這樣就不用一直去修改函數(shù)名了
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
2.TypeError: unhashable type: 'matrix'
然后就出現(xiàn)了這個錯誤TypeError: unhashable type: 'matrix',錯誤出現(xiàn)在for splitVal in set(dataSet[:,featIndex]):這一條語句上,問題出現(xiàn)在set()函數(shù)的使用上,代碼上邊有這樣一條語句:if len(set(dataSet[:,-1].T.tolist()[0])) == 1:
所以很容易就可以把原語句改成
for splitVal in set(dataSet[:,featIndex].T.tolist()[0]):
3.IndexError: index 0 is out of bounds for axis 0 with size 0
這個錯誤沒啥可說的,直接把函數(shù)binSplitDataSet()里的mat0和mat1賦值語句的最后的[0]去掉就可以了
4.TypeError: unsupported operand type(s) for /: 'map' and 'int'
?這個錯誤困擾我很久,最后才想到它的錯誤不在提示的那一行,而是在最開始文件導入的函數(shù)loadDataSet()里,將
fltLine = map(float, curLine)
改成
fltLine = list(map(float, curLine))
就可以了
總結
以上是生活随笔為你收集整理的《机器学习实战》第九章的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python3.5将list类型转换为矩
- 下一篇: 《机器学习实战》第十章错误总结