博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 时序分析_【时序分割】2017KDD时序分割聚类TICC代码分析
阅读量:5106 次
发布时间:2019-06-13

本文共 2687 字,大约阅读时间需要 8 分钟。

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中很多库不兼容。第一是官网下载包时候需要注意,第二是安装后需要注意检查

e33395b7c9c0b64832a2b94d559e2d31.png

问题二,cvxpy的安装

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

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.base

ImportError: DLL load failed: 找不到指定的模块。

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

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中的代码主体框架如下:

c228e6913d43f0d86bd2ae58a25a2dca.png

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分别为三个参数的更新方式

fbe3327592e26ecc21f7cb7e975c573f.png

aa1ec9332ab567f1e5b88654bff5cf35.png

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

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

8d6421862b89c5e709302b190cbb4018.png

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

6、paper code中代码整理待续

转载地址:http://hqudv.baihongyu.com/

你可能感兴趣的文章
bzoj3238 [Ahoi2013]差异
查看>>
终于搞定Fastreport2.x PDF输出,相信其他版本也差不多
查看>>
c++ Oracle OCCI 编程
查看>>
Appium学习笔记||九、操作不可见元素
查看>>
博弈论
查看>>
培养人脉的106个技巧
查看>>
[Android]热修复框架AndFix测试说明
查看>>
像gal一样讲故事~
查看>>
leetcoode刷题 01
查看>>
python基础-异常处理
查看>>
单例传值
查看>>
Codeforces 888D Almost Identity Permutations:错排公式
查看>>
django 一些库
查看>>
R-Project小记(一)
查看>>
例题4-10/4-11
查看>>
v8 Date 时间和系统时间转换
查看>>
hdu 3371(kruskal)
查看>>
常用排序算法总结
查看>>
定义与声明
查看>>
环信联合创始人: Saas敏捷开发实践!
查看>>