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

序曲
Python中序列分类算法的机器学习接口。
关于· 构建状态· 功能· 文档· 教程和示例· 致谢· 参考资料· 贡献者
关于
Sequentia 是一个 Python 包,它为序列数据提供各种分类算法,包括基于隐马尔可夫模型和动态时间扭曲的分类器。
Sequentia 如何用于序列分类的一些示例包括:
- 根据音频信号或诸如 MFCC 之类的替代表示来确定口语单词,
- 从心电图信号中识别心脏状况,例如心律失常,
- 从 sEMG 信号预测手势控制的运动意图,
- 根据笔尖轨迹对手写字符进行分类。
构建状态
master |
dev |
|---|---|
特征
Sequentia 提供以下算法,均支持具有不同持续时间的多变量序列。
分类算法
- 隐马尔可夫模型(通过
hmmlearn)
使用 Baum-Welch 算法进行参数估计和使用前向算法进行预测 [1]- 高斯混合模型排放
- 线性、左右和遍历拓扑
- 多处理预测
- 动态时间规整 k-最近邻(via
dtaidistance)- Sakoe-Chiba 带全局翘曲约束
- 依赖和独立特征扭曲(DTWD & DTWI)
- 自定义距离加权预测
- 多处理预测
分类算法示例(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 教授就这一发现直接与我联系!
参考
贡献者
非常感谢对此存储库的所有贡献。贡献指南可以在这里找到。
|
欧努 |
普拉玛 |
马尼斯奇 |
|---|
Sequentia © 2019-2023,Edwin Onuonga - 根据MIT许可发布。
由 Edwin Onuonga 编写和维护。