Project Icon

kshape-python

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

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

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

PyPI - 下载量 GitHub PyPI GitHub 问题 PyPI - Python 版本

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: 高效精确的时间序列聚类"
John Paparrizos 和 Luis Gravano
2015 ACM SIGMOD 数据管理国际会议(ACM SIGMOD 2015

@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}
}

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

@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 次运行的平均值。)

使用方法

单变量示例:

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
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

稿定AI

稿定设计 是一个多功能的在线设计和创意平台,提供广泛的设计工具和资源,以满足不同用户的需求。从专业的图形设计师到普通用户,无论是进行图片处理、智能抠图、H5页面制作还是视频剪辑,稿定设计都能提供简单、高效的解决方案。该平台以其用户友好的界面和强大的功能集合,帮助用户轻松实现创意设计。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号