紧凑预测树:一种精确序列预测的无损模型
cpt的Python项目详细描述
cpt
本项目是一个cython开源的紧凑预测树算法的多线程实现。
cpt是一种序列预测算法。它是一个高度可解释的模型,擅长用有限的字母表预测序列的下一个值。然而,给定一个序列,cpt不能预测这个序列中已经存在的元素。cpt需要一个tuning。
此实现基于以下研究论文
http://www.philippe-fournier-viger.com/ADMA2013_Compact_Prediction_trees.pdf
http://www.philippe-fournier-viger.com/spmf/PAKDD2015_Compact_Prediction_tree+.pdf
安装
您只需使用pip install cpt
。
对于windows用户,这些源是预编译的。对于其他人,您需要安装cython
。
简单示例
您可以使用以下代码测试模型
fromcpt.cptimportCptmodel=Cpt()model.fit([['hello','world'],['hello','this','is','me'],['hello','me']])model.predict([['hello'],['hello','this']])# Output: ['me', 'is']
对于与sklearn兼容的示例,您应该检查documentation。
功能
列车
模型可以用fit
方法训练。
如果需要,可以用同样的方法重新训练模型。它将新序列添加到模型中,而不删除旧序列。
多线程
默认情况下,使用openmp的多线程启动预测。
也可以在单个线程中使用predict
方法中的multithread=False
选项启动预测。
通过设置以下环境变量OMP_NUM_THREADS
,可以控制线程数。
酸洗
您可以对模型进行pickle以保存它,然后通过pickle库加载它。
fromcpt.cptimportCptimportpicklemodel=Cpt()model.fit([['hello','world']])dumped=pickle.dumps(model)unpickled_model=pickle.loads(dumped)print(model==unpickled_model)
可解释性
cpt类有几种方法来解释这些预测。
通过model.compute_noisy_items(noise_ratio)
,您可以看到哪些元素被认为是noise
(序列中的低存在)。
您可以使用model.retrieve_sequence(id)
检索经过训练的序列。
您可以使用find_similar_sequences(sequence)
找到类似的序列。
您还不能使用降噪技术自动检索所有类似的序列。
调谐
cpt有3个需要调整的元参数。您可以在documentation中检查如何调整它们。要进行优化,可以使用sklearn
中的model_selection
模块,可以找到一个关于如何进行优化的示例here。