R中的predict()方法给出了不一致的结果

时间:2013-12-11 10:07:26

标签: r svm

我正在使用kernlab的KSVM来预测未来的价值。生成模型后predict()方法用于获取未来值。

代码如下:

data=read.csv('D:\\MyData.csv')
forecastInterval=2000
col=2

dataLength=length(data[,1])
plot(data[,col],xlim=c(0,8000),ylim=c(-200,200), type='l')
svmX=seq(1,dataLength,1)
regm <- ksvm(svmX,data[,col],type='eps- bsvr',kernel='anovadot',epsilon=0.5,kpar="automatic",cross=3)
newSvmX=seq(dataLength+1, dataLength+forecastInterval,1)
predict=predict(regm,newdata=data.frame(newSvmX))

lines(newSvmX,predict,col="green")
lines(seq(1,dataLength+forecastInterval,1),predict(regm,seq(1,dataLength+forecastInterval,1)), col='blue')

此处CSV文件由两列组成:第一列包含时间戳,第二列包含CPU利用率。根据这些数据,我需要预测未来的CPU利用率。

我面临的问题是predict变量的起始值从:

开始
              [,1]

   [1,] -151.68668

   [2,] -151.65964

   [3,] -151.63247

   [4,] -151.60518

   [5,] -151.57776

   ...   ...   ...

而实际数据的最后一个值为8.462130,因此实际数据和预测值的图表会中断。

另一个问题是当我使用

绘制线条时
lines(newSvmX,predict,col="green")

然后这条“绿色”线与实际数据断开连接。如果我使用:

lines(seq(1,dataLength+forecastInterval,1),predict(regm,seq(1,dataLength+forecastInterval,1)), col='blue')

然后这条“蓝色”线与原始数据连续。

请帮助我解决这个问题,为什么predict()方法给出的值不会继续使用原始数据,以及为什么运行在相同数据上的两个'lines()'方法会产生不同的图形。

附件是图表的屏幕截图。 Imange displays the different behavior of same <code>regm</code> variable for different prediction ranges

由于

0 个答案:

没有答案