沒辦法,雖讓Py2.x和Py3.x是兩種不同的語(yǔ)言呢,不可避免擼這章的時(shí)候還是出現(xiàn)問題。
在“程序清單4-5,文件解析及完整的垃圾郵件測(cè)試函數(shù)”代碼中應(yīng)將里面的setOfWords2Vec改為bagOfWords2VecMN
錯(cuò)誤:
UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 199: illegal multibyte sequence
那是因?yàn)闀系南旅孢@兩行代碼有點(diǎn)問題:
wordList = textParse(open('email/spam/%d.txt' % i).read()
wordList = textParse(open('email/ham/%d.txt' % i).read()
需要將上面的代碼更為下面這兩行:
wordList = textParse(open('email/spam/%d.txt' % i, "rb").read().decode('GBK','ignore') )
wordList = textParse(open('email/ham/%d.txt' % i, "rb").read().decode('GBK','ignore') )
因?yàn)橛锌赡芪募写嬖陬愃啤?”非法字符。
在運(yùn)行程序清單中代碼時(shí)候出現(xiàn)錯(cuò)誤:
del(trainingSet[randIndex])
TypeError: 'range' object doesn't support item deletion
將代碼del(trainingSet[randIndex])上面第4行代碼trainingSet = range(50)改為:
trainingSet = list(range(50))
因?yàn)槭莗ython3中range不返回?cái)?shù)組對(duì)象,而是返回range對(duì)象
運(yùn)行<程序清單4-6 RSS源分類器及高頻詞去除函數(shù)>出現(xiàn)錯(cuò)誤。
這些問題前面都已經(jīng)遇到過(guò)了,輕車熟路。
AttributeError: 'dict' object has no attribute 'iteritems'
#將代碼中的iteritems更改為items就好了
TypeError: 'range' object doesn't support item deletion
#將此行代碼上面的第三行代碼中的trainingSet = range(2*minLen)更改為
#trainingSet = list(range(2*minLen))就好了。
運(yùn)行<程序清單4-7 最具表征性的詞匯顯示函數(shù)>時(shí),如果用書上的
if p0V[i] > -6.0和if p1V[i] > -6.0時(shí)候則打印出來(lái)的非常長(zhǎng)。將-6.0更改為大一些,則好一些,比如-5.4。
出現(xiàn)問題進(jìn)行搜索參考博客:
[機(jī)器學(xué)習(xí)&數(shù)據(jù)挖掘]樸素貝葉斯數(shù)學(xué)原理
TypeError: cannot use a string pattern on a bytes-like object解決方法
處理UnicodeDecodeError: ‘XXX' codec can't decode bytes in position...的問題
python3中報(bào)錯(cuò):TypeError: 'range' object doesn't support item deletion