1.dict is not callable
tree是一個字典類型。
tree("left") -> tree["left"]
2.list indices must be integers or slices, not tuple
dataset是原生的python數組,是list類型(python原生數組叫list類型)
errorMerge = sum(power(dataset[:, -1] - treeMean, 2))
嘗試使用numpy裏面的array索引方式來索引原生數組,將會爆此錯誤。
3.'NoneType' object is not iterable
代碼返回值爲None, value;直接處理返回值第一個值將會爆此錯誤;
4.shapes (1,1) and (4,1) not aligned: 1 (dim 1) != 4 (dim 0)
# 基於給出的dataset,(新)生成K個樣本,用於作質點 def randCentoids(dataset, k): n = shape(dataset)[1] centoids = mat(zeros((k, n))) for j in range(n): minJ = min(dataset[:, j]) maxJ = max(dataset[:, j]) rangJ = maxJ - minJ centoids[:, j] = mat(minJ + rangJ * random.rand(k, 1)) return centoids
這個錯誤的意思是做爲矩陣相乘,行列數沒法直接相乘,由於min()和max返回的都是numpy.matrix類型;爲何會返回矩陣類型?由於dataset就是matrix類型,因此返回的雖然是單值,可是也會被認爲是矩陣類型。
rangJ = float(maxJ - minJ)
強轉爲float以後,問題解決。
5.could not broadcast input array from shape (2) into shape (1,1)
1 sampleCenterRecord = mat(zeros((m, 1))) 2 ... 3 dist = distCaculate(centroids[j, :], dataset[i, :])
sampleCenterRecord的維數定義有問題,改成(m, 2)問題解決。
6.IndexError: index 0 is out of bounds for axis 0 with size 0
1 os.chdir("D:\\galaxy\\aliyunsvn\\code\\MLInAction\\dataset") 2 dataArr = loadDataSet("ex00.txt") 3 dataMat = mat(dataArr) 4 value = [[0.996757]] 5 feature = 0 6 dataMat[nonzero(dataMat[:, feature] > value)[0], :][0]
這個是由於dataMat中知足這個條件的日誌的數量爲0,因此最後索引[0]回報數組越界異常。python
7.unhashable type: 'numpy.ndarray'
1 for splitVal in set(dataSet[:,featIndex].A): 2 ...
以前是異常是unhashable type: 'matrix',後來添加A想要嘗試轉化爲Array看看依然報錯。
這異常的意思是set裏面只支持python原生的數據類型,對於numpy的對象沒法識別(處理)。因此unhashable,本質就是參數類型不匹配。
7.only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices
這個異常說明了索引類型有問題:數組
overLap = nonzero(logical_and(dataMat[:, item].A>0, dataMat[:, j].A>0))[0]app
由於item是從參數過來,可是外部調用的時候這個參數誤傳爲一個function,故報錯。dom
8.data type must provide an itemsize xTx = xMat.T * xMat 這個執行的時候爆的錯,緣由就是在loadDataset的時候沒有進行發咯at轉化,直接處理,致使字符串之間矩陣運算致使異常。須要轉化爲float,問題解決1 def loadDataset(fileName): 2 X = [] 3 y = [] 4 for line in open(fileName): 5 values = line.split() 6 lineArr = [] 7 lineArr.append(float(values[0])) 8 lineArr.append(float(values[1])) 9 X.append(lineArr) 10 y.append(float(values[-1])) 11 return X, y
9. unhashable type: 'matrix'ide
1 for splitValue in set(dataset[:, featureIndex]): 2 ... ...
這是由於在python裏面set實際上是對於其裏面的元素取Hash值而後根據hashz值進行排序;可是若是是對於numpy.ndarry/ Matrix等被封裝的類型則沒法獲取其hash值,set裏面的元素只能是原生類型。做以下處理問題解決:svn
1 for splitValue in set(dataset[:, featureIndex]).A.flatten().tolist(): 2 ... ...
10. ValueError: Unknown label type: 'continuous'spa
發生這個異常是由於我使用了RandomForestClassification,可是y值卻使用了float,因此報錯;做爲分類器的y值必須是int,不然怎麼分類啊。rest