kshape-python

kshape-python

高效精准的时间序列聚类算法

kshape-python是一种用于单变量和多变量时间序列聚类的高效无监督算法。该方法在ACM SIGMOD 2015会议上获得最佳论文奖,已在多个科学领域和知名企业中广泛应用。kshape-python在准确性和效率方面表现出色,在包含100多个数据集的基准测试中名列前茅。该项目提供CPU和GPU版本实现,可处理大规模时间序列数据。项目提供详细的安装说明、使用示例和基准测试结果,支持单变量和多变量时间序列数据,可在CPU或GPU上运行。该方法在UCR和UAE两个established benchmarks上进行了评估,展示了其在不同数据集上的性能。

k-Shape时间序列聚类无监督学习数据挖掘机器学习Github开源项目

k-Shape: 高效精确的时间序列聚类

<div align="center"> <p> <img alt="PyPI - 下载量" src="https://pepy.tech/badge/kshape"> <img alt="GitHub" src="https://img.shields.io/github/license/TheDatumOrg/kshape-python"> <img alt="PyPI" src="https://img.shields.io/pypi/v/kshape"> <img alt="GitHub 问题" src="https://img.shields.io/github/issues/TheDatumOrg/kshape-python"> <img alt="PyPI - Python 版本" src="https://img.shields.io/pypi/pyversions/kshape"> </p> </div>

k-Shape 是一种高度精确和高效的无监督方法,用于单变量多变量时间序列聚类。k-Shape 首次亮相于 ACM SIGMOD 2015 会议,被评为(2篇)最佳论文之一,并获得了首届 2015 ACM SIGMOD 研究亮点奖。其扩展版本发表在 ACM TODS 2017 期刊上。此后,k-Shape 在单变量多变量时间序列数据集上都取得了最先进的性能(即,k-Shape 是最快和最准确的时间序列聚类方法之一,在包含 100 多个数据集的权威基准测试中排名靠前)。

k-Shape 已被广泛应用于多个科学领域(如计算机科学、社会科学、空间科学、工程、计量经济学、生物学、神经科学和医学)、财富 100-500 强企业(如 Exelon、诺基亚和许多金融公司)以及欧洲航天局等组织。

如果您在项目或研究中使用 k-Shape,请引用以下两篇论文:

参考文献

