使用 DTW 距离矩阵的凝聚聚类
Agglomerative clustering using DTW distance matrix
我正在尝试对时间序列数据集进行聚类。为此,我计算了成对的 DTW 距离。这些数据收集在距离矩阵中,我想将其用作 AgglomerativeClustering() sklearn 方法的输入。
看来我需要为它使用一个压缩距离矩阵。但如果我这样做,聚类方法会将每个距离解释为一个新样本,所以我得到了太多标签。我应该如何正确执行此操作?
这是我试过的示例代码:
import numpy as np
# Test symmetric matrix
N = 4
b = np.random.randint(0,5,size=(N,N))
b_symm = (b + b.T)/2
np.fill_diagonal(b_symm,np.zeros(N))
# Condensed matrix
condensed = squareform(b_symm)
model = AgglomerativeClustering(n_clusters=2, linkage=linkage)
y = model.fit_predict(condensed.reshape(-1,1))
请参阅文档:
http://scikit-learn.org/stable/modules/generated/sklearn.cluster.AgglomerativeClustering.html
affinity : string or callable, default: “euclidean”
Metric used to compute the linkage. Can be “euclidean”, “l1”, “l2”, “manhattan”, “cosine”, or ‘precomputed’. If linkage is “ward”, only “euclidean” is accepted.
我正在尝试对时间序列数据集进行聚类。为此,我计算了成对的 DTW 距离。这些数据收集在距离矩阵中,我想将其用作 AgglomerativeClustering() sklearn 方法的输入。
看来我需要为它使用一个压缩距离矩阵。但如果我这样做,聚类方法会将每个距离解释为一个新样本,所以我得到了太多标签。我应该如何正确执行此操作?
这是我试过的示例代码:
import numpy as np
# Test symmetric matrix
N = 4
b = np.random.randint(0,5,size=(N,N))
b_symm = (b + b.T)/2
np.fill_diagonal(b_symm,np.zeros(N))
# Condensed matrix
condensed = squareform(b_symm)
model = AgglomerativeClustering(n_clusters=2, linkage=linkage)
y = model.fit_predict(condensed.reshape(-1,1))
请参阅文档:
http://scikit-learn.org/stable/modules/generated/sklearn.cluster.AgglomerativeClustering.html
affinity : string or callable, default: “euclidean”
Metric used to compute the linkage. Can be “euclidean”, “l1”, “l2”, “manhattan”, “cosine”, or ‘precomputed’. If linkage is “ward”, only “euclidean” is accepted.