比如同一簇开头是大幅上升的形状,但是通过ks.cluster_centers_[yi].ravel()画出来的聚点的开头是大幅下降的形状。
是我的代码有什么问题吗?
以及kshape中seed的设置有什么好的方法吗?不同seed出来的结果一致,但聚点和聚类效果不一样,怎么找到一个比较合适的seed。
求指教!
import numpy as np
from tslearn.clustering import KShape
from tslearn.preprocessing import TimeSeriesScalerMeanVariance
X = TimeSeriesScalerMeanVariance(mu=0.0, std=1.0).fit_transform(X) # 标准化数据
ks = KShape(n_clusters=num_cluster, n_init=5, verbose=True, random_state=seed)
y_pred = ks.fit_predict(X) # 训练模型
dists = ks._cross_dists(X)
np.fill_diagonal(dists, 0)
# …… 省略部分代码
plt.plot(ks.cluster_centers_[yi].ravel(), "r-") # 画聚点的代码
实际图不方便展示,手动画了个图,灰色为原始数据,红色为聚点。
''该回答引用ChatGPT''
希望对你有帮助
无法确定代码中的问题所在。可以考虑调整参数,如调整标准化方式、聚类数量等,也可以考虑使用其他的时间序列聚类算法进行比较。
关于seed的设置,使用随机数种子可以使得训练结果具有可重复性,但对于寻找最佳seed值,没有统一的方法,可以通过不断调整seed的值,观察不同的训练结果,找到合适的种子。