我尝试在R(包e1071)中使用它后,尝试在库中的Libsvm中使用nu和epsilon SVR。但是训练时间差异太大,在R中生成我的模型花了不到一秒钟,在C中花了不到2分钟。这是正常行为吗?
在C中,我正在运行它:
./ svm-train -s 3 -t 0 -q series.train series.model
我尝试过更多的参数,使用更多的高速缓存,并在编译中加入-fopenmp标志(它增加了大约10秒的运行时间)。
任何提示都将不胜感激!
编辑: 我的培训档案:
5.7367 1:1
5.46076 1:2
4.80722 1:3
4.80722 1:4
4.64745 1:5
4.66924 1:6
4.52401 1:7
4.76364 1:8
4.06652 1:9
4.03748 1:10
...
...
...
64.02734 1:1999
63.6241 1:2000
它应该是一个金融时间序列,第一列是股票的收盘价,第一个指数只是递增顺序的数值(而不是日期)。
R代码:
data<-read.csv("/home/manzha/series/GCARSO.csv",header=TRUE)
X <- c(1:2310) # 2310 is the total of rows
trainL<-2000
X_train <- c(1:trainL)
X_test <- c((trainL+1):length(X))
Y_test<-data$Adj.Close[(trainL+1):length(X)]
Y_train <- data$Adj.Close[1:trainL]
DF <- data.frame(x = X_train, y = Y_train)
model <- svm(y ~ x, data = DF, kernel= "linear", cost=2, epsilon=0.5, type="eps-regression")
predictedY <- predict(model, newdata= data.frame(x= X_test))
我已经阅读了一些e1071库文档,它会自动扩展数据。我试过把我的数据搞得一团糟,而且培训时间不长!但结果与R.不同 如果我写:
model <- svm(y ~ x, data = DF, kernel= "linear", cost=2, epsilon=0.5, type="eps-regression",scale=FALSE)
R比C libsvm花费更多时间进行训练,结果相同。
所以现在,我认为我的问题是如何编写缩放后的训练和测试文件。