python-2.7 – 使用jaccard相似性聚类分类数据

python-2.7 – 使用jaccard相似性聚类分类数据,第1张

概述我正在尝试为分类数据构建聚类算法. 我已经阅读了不同的算法,如k-modes,ROCK,LIMBO,但是我想建立一个我的,并比较其他人的准确性和成本. 我有(m)训练集和(n = 22)特征 途径 我的方法很简单: >步骤1:我计算形成(m * m)相似度矩阵的每个训练数据之间的jaccard相似度. >步骤2:然后我执行一些 *** 作以找到最佳质心,并使用简单的k-means方法找到聚类. 在执行k均 我正在尝试为分类数据构建聚类算法.

我已经阅读了不同的算法,如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相似性聚类分类数据所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1193370.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存