【时序分割】2017KDD时序分割聚类TICC代码分析 您所在的位置:网站首页 ticc算法 【时序分割】2017KDD时序分割聚类TICC代码分析

【时序分割】2017KDD时序分割聚类TICC代码分析

#【时序分割】2017KDD时序分割聚类TICC代码分析| 来源: 网络整理| 查看: 265

TICC算法的代码有网络公开版本,下载地址https://github.com/davidhallac/TICC

TICC-master文件夹下面有这几个部分:output_folder、paper code、src、UnitTest_Data、example.py、example_data.txt、README.md、TICC_solver.py、UnitTest.py

一、所需环境

64位python2.7+cvxpy+snap

问题一,64位python且2.7

之前一直在使用python3.6,代码中说明要使用2.7版本,主要是snap目前还没有与3.6的接口,且作者中语法风格使用的是2.7。因此从新安装一个Python2.7。要注意必须是64位的,否则会与cvxpy中很多库不兼容。第一是官网下载包时候需要注意,第二是安装后需要注意检查

问题二,cvxpy的安装

参考下面链接的安装方法:

https://blog.csdn.net/weixin_40493501/article/details/104462874

https://blog.csdn.net/weixin_40493501/article/details/104462874

1、要主要安装0.4.0版本的cvxpy,否则运行代码会出现报错:NameError: name 'semidefinite' is not defined

原因在于0.4.0版本的才有semidefinite属性,后面版本没有这个属性,这是多次反复安装后的经验,默认的版本是1.0.25,不断安装卸载,太坑了。这个属性在后来的版本中都被摒弃,也没有找到新的替代方法。

2、安装完成后,简单导入cvxpy会出现一个报错:

from cvxpy import * File "C:\Python27\lib\site-packages\cvxpy\__init__.py", line 21, in from cvxpy.atoms import * File "C:\Python27\lib\site-packages\cvxpy\atoms\__init__.py", line 20, in from cvxpy.atoms.geo_mean import geo_mean File "C:\Python27\lib\site-packages\cvxpy\atoms\geo_mean.py", line 20, in from cvxpy.atoms.atom import Atom File "C:\Python27\lib\site-packages\cvxpy\atoms\atom.py", line 23, in from .. import interface as intf File "C:\Python27\lib\site-packages\cvxpy\interface\__init__.py", line 20, in from cvxpy.interface.matrix_utilities import * File "C:\Python27\lib\site-packages\cvxpy\interface\matrix_utilities.py", line 20, in from cvxpy.interface import cvxopt_interface as co_intf File "C:\Python27\lib\site-packages\cvxpy\interface\cvxopt_interface\__init__.py", line 20, in from cvxpy.interface.cvxopt_interface.dense_matrix_interface import DenseMatrixInterface File "C:\Python27\lib\site-packages\cvxpy\interface\cvxopt_interface\dense_matrix_interface.py", line 26, in import cvxopt File "C:\Python27\lib\site-packages\cvxopt\__init__.py", line 50, in import cvxopt.baseImportError: DLL load failed: 找不到指定的模块。

这个错误主要原因在于numpy-mkl的问题,这是一个库,不能独立用pip来安装,下载whl的地址为:

https://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy,利用这个包来离线安装

3、在TICC类方法定义中,TICC.fit(),使用了Pool 进程,但进程却不在if __name__ == ‘__main__’中,不符合Windows使用进程的语句要求,很有可能是在Unix/Linux下完成的(也有可能是目前对代码还未完全掌握)。目前手上只有Windows,先看能不能修改吧

4、需要进一步掌握python中进程的使用,尤其是在类中

 

二、代码理解

TICC-master文件夹下面有这几个部分:output_folder、paper code、src、UnitTest_Data、example.py、example_data.txt、README.md、TICC_solver.py、UnitTest.py

(paper code中的代码还未梳理),TICC-master中的代码主体框架如下:

README有算法的部分解释

TICC算法的输入是T-by-n的矩阵,正则化参数lambda(MRF的稀疏性)、平滑参数beta、窗口大小w、聚类数量k。maxIters:TICC算法的最大迭代次数,threshold:收敛阈值,prefix_string:保存文件的位置,TICC.fit:算法函数,用于学习模型的参数。

主要的任务就是把T个样本的时序数据划分为片段,并判断其所属类别。片段的总数量受beta的影响。

1、代码中的初始化提供了两种方法,GMM和k-means,代码中最后使用了gmm方法进行了初始化,得到初始的分类。

2、train_clusters函数中解决的是论文公式(5)的优化问题,使用ADMM算法,返回逆协方差。ADMM类中的ADMM_x、ADMM_DMM_z、ADMM_u分别为三个参数的更新方式

3、根据协方差矩阵进行样本点的重新聚类,计算lle_all_points_clusters,即动态规划中的距离矩阵。

4、算法的数据可使用paper code中的generate_synthetic_data.py生成,论文中提到的car数据作者不公开,代码结果保存在一个文件夹中,

5、算法结果的评判以及如何根据BIC和silhouette score来判断类的数量暂未深究

6、paper code中代码整理待续

程序员说:42岁了,突然觉得研发前途渺茫

中国程序员数量达755万,全球排名第二

为什么都说程序员找不到女朋友,但是身边程序猿的却没一个单身的?

程序员说:30岁以上你还死磕技术,别说拿高薪,可能你连饭碗都会保不住

程序员被开除,老板:“有你参与的项目全黄了!”

笑话:一个测试工程师走进一家酒吧

笑话:面试官:请拿出一段体现你水平的代码。我: sudo rm -rf /*面试官:这体现了你哪方面能力?

python精选:Python 办公实战!​按姓名拆分 Excel 为单独文件,微信自动发给相应联系人

网友说:做开发,不被领导喜欢怎么办?

网友说:我奉劝各位,一定不能在职场透露自己的家庭条件



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有