Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python(scipy)和空间和时间变量进行集群_Python_Numpy_Scipy_Cluster Analysis_Euclidean Distance - Fatal编程技术网

使用python(scipy)和空间和时间变量进行集群

使用python(scipy)和空间和时间变量进行集群,python,numpy,scipy,cluster-analysis,euclidean-distance,Python,Numpy,Scipy,Cluster Analysis,Euclidean Distance,“我的数据集”的格式: [x坐标,y坐标,小时],小时为0到23之间的整数值 我现在的问题是,当我需要一个欧几里德距离度量作为坐标,但小时数需要一个不同的度量(因为在欧几里德距离度量中d(23,0)是23)时,如何对这些数据进行聚类。是否可以为scipy中的每个功能使用不同的距离度量对数据进行聚类?怎么做 谢谢您需要定义自己的度量,它以适当的方式处理“时间”。在文档中,您可以定义自己的功能 Y = pdist(X, f) 使用用户提供的二元函数f计算X中所有向量对之间的距离。[…]例如,向量之

“我的数据集”的格式: [x坐标,y坐标,小时],小时为0到23之间的整数值

我现在的问题是,当我需要一个欧几里德距离度量作为坐标,但小时数需要一个不同的度量(因为在欧几里德距离度量中d(23,0)是23)时,如何对这些数据进行聚类。是否可以为scipy中的每个功能使用不同的距离度量对数据进行聚类?怎么做


谢谢

您需要定义自己的度量,它以适当的方式处理“时间”。在文档中,您可以定义自己的功能

Y = pdist(X, f)
使用用户提供的二元函数f计算X中所有向量对之间的距离。[…]例如,向量之间的欧几里德距离可计算如下:

该度量可以通过
metric
关键字传递给任何scipy聚类算法。例如,使用:


你想使用什么样的聚类技术?目前我正在试验kmeans,但是任何能产生好结果的聚类方法都可以。你相信它会收敛吗?我会这样做的方式是在每次迭代的字典的基础上,用我自己的修改来修改补丁。我认为这样做不会太困难。如果选择好不同度量的距离,它应该会收敛,目前我正在尝试重写kmeans算法的一部分,以便它可以处理每个特性的不同距离度量。因为我是python新手,但这可能需要一段时间。但我觉得这是唯一的解决方案。添加了一个回复,然后搜索了什么是聚类,n发现你实际上不想只计算一侧(x0,y0)和(x1,y1)之间的距离,另一侧(h0)和(h1)之间的时间差,但是使用一个数据结构-如果你想这样做,我可以取消删除我的回复though@user2768102没问题,欢迎使用堆栈溢出!小提示更好的帖子,你不需要在帖子中说“谢谢/请/干杯”,因为我们喜欢降低信噪比。
dm = pdist(X, lambda u, v: np.sqrt(((u-v)**2).sum()))
scipy.cluster.hierarchy.linkage(y, method='single', metric='euclidean')