返回信息流楼主学渣,近期在看数据挖掘方面的博客。有一篇最普通的使用 kmeans算法实现聚类的博客,楼主照着博客,跑了下程序,出现了下面的问题
File "C:/Users/hejiannum1/PycharmProjects/untitled7/test.py", line 21, in <module>
centroids, clusterAssment = kmeans(dataSet, k)
File "C:\Users\hejiannum1\PycharmProjects\untitled7\kmeans.py", line 39, in kmeans
distance = euclDistance(centroids[j, :], dataSet[i, :])
File "C:\Users\hejiannum1\PycharmProjects\untitled7\kmeans.py", line 8, in euclDistance
return sqrt(sum(power(vector2 - vector1, 2)))
TypeError: unsupported operand type(s) for -: 'matrix' and 'numpy.ndarray'
好像是因为dataSet是矩阵,而算欧氏距离时的centroids是数组.
楼主小白,想不明白定义dataSet时,也只是普通的获取文本数据成[]怎么就不能和centroids中数组匹配了呢。
因为是赶鸭子上架,确实有很多基础知识不扎实,所以问的问题白痴请见谅,希望大神不吝赐教
这是一条镜像帖。来源:北邮人论坛 / python / #13108同步于 2016/4/4
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖
[问题]机器学习K-MEANS算法用Python实现时矩阵和数组的问题
heluan
2016/4/4镜像同步10 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
这是博客地址:http://blog.csdn.net/zouxy09/article/details/17589329
底下也有人问相同的问题,奈何没有解决
google发现这样一个差不多的问题http://stackoverflow.com/questions/16330366/typeerror-unsupported-operand-types-for-numpy-ndarray-and-numpy-ndarray
但是也并没有帮助啊。
明白了,感谢
【 在 moonfighting 的大作中提到: 】
: 原博的那个代码挺乱的感觉,一会用matrix,一会用ndarray,建议你看懂原理后自己写一遍,比这样看别人代码简单多了
:
我记得那个风格是如实描述出现的问题,而不是提出自己的猜测?
【 在 andlase 的大作中提到: 】
: stackoverflow 风格么。。。
: 【 在 jh1 的大作中提到: 】
: : 喜欢这样的提问方式
:
:
发自「贵邮」
建议看scikit-learn的API。
http://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html#sklearn.cluster.KMeans
在最底下有例子,你可以借鉴一下