隐藏马尔可夫模型在Matlab中对序列进行分类

我对机器学习非常新手,我已经阅读了关于Matlab统计工具箱中隐藏马尔可夫模型的资料,我想使用它来对给定的信号序列进行分类。我有一个矩阵P,包含3D坐标,即[501×3],我想基于此训练模型。每个完整的轨迹会在特定的点集上结束,即在(0,0,0)处达到其目标。

根据我的场景,合适的伪代码/方法是什么?

我的伪代码:

  1. 501×3矩阵P是发射矩阵,其中每个坐标是一个状态
  2. 随机的NxN转移矩阵值(但我对此感到困惑)
  3. 使用函数hmmgenerate生成测试序列
  4. 使用hmmtrain(sequence,old_transition,old_emission)进行训练
  5. 将最终的转移和发射矩阵提供给hmmdecode,并提供一个未知序列以给出概率(这也让我感到困惑)

编辑1:简而言之,我想对10类轨迹进行分类,每个轨迹的尺寸为[501x3],使用HMM。我想对每个轨迹抽样50行,即[50x3],以构建模型。然而,我有murphyk's的HMM工具箱来处理这种随机序列。


回答:

该陈述/案例要求构建和训练一个隐藏马尔可夫模型,具有以下组件,特别是使用murphyk's的HMM工具箱作为选择:

  1. O = 观测向量
  2. Q = 状态向量
  3. T = 向量序列
  4. nex = 序列数量
  5. M = 混合数量

演示代码(来自murphyk's工具箱):

    O = 8;          %向量中的系数数量    T = 420;         %序列中的向量数量    nex = 1;        %序列数量    M = 1;          %混合数量    Q = 6;          %状态数量data = randn(O,T,nex);% 参数的初始猜测prior0 = normalise(rand(Q,1));transmat0 = mk_stochastic(rand(Q,Q));if 0    Sigma0 = repmat(eye(O), [1 1 Q M]);    % 将每个均值初始化为一个随机数据点    indices = randperm(T*nex);    mu0 = reshape(data(:,indices(1:(Q*M))), [O Q M]);    mixmat0 = mk_stochastic(rand(Q,M));else    [mu0, Sigma0] = mixgauss_init(Q*M, data, 'full');    mu0 = reshape(mu0, [O Q M]);    Sigma0 = reshape(Sigma0, [O O Q M]);    mixmat0 = mk_stochastic(rand(Q,M));end[LL, prior1, transmat1, mu1, Sigma1, mixmat1] = ...    mhmm_em(data, prior0, transmat0, mu0, Sigma0, mixmat0, 'max_iter', 5);loglik = mhmm_logprob(data, prior1, transmat1, mu1, Sigma1, mixmat1);

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注