我想知道如何将depmixs4包用于R以在数据集上运行HMM。我将使用什么功能,以便获得测试数据集的分类?
我有一个训练数据文件,一个标签数据文件和一个测试数据文件。
训练数据包括4620行。每行有1079个值。这些值是83个窗口,每个窗口13个值,因此1079是由83个状态组成的数据,每个类别有13个观测值。这些具有1079个值的行中的每一行都是一个语音单词,因此它具有4620个发音。但总体而言,数据只有7个不同的词。这些不同的单词中的每个单词都有660种不同的发音,因此共有4620行单词。
所以我们有字(0-6)
标签文件是一个列表,其中每一行都标记为0-6对应于它们是什么单词。例如,行300标记为2,行450标记为6,而行520标记为0。
测试文件包含大约5000行,其结构与培训数据完全相同,只是没有标签附带。
我想使用HMM来使用训练数据对测试数据进行分类。
如何使用depmixs4输出我的测试数据分类?
我在看:
depmix(response, data=NULL, nstates, transition=~1, family=gaussian(),
prior=~1, initdata=NULL, respstart=NULL, trstart=NULL, instart=NULL,
ntimes=NULL,...)
但我不知道响应是指什么或其他任何参数。
最佳答案
这是一个快速(尽管不完整)的测试,即使您只是为了熟悉基本轮廓,也可以让您入门。请注意,这只是一个玩具示例,它只是划伤HMM设计/分析的表面。例如,depmixs4包的小插图提供了很多上下文和示例。同时,这是一个简短的介绍。
假设您想调查工业生产是否提供有关经济衰退的线索。首先,让我们加载相关的程序包,然后从圣路易斯联储下载数据:
library(quantmod)
library(depmixS4)
library(TTR)
fred.tickers <-c("INDPRO")
getSymbols(fred.tickers,src="FRED")
接下来,将数据转换为滚动的1年百分比变化,以最大程度地减少数据中的噪声,并将数据转换为data.frame格式,以便在depmixs4中进行分析:
indpro.1yr <-na.omit(ROC(INDPRO,12))
indpro.1yr.df <-data.frame(indpro.1yr)
现在,让我们运行一个简单的HMM模型,并仅选择两种状态-增长和收缩。请注意,我们仅使用工业生产来搜索信号:
model <- depmix(response=INDPRO ~ 1,
family = gaussian(),
nstates = 2,
data = indpro.1yr.df ,
transition=~1)
现在让我们拟合结果模型,生成后验状态
进行分析,并估计衰退的可能性。另外,我们将数据与日期绑定为xts格式,以便于查看/分析。 (请注意使用set.seed(1),它用于创建可复制的起始值以启动建模。)
set.seed(1)
model.fit <- fit(model, verbose = FALSE)
model.prob <- posterior(model.fit)
prob.rec <-model.prob[,2]
prob.rec.dates <-xts(prob.rec,as.Date(index(indpro.1yr)),
order.by=as.Date(index(indpro.1yr)))
最后,让我们回顾一下并理想地绘制数据:
head(prob.rec.dates)
[,1]
1920-01-01 1.0000000
1920-02-01 1.0000000
1920-03-01 1.0000000
1920-04-01 0.9991880
1920-05-01 0.9999549
1920-06-01 0.9739622
高值(> 0.80 ??)表示/建议经济处于衰退/收缩状态。
同样,一个非常非常基础的介绍,也许太基础了。希望能帮助到你。
关于r - R depmixs4中的HMM文本识别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30146288/