在群集中向数据集添加条件

时间:2017-08-29 06:11:13

标签: python vector machine-learning k-means dbscan

我对ML和Datascience很陌生,所以我的问题可能有些愚蠢。 我有一个数据集,每一行都是一个向量[a1,a2,a3,a3,...,an]。那些矢量不仅在它们的测量中是不同的,而且在n的数量和总和A = a1 + a2 + a3 + ... + a中是不同的。

大多数载体具有5-6个维度,在15-20维度有一些例外。平均而言,它们的成分通常具有40-50的值。

我尝试过将Kmeans,DBSCAN和GMM聚集起来:

  • Kmeans总体上给出了最好的结果,然而,对于具有2-3维度和具有低A的向量的向量,它通常被错误分类。
  • DBSCAN只能从数据集中分离出低维和低A的向量,其余的则视为噪声。
  • GMM将矢量分为5-10维,低A,非常好,但其余部分表现不佳。

现在我想将n和A的信息包含在流程中。例: -Vector 1 [0,1,2,1,0]和Vector 2 [0,2,4,5,3,2,1,0],它们在n和A都是不同的,它们不能在同一个集群。在考虑其组件之前,每个群集仅包含具有相似(接近值)A和n的向量。

我在Python上使用sklearn,我很高兴听到有关此问题的建议和建议。

1 个答案:

答案 0 :(得分:1)

您的主要问题是如何衡量相似性。

我很惊讶你有算法可以运行,因为通常他们会期望所有向量的长度都与计算距离完全相同。也许你让它们自动填满0值 - 这也许就是为什么长矢量最终离其他所有数据都很远。

不要将算法用作黑匣子

需要了解他们正在做什么或结果可能无用。在你的情况下,他们使用的距离很远,所以结果当然不是很好。

首先,您需要找到一种更好的方法来计算不同长度的两个点的距离。 [0,1,2,1,0]和[30,40,50,60,50,40,30]应该有多相似。对我来说,这是一个非常相似的模式(加速,减速)。