用R语言做数据分析——时间序列分类

用R语言做数据分析——时间序列分类

  时间序列分类是根据已标注的时间序列建立一个分类模型,然后使用分类模型预测未标记时间序列的类别。从时间序列中抽取出新特征肯呢个有助于提高分类模型的性能。特征提取技术有奇异值分解(SVD)、离散傅立叶变换(DFT)、离散小波变换(DWT)、分段积累近似法(PAA)、连续重要点(PIP)、分段线性表示,以及符号表示。

  基于原始数据的分类

  我们使用party包来演示在原始数据上进行时间序列分类。在调用函数ctree()前,首先将类别标签转换为分类值,这样做可以避免得到一个像1.35这样的实数值。分析代码如下:

  > classId <- rep(as.character(1:6), each=100)

  > sc <- read.table("./synthetic_control.data", header=F, sep="")

  > newSc <- data.frame(cbind(classId, sc))

  > library(party)

  > ct <- ctree(classId~., data=newSc,controls=ctree_control(minsplit=30,minbucket=10,maxdepth=5))

  > pClassId <- predict(ct)

  > table(classId, pClassId)

  pClassId

  classId 1 2 3 4 5 6

  1 97 0 0 0 0 3

  2 1 93 2 0 0 4

  3 0 0 96 0 4 0

  4 0 0 0 100 0 0

  5 4 0 10 0 86 0

  6 0 0 0 87 0 13

  > (sum(classId==pClassId))/nrow(sc)

  [1] 0.8083333

  > plot(ct,ip_args=list(pval=FALSE),ep_args=list(digits=0))

  

用R语言做数据分析——时间序列分类

  基于特征提取的分类

  接下来,我们使用离散小波变换(DWT)从时间序列中提取特种呢个,然后建立分类模型。小波变换通过小波来表示多分辨率。哈尔小波变换是最简单的离散小波变换。另一个常用的特征提取技术是离散傅立叶变换(DFT)。

  下面的例子是使用哈尔过滤器提取DWT系数。wavelets包用于实现离散小波变换,其中函数dwt(x,filter,n.levels,...)计算DWT系数,x为一个单变量或多变量的时间序列,filter指明所使用的小波过滤器,n.levels指明需要分解的层数,该函数返回一个dwt对象,其中槽W包包含小波系数,V包包含相似系数。原始时间序列还可以使用wavelets包中的idwt()函数通过逆离散小波变换进行重构。分析代码如下:

  > library(wavelets)

  > wtData <- NULL

  > for(i in 1:nrow(sc)) {

  + a <- t(sc[i,])

  + wt <- dwt(a, filter="haar", boundary="periodic")

  + wtData <- rbind(wtData, unlist(c(wt@W, wt@V[[wt@level]])))

  + }

  > wtData <- as.data.frame(wtData)

  > wtSc <- data.frame(cbind(classId, wtData))

  > ct <- ctree(classId~., data=wtSc, controls=ctree_control(minsplit=30,minbucket=10,maxdepth=5))

  > pClassId <- predict(ct)

  > table(classId, pClassId)

  pClassId

  classId 1 2 3 4 5 6

  1 97 3 0 0 0 0

  2 1 99 0 0 0 0

  3 0 0 81 0 19 0

  4 0 0 0 63 0 37

  5 0 0 16 0 84 0

  6 0 0 0 1 0 99

  > (sum(classId==pClassId))/nrow(wtSc)

  [1] 0.8716667

  > plot(ct,ip_args=list(pval=FALSE),ep_args=list(digits=0))

  

用R语言做数据分析——时间序列分类

  k-NN分类

  k-NN分类同样适用于时间序列,它找出与新实例最邻近的k个对象,再根据投票机制给该实例打上类标号。然而原始的k-NN分类算法搜索k个最邻近对象需要的时间复杂度为O(n^2),n为数据的大小。因此,在处理大的时间序列数据时需要建立一个高效的索引。使用Arya和Mount's ANN库,RANN包能够以O(n log n)的时间复杂度快速地搜索最邻近对象。下面的例子是在没有建立索引的时间序列数据集上进行k-NN分类。

  > k <- 20

  > newTS <- sc[501,] + runif(100)*15

  > distances <- dist(newTS, sc, method="DTW")

  > s <- sort(as.vector(distances), index.return=TRUE)

  > table(classId[s$ix[1:k]])

  4 6

  1 19

  对于新时间序列数据的20个最邻近对象,其中有3个属于类别4,有17个属于类别6。根据投票机制选择类标号频率最大的,即新时间序列归属于类别6。

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
cwt-0.1.tar.gz cwt.pdf cwtlib-1.5.tar.gz ecg-vc8.rar ecg.rar fwt_filters.rar MassSpecWavelet-manual.pdf Publ_24-27_May_2005_Rus.tar.gz toolbox.tar.Z VC实现的二维小波变换源代码.rar VC编写,具有小波变换,复原,图像融合等算法.经过调试,可以正常 运行.rar wavelet.0.3.tar.gz 图像处理中的小波变换C++源代码,含有使用文档和例子,非常全面!.rar 图像小波变换的vc++代码,包括小波反变换WaveletTransform.rar 基于Gabor小波变换的特征提取和人工智能的人脸检测系统源代码.rar 基于小波变换的图像融合技术研究.exe 基于小波变换的车型特征提取及车型分类PPT(程啸岚).rar(5.08M).rar 小波人脸表情.rar 小波代码.rar 小波包变换的代码.是学习小波变换的好的例程!-.tar 小波变换C++源代码(1).rar 小波变换C++源代码.asp.rar 小波变换C++源代码.rar 小波变换C++程序.rar 小波变换的数字水印算法,附有论文和源程序.rar 小波变换程序源代码.rar 小波变换算法.zip(121.27K).zip 小波时频画图工具包,能较好地画出小波变换地时频图.rar 小波滤波器-代码.r.. . 关于常用图像处理的v.. . 采用多种小波基的离散.. . 利用小波变换进行边缘.. . 一个.rar 常用的小波变换程序.rar 本程序实现二维灰度图像的小波变换和逆变换wavelet.rar 脊波变换.zip 这是我以前收集的一个毕业论文(包括源程序),是关于图像小波变换实现及EZW编码理论研究,供大家交流.rar 连续小波变换下载.rar 连续小波程序入门.rar

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值