【发布时间】:2015-07-20 07:55:38
【问题描述】:
我正在尝试为分类数据构建聚类算法。
我已经阅读了不同的算法,例如 k-modes、ROCK、LIMBO,但是我想构建自己的一个,并将准确性和成本与其他算法进行比较。
我有 (m) 个训练集和 (n=22) 个特征
方法
我的方法很简单:
- 第 1 步:计算每个训练数据之间的 Jaccard 相似度,形成一个 (m*m) 相似度矩阵。
- 第 2 步:然后我执行一些操作以找到最佳质心并使用简单的 k-means 方法找到聚类。
我在步骤 1 中创建的相似度矩阵将在执行 k-means 算法时使用
矩阵创建:
total_columns=22
for 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-2.7 machine-learning cluster-analysis data-mining k-means