Python用KShape对时间序列进行聚类和肘方法确定最优聚类数k可视化|附代码数据
2023-03-07 09:41:31 时间
全文链接:http://tecdat.cn/?p=27078
最近我们被客户要求撰写关于时间序列进行聚类的研究报告,包括一些图形和统计输出。
时序数据的聚类方法,该算法按照以下流程执行。
- 使用基于互相关测量的距离标度(基于形状的距离:SBD)
- 根据 1 计算时间序列聚类的质心。(一种新的基于质心的聚类算法,可保留时间序列的形状)
- 划分成每个簇的方法和一般的kmeans一样,但是在计算距离尺度和重心的时候使用上面的1和2。
import pandas as pd
# 读取数据帧,将其转化为时间序列数组,并将其存储在一个列表中 tata = [] for i, df in enmee(dfs):
# 检查每个时间序列数据的最大长度。 for ts in tsda:
if len(s) > ln_a:
lenmx = len(ts)
# 给出最后一个数据,以调整时间序列数据的长度 for i, ts in enumerate(tsdata):
dta[i] = ts + [ts[-1]] * n_dd
# 转换为矢量 stack_list = [] for j in range(len(timeseries_dataset)):
stack_list.append(data)
# 转换为一维数组 trasfome_daa = np.stack(ack_ist, axis=0)
return trafoed_data
数据集准备
# 文件列表flnes= soted(go.ob('mpldat/smeda*.csv'))
# 从文件中加载数据帧并将其存储在一个列表中。for ienme in fiemes:
df = pd.read_csv(filnme, indx_cl=one,hadr=0) flt.append(df)
聚类结果的可视化
# 为了计算交叉关系,需要对它们进行归一化处理。# TimeSeriesScalerMeanVariance将是对数据进行规范化的类。sac_da = TimeeiesalerMVarne(mu=0.0, std=1.0).fit_trnform(tranfome_data)# KShape类的实例化。ks = KShpe(_clusrs=2, n_nit=10, vrboe=True, rano_stte=sed)
yprd = ks.ft_reitsak_ata)# 聚类和可视化plt.tight_layout()
plt.show()
用肘法计算簇数
- 什么是肘法...
- 计算从每个点到簇中心的距离的平方和,指定为簇内误差平方和 (SSE)。
- 它是一种更改簇数,绘制每个 SSE 值,并将像“肘”一样弯曲的点设置为最佳簇数的方法。
#计算到1~10个群组 for i in range(1,11):
#进行聚类计算。
ks.fit(sacdta)
#KS.fit给出KS.inrta_ disorons.append(ks.netia_)
plt.plot(range(1,11), disorins, marker='o')
本文选自《Python用KShape对时间序列进行聚类和肘方法确定最优聚类数k可视化》。
相关文章
- 图像处理工具Python扩展库,你了解吗?
- 十个常用的损失函数解释以及Python代码实现
- 30 个数据科学工作中必备的 Python 包
- 如何在 Windows 上安装 Python
- 几行 Python 代码就可以提取数百个时间序列特征
- 使用Python快速搭建接口自动化测试脚本实战总结
- 哪种编程语言最适合开发网页抓取工具?
- 不要在 Python 中使用循环,这些方法其实更棒!
- 震惊!用Python探索《红楼梦》的人物关系!
- 如何最简单、通俗地理解Python模块?
- 酷炫,Python实现交通数据可视化!
- 为什么急于寻找Python的替代者?
- 30 个数据工程必备的Python 包
- 去字节面试被面这题能答上来吗?谈谈你对时间轮的理解?
- 火山引擎在行为分析场景下的 ClickHouse JOIN 优化
- 用Python爬取了某宝1166家月饼数据进行可视化分析,终于找到最好吃的月饼~
- 在 Linux 上试试这个基于 Python 的文件管理器
- Python列表解析式到底该怎么用?
- 如何快速把你的 Python 代码变为 API
- 十个Python初学者常犯的错误