《机器学习实战》第十章错误总结
生活随笔
收集整理的這篇文章主要介紹了
《机器学习实战》第十章错误总结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這一章完成后發現自己的基礎還不牢固,先來復習下基礎
( )———元組tuples
[ ]———列表list
{ }———字典dict
尤其是列表list,一定要看清有多少個[ ]
下邊的錯誤就是由于基礎不牢導致的
return np.matrix(centList), clusterAssment提示錯誤ValueError: matrix must be 2-dimensional
或者TypeError: list indices must be integers or slices, not tuple
找到centList的賦值語句
根據錯誤提示可以看出是centList的數值有問題,加一條語句
print(centList)可以看到輸出大概是這樣的
[matrix([[-122.54868607, 45.51882187]]), matrix([[-122.65589505, 45.49371211]]), matrix([[-122.842918, 45.646831]]), matrix([[-122.7680632, 45.4665528]]), matrix([[-122.68216889, 45.56573522]])]所以很容易就知道怎么改了,賦值語句不應該把matrix型數據直接賦過去,應該先把數據轉換格式再賦值,即
centList[bestCentToSplit] = bestNewCents[0, :].tolist() centList.append(bestNewCents[1, :].tolist())我滿心歡喜地以為應該成功了,結果提示錯誤
ValueError: matrix must be 2-dimensional輸出的centList為
[[[-122.55924017857146, 45.52238271428571]], [[-122.65691647999998, 45.50956080000001]], [[-122.755383, 45.5949895]], [[-122.7680632, 45.4665528]], [[-122.40092849999999, 45.46897]]]根據輸出我們可以很容易知道多了一個[ ],使得centList的秩為1,所以接下來就是怎么去掉一個[ ],我想了很久(基礎不牢固),后來查了一些資料,發現應該改成這樣
centList[bestCentToSplit] = bestNewCents[0, :].tolist()[0] centList.append(bestNewCents[1, :].tolist()[0])然后,成功。
總結
以上是生活随笔為你收集整理的《机器学习实战》第十章错误总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python自带的sum()函数和num
- 下一篇: 机器学习第十二章