"k-Shape: 高效精确的时间序列聚类"<br/> John Paparrizos 和 Luis Gravano<br/> 2015 ACM SIGMOD 数据管理国际会议(ACM SIGMOD 2015<br/>

@inproceedings{paparrizos2015k, title={{k-Shape: Efficient and Accurate Clustering of Time Series}}, author={Paparrizos, John and Gravano, Luis}, booktitle={Proceedings of the 2015 ACM SIGMOD international conference on management of data}, pages={1855--1870}, year={2015} }

"快速精确的时间序列聚类"<br/> John Paparrizos 和 Luis Gravano<br/> ACM 数据库系统学报(ACM TODS 2017),第 42(2) 卷,第 1-49 页<br/>

@article{paparrizos2017fast, title={{Fast and Accurate Time-Series Clustering}}, author={Paparrizos, John and Gravano, Luis}, journal={ACM Transactions on Database Systems (ACM TODS)}, volume={42}, number={2}, pages={1--49}, year={2017} }

致谢

我们感谢 Teja Bogireddy 对本仓库的宝贵帮助。

我们还要感谢最初的贡献者 Jörg ThalheimGregory Rehm。初始代码被用于 Sieve

k-Shape 的 Python 仓库

本仓库包含 k-Shape 的 Python 实现。Matlab 版本请查看这里

数据

为了便于复现,我们分享了我们在两个权威基准上的结果:

  • UCR 单变量档案,包含 128 个单变量时间序列数据集。
    • 这里下载所有 128 个预处理过的数据集。
  • UAE 多变量档案,包含 28 个多变量时间序列数据集。
    • 这里下载前 14 个预处理过的数据集。
    • 这里下载剩余 14 个预处理过的数据集。

预处理步骤请查看这里

安装

我们的代码依赖以下 Python 包:

pip 安装

$ pip install kshape

从源代码安装

$ git clone https://github.com/thedatumorg/kshape-python
$ cd kshape-python
$ python setup.py install

基准测试

我们展示了在改变时间序列数量、聚类数量和时间序列长度时 k-Shape 的运行时性能。(所有结果都是 5 次运行的平均值。)

<p align="center"> <img src="https://yellow-cdn.veclightyear.com/0a4dffa0/3045a353-5689-403e-8b79-fe4cc9d1ea3b.png"> </p>

使用方法

单变量示例:

import numpy as np from kshape.core import KShapeClusteringCPU from kshape.core_gpu import KShapeClusteringGPU univariate_ts_datasets = np.expand_dims(np.random.rand(200, 60), axis=2) num_clusters = 3 # CPU 模型 ksc = KShapeClusteringCPU(num_clusters, centroid_init='zero', max_iter=100, n_jobs=-1) ksc.fit(univariate_ts_datasets) labels = ksc.labels_ # 或 ksc.predict(univariate_ts_datasets) cluster_centroids = ksc.centroids_ # GPU 模型 ksg = KShapeClusteringGPU(num_clusters, centroid_init='zero', max_iter=100) ksg.fit(univariate_ts_datasets) labels = ksg.labels_ cluster_centroids = ksg.centroids_.detach().cpu()

多变量示例:

import numpy as np from kshape.core import KShapeClusteringCPU from kshape.core_gpu import KShapeClusteringGPU multivariate_ts_datasets = np.random.rand(200, 60, 6) num_clusters = 3 # CPU 模型 ksc = KShapeClusteringCPU(num_clusters, centroid_init='zero', max_iter=100, n_jobs=-1) ksc.fit(univariate_ts_datasets) labels = ksc.labels_ cluster_centroids = ksc.centroids_ # GPU 模型 ksg = KShapeClusteringGPU(num_clusters, centroid_init='zero', max_iter=100) ksg.fit(univariate_ts_datasets) labels = ksg.labels_ cluster_centroids = ksg.centroids_.detach().cpu()

另请参阅示例了解 UCR/UAE 数据集聚类

结果

下表包含 k-Shape 在单变量和多变量数据集上进行 10 次运行的平均兰德指数(RI)、调整兰德指数(ARI)和归一化互信息(NMI)准确度值。

注意:我们使用单核实现收集了这些结果。

服务器规格:AMD Ryzen 9 5900HX 8核 3.30 GHz,16GB RAM。

GPU规格:NVIDIA GeForce RTX 3070,8GB显存。

单变量结果:

数据集RIARINMI运行时间(秒)
ACSF10.7288894470.1391271780.385362576181.97282
Adiac0.9481992190.2374560720.585026777150.23389
AllGestureWiimoteX0.8309889890.0918331050.19967124132.64325
AllGestureWiimoteY0.833560360.13060810.26532011668.32064
AllGestureWiimoteZ0.8317961960.081846440.184288361117.54415
ArrowHead0.6236966820.1764088280.2517164431.42841
Beef0.6665536720.1022916220.2749834962.04646
BeetleFly0.5184615380.0372432620.0491706340.62138
BirdChicken0.5229487180.0468634440.0558057130.46606
BME0.6236623220.2091892150.3375624470.75734
Car0.6680952380.1427859260.2225746134.87239
CBF0.8755773930.7245637170.7703340577.47873
Chinatown0.5260755680.0411171660.0156938190.548231
ChlorineConcentration0.526233814-0.0010190870.00077235468.01957
CinCECGTorso0.6253071490.0518036060.093350668271.74131
Coffee0.7264935060.4538378340.4218209480.41349
Computers0.5291879760.0584817150.04856093.01130
CricketX0.8697017870.1746559470.35791691555.23645
CricketY0.8731539450.2063813170.37365636848.83094
CricketZ0.8699098120.1726696050.35560441144.52660
Crop0.9241083490.2419743350.43881235420.01129
DiatomSizeReduction0.9191791950.8077108450.8271172981.59904
DistalPhalanxOutlineAgeGroup0.7221848250.4359435680.3299056082.12145
DistalPhalanxOutlineCorrect0.499455708-0.0010303512.97E-052.26317
DistalPhalanxTW0.8396079760.592727260.53106025510.96752
DodgerLoopDay0.7819882290.2109169250.4028973751.69891
DodgerLoopGame0.5700717570.1406204990.1171619690.86779
DodgerLoopWeekend0.8308070630.6579669090.6281312210.495587
Earthquakes0.5416599080.0242671930.0062622689.69413
ECG2000.6137537690.2157942220.128705740.74401
ECG50000.7713079980.5307033530.523220504163.82402
ECGFiveDays0.8114467340.6231225650.5864925734.52766
ElectricDevices0.6935519630.0711614490.177107461591.80007
EOGHorizontalSignal0.868648510.2270348040.408923026357.01975
EOGVerticalSignal0.870825210.2007632310.37416983236.19376
EthanolLevel0.6222736170.0034802050.007896876188.62335
FaceAll0.9102950250.4332660260.610598916317.37956
FaceFour0.7573359070.3742398960.4667465431.38740
FacesUCR0.9102950250.4332660260.610598916136.62772
FiftyWords0.9515582070.3589258640.651569015198.84656
Fish0.7853458860.1898856150.32795136117.13432
FordA0.5646192440.1292376860.096210429344.81591
FordB0.5161093830.0322182110.023938345254.47971
FreezerRegularTrain0.6387441370.2774886820.21154738718.45565
小型冰柜训练0.6390496820.2780997830.21204566326.71921
真菌0.8291268230.3575436720.7311732676.11174
空中手势D10.9448194120.29376620.63550344430.88751
空中手势D20.9476972240.3485824750.67731090543.38524
空中手势D30.9312661320.1267591990.45878250918.98568
卵石手势Z10.8830814660.5859314820.67529312711.72848
卵石手势Z20.8813531350.5805545380.663927927.60654
枪指0.497487437-0.00505050500.431333
枪指年龄跨度0.5319911310.0641411450.0531468841.59410
枪指男性对比女性0.7901276180.5802420810.5717765351.08047
枪指老年对比青年0.5187346640.0374731340.0282076143.55970
火腿0.5288315560.0576731040.0446126732.13764
手部轮廓0.6828566860.3600519470.251176285247.46488
触觉0.6890755750.0637099390.0904219297.01234
鲱鱼0.5014640750.0031606420.0076504631.22652
二十户住宅0.5201974370.0400147740.0324878849.73466
直排轮滑0.7340651890.0398461630.104643365372.13227
昆虫EPG常规训练0.7065117730.3639418160.3795565227.86684
昆虫EPG小型训练0.704091360.3613709640.3795049885.37182
昆虫翅膀拍打声0.7926405390.1962258310.402373638220.85374
意大利电力需求0.609728860.2196084060.1881524033.01081
大型厨房电器0.5700706720.1255766690.13042237612.03511
闪电20.5312947660.0570176170.0897831451.93780
闪电70.8061755150.3229630650.5064944314.51913
马拉特0.9247564610.7216560550.86989108884.35894
肉类0.7619187680.4944034010.5804227510.86227
医学图像0.6720050130.0734902310.228736632.23141
墨尔本行人0.8694416560.3491047770.470402239275.40925
中指轮廓年龄组0.7295852620.4231152260.4017224981.57184
中指轮廓校正0.49977175-0.003736340.0008948492.28809
中指TW0.8093475640.4496361180.4313643618.09901
混合形状常规训练0.8009910790.4204144180.488448041285.77452
混合形状小型训练0.8007950290.4190363740.4766379115.97755
尘埃应变0.8048091430.6095890150.5018650614.56190
非侵入式胎儿心电图胸部10.9509819740.333739220.6764209092995.88974
非侵入式胎儿心电图胸部20.9671743350.4657611560.7656147761748.11823
橄榄油0.8068926550.5700123610.6074183331.97315
OSU叶片0.7851058370.2635509730.36158070818.38517
指骨轮廓校正0.5053624130.010703690.0102215766.79001
音素0.927697860.0347057320.2101089841747.00270
Wiimote Z轴拾取手势0.8545454550.2882101520.5402343583.61598
猪气道压力0.9032298620.033382520.4275796311632.92364
猪动脉压力0.9598215020.2734421780.717389411914.99103
猪中心静脉压0.9613467720.1945169740.6583637361304.41961
PLAID0.8594448810.2816342590.40487855555.89190
平面0.9117657780.7083442090.8515926041.14514
电力消耗0.576378830.1530699820.1379296891.74243
近端指骨轮廓年龄组0.7526741830.4771543950.4685376551.72700
近端指骨轮廓正确0.533905850.0664532880.085352631.15338
近端指骨TW0.8312227030.5694546920.5506943745.31783
制冷设备0.5562082780.0075952780.00943760928.19549
岩石0.6969358180.2180814930.322230745179.14048
屏幕类型0.5596037380.0105282490.01174259726.81045
肌电图手部性别Ch20.5463154120.0915594280.05847128139.87313
肌电图手部动作Ch20.7394435790.1164295220.209097135195.28737
肌电图手部受试者Ch20.7247870470.196609490.263889093211.94098
摇动手势WiimoteZ0.9031717170.4715331020.6849596043.51105
形状模拟0.6999396980.4000504250.3773316863.14061
所有形状0.9787354740.425898720.742885495201.26739
小型厨房电器0.3988539390.0049074050.0251415925.50886
平滑子空间0.6424347830.1982529440.199542722.06081
索尼AIBO机器人表面10.7280577630.4555182030.4640216062.53491
索尼AIBO机器人表面20.5891405220.1724968020.117502944.86348
星光曲线0.7691940650.5206889620.61022134164.50148
草莓0.504165518-0.0193987830.1233965076.72441
瑞典叶0.8902540130.3123067790.55617961158.87581
符号0.8803144180.6192229410.75759431723.11830
合成控制0.8819849750.6006818960.7125331756.90626
脚趾分割10.502006820.0040593690.0050571911.78287
脚趾分割20.6356188390.2602427380.1915057171.96561
轨迹0.7110653270.4559009940.5989519992.30357
双导联心电图0.5380249680.0761559160.0590006938.53791
两种模式0.6779791720.2078307720.318418523185.70084
UMD0.5970577280.1309926370.1891841370.93842
UWave手势库全部0.903649520.5760240480.662693972288.38747
UWave手势库X0.854355870.3539635250.457132359348.93967
UWave手势库Y0.8304762880.248454140.342123959471.75583
UWave手势库Z0.8490912060.3500806370.46397562448.39118
晶圆0.5419956090.0264596780.01036778441.34034
葡萄酒0.496478296-0.0051879190.0010564790.57659
同义词0.8925370360.2215783060.45175472274.17649
蠕虫0.6475281270.0284585750.06259139324.33412
蠕虫两类0.5036165660.006954460.0098279698.10779
瑜伽0.499909412-0.0003406637.76E-05146.22124

多变量结果:

数据集RIARINMI运行时间(秒)
发音词识别0.972846530.6829360.8642092532.5272
心房颤动0.5609195400.016338120.12810625976.43405
基本动作0.7250.30906100.445923938.9816293
字符轨迹0.93659070.4594230.70255146976.2988
板球0.933829910.6245380.825730241370.6116316
鸭鸭鹅0.6256560.011008730.0813033213447.5819
电子环0.878684500.57420140.647674291.04038
癫痫0.810000.503520.5480585183.565232
乙醇浓度0.59969-0.003948740.0010586471.00570
人脸检测0.500100.0002123470.000230054983.670330
手指运动0.50254860.00509350.005415024977.18741
手部运动方向0.6006740.048467410.05801942.49626
手写0.9166500.1204140.407972304.06015
心跳0.5020370.00403790.00326084857.40035
昆虫翅膀振动0.655130.002220.01020705605.323
日语元音0.8596390.3147330.45915411286.313125
LSST0.7604420.06084860.1244025608.39906
利伯拉斯0.906850.306829970.560319437.0877
运动想象0.499571940.000493110.003326118263.257795
NATOPS0.821757960.37390070.45782146265.831900
笔画数字0.91469770.5735920.698418605172.9306
音素谱0.8071460.01431220.0894769628615.90575
球拍运动0.76668190.383860.442636255289.75656
自我调节SCP10.5159910.0323660.035956543.48927
自我调节SCP20.498805-0.0023690.000182381194.50309
口语阿拉伯数字0.954150.74550010.8026964512275.5243
站立行走跳跃0.49572640.0408503540.16682412.409304
UWave手势库0.865960.4741136160.629729184.98871

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多