我已经阅读了不同的算法,如k-modes,ROCK,liMBO,但是我想建立一个我的,并比较其他人的准确性和成本.
我有(m)训练集和(n = 22)特征
途径
我的方法很简单:
>步骤1:我计算形成(m * m)相似度矩阵的每个训练数据之间的jaccard相似度.
>步骤2:然后我执行一些 *** 作以找到最佳质心,并使用简单的k-means方法找到聚类.
在执行k均值算法时将使用在步骤1中创建的相似性矩阵
矩阵创建:
total_columns=22for i in range(0,data_set): for j in range(0,data_set): if j>=i: # Calculating jaccard similarity between two data rows i and j for column in data_set.columns: if data_orig[column][j]==data_new[column][i]: common_count=common_count+1 probability=common_count/float(total_columns) fnl_matrix[i][j] =probability fnl_matrix[j][i] =probability
我的fnl_matrix(6行)的部分快照如下:
问题陈述:
我面临的问题是,当我创建(m * m)矩阵时,对于更大的数据集,我的表现就是折腾.即使对于具有8000行的较小数据集,相似性矩阵的创建也需要无法忍受的时间.有什么方法可以调整我的代码或对矩阵做一些具有成本效益的事情.
解决方法 解释的Python代码很慢.真的很慢.这就是为什么好的python工具包包含大量的Cython代码甚至是C和Fortran代码(例如numpy中的矩阵运算),并且只使用Python来驱动整个过程.
如果您尝试尽可能多地使用numpy,则可能会大大加快代码速度.或者如果您使用Cython而不是.
考虑使用基于距离的聚类算法,而不是与质心作斗争:
>分层凝聚聚类(HAC),它需要距离矩阵> DBSCAN,可以任意距离工作.它甚至不需要距离矩阵,只需要某个阈值的类似项目列表.> K-medoIDs / PAM当然也值得一试;但通常不是很快.
总结以上是内存溢出为你收集整理的python-2.7 – 使用jaccard相似性聚类分类数据全部内容,希望文章能够帮你解决python-2.7 – 使用jaccard相似性聚类分类数据所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)