Skip to main content

Python中序列分类算法的机器学习接口。

项目描述

由DALL·E Mini创作的Logo
序曲

Python中序列分类算法的机器学习接口。

关于· 构建状态· 功能· 文档· 教程和示例· 致谢· 参考资料· 贡献者

关于

Sequentia 是一个 Python 包,它为序列数据提供各种分类算法,包括基于隐马尔可夫模型和动态时间扭曲的分类器。

Sequentia 如何用于序列分类的一些示例包括:

  • 根据音频信号或诸如 MFCC 之类的替代表示来确定口语单词,
  • 从心电图信号中识别心脏状况,例如心律失常,
  • 从 sEMG 信号预测手势控制的运动意图,
  • 根据笔尖轨迹对手写字符进行分类。

构建状态

master dev
CircleCI 构建(主) CircleCI 构建(开发)

特征

Sequentia 提供以下算法,均支持具有不同持续时间的多变量序列。

分类算法


分类算法示例(HMM 序列分类器)

预处理方法

  • 居中、标准化和最小-最大缩放
  • 抽取和平均下采样
  • 均值和中值滤波
  • 降维(很快!

安装

您可以使用pip.

pip install sequentia
单击此处获取有关为 Sequentia 做出贡献或运行笔记本的安装说明。

如果您打算为 Sequentia 做出贡献,您将需要一些额外的依赖项来运行测试、笔记本和生成文档。

根据您打算做什么,您可以指定以下附加功能。

  • /lib/test目录中运行测试:

    pip install sequentia[test]
    
  • /docs目录中生成 Sphinx 文档:

    pip install sequentia[docs]
    
  • /notebooks目录中运行笔记本:

    pip install sequentia[notebooks]
    
  • 一个完整的开发套件,安装了上述所有附加功能:

    pip install sequentia[dev]
    

文档

包的文档可在Read The Docs上找到。

教程和示例

有关 Sequentia 使用的详细教程和示例,请参阅此处的笔记本

下面是一些关于如何在 Sequentia 中使用单变量和多变量序列的基本示例。

单变量序列

import numpy as np, sequentia as seq

# Generate training observation sequences and labels
X, y = [
  np.array([1, 0, 5, 3, 7, 2, 2, 4, 9, 8, 7]),
  np.array([2, 1, 4, 6, 5, 8]),
  np.array([5, 8, 0, 3, 1, 0, 2, 7, 9])
], ['good', 'good', 'bad']

# Create and fit the classifier
clf = seq.KNNClassifier(k=1, classes=('good', 'bad')).fit(X, y)

# Make a prediction for a new observation sequence
x_new = np.array([0, 3, 2, 7, 9, 1, 1])
y_new = clf.predict(x_new)

多元序列

import numpy as np, sequentia as seq

# Generate training observation sequences and labels
X, y = [
  np.array([[1, 0, 5, 3, 7, 2, 2, 4, 9, 8, 7],
            [3, 8, 4, 0, 7, 1, 1, 3, 4, 2, 9]]).T,
  np.array([[2, 1, 4, 6, 5, 8],
            [5, 3, 9, 0, 8, 2]]).T,
  np.array([[5, 8, 0, 3, 1, 0, 2, 7, 9],
            [0, 2, 7, 1, 2, 9, 5, 8, 1]]).T
], ['good', 'good', 'bad']

# Create and fit the classifier
clf = seq.KNNClassifier(k=1, classes=('good', 'bad')).fit(X, y)

# Make a prediction for a new observation sequence
x_new = np.array([[0, 3, 2, 7, 9, 1, 1],
                  [2, 5, 7, 4, 2, 0, 8]]).T
y_new = clf.predict(x_new)

致谢

在该软件包的早期版本 (<0.10.0) 中,使用了近似动态时间扭曲算法fastdtw实现(可以在线性内存和时间中计算 - 与通常精确 DTW 实现的 O(N^2) 运行时复杂度相比。

然而,Eamonn Keogh 教授加州大学河滨分校)最近联系了我,他最近的工作[3]令人惊讶地发现,FastDTW 通常比它近似的确切 DTW 算法慢。从fastdtw包切换到dtaidistance(具有快速纯 C 编译函数的精确 DTW 的非常可靠的实现)后,DTW k-NN 预测时间确实大大减少了。

我要感谢 Eamonn Keogh 教授就这一发现直接与我联系!

参考

[1] 劳伦斯·R·拉宾纳。“A Tutorial on Hidden Markov Models and Selected Applications in Speech Recognition” IEEE 77 (1989) Proceedings of the IEEE 77 (1989) , no. 2,257-86。
[2] 斯坦萨尔瓦多和菲利普陈。“FastDTW:在线性时间和空间中实现精确的动态时间扭曲。” 智能数据分析 11.5 (2007),561-580。
[3] 吴仁杰和 Eamonn J. Keogh。“FastDTW 是近似的,通常比它近似的算法慢” IEEE Transactions on Knowledge and Data Engineering (2020),1-1。

贡献者

非常感谢对此存储库的所有贡献。贡献指南可以在这里找到。

欧努
欧努
普拉玛
普拉玛
马尼斯奇
马尼斯奇

Sequentia © 2019-2023,Edwin Onuonga - 根据MIT许可发布。
由 Edwin Onuonga 编写和维护。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

sequentia-0.13.1.tar.gz (19.6 MB 查看哈希

已上传 source