天天看點

R語言h2o深度學習回歸預測

配置所需環境:

install.packages("h2o")

library(h2o)

Sys.setenv(JAVA_HOME="E:/java/JAVA(1)")         -----配置環境變量

h2o.init() #連結h2o平台

使用的資料形式如下:

R語言h2o深度學習回歸預測

先處理一下資料,劃分一下資料集:

a<-read.table("gu.txt")

gutrain<-a[1:4680,]

gutest<-a[4681:4695,]

write.table(gutrain, file="D:/gutrain.csv",col.names=F,row.names=F,sep=",") 

write.table(gutest, file="D:/gutest.csv",col.names=F,row.names=F,sep=",") 

a_train <- h2o.importFile(path = "D:/gutrain.csv")#訓練集

a_test <- h2o.importFile(path = "D:/gutest.csv")#測試集

y_train <- as.factor(as.matrix(a_train[, 5]))#訓練y

y_test <- as.factor(as.matrix(a_test[, 5]))#測試y

然後建立模型:

model <- h2o.deeplearning(x = c(1:4,c(6,7)),  # column numbers for predictors

                          y = 5,   # column number for label

                          training_frame = a_train,

                          activation = "Rectifier", ##激活函數為糾正線性函數

                          #balance_classes = TRUE, ##分類是否均衡

                          hidden = c(100, 100, 100),  ## three hidden layers

                          epochs = 100)

yhat_train <- h2o.predict(model, a_train)$predict

yhat_train <- as.factor(as.matrix(yhat_train))

yhat_test <- h2o.predict(model, a_test)$predict

yhat_test <- as.factor(as.matrix(yhat_test))

yt<-as.numeric(as.character(y_test)) #因子轉數值需要先轉字元再轉數值,不然會把因子轉成1~length(factor)之間的數值

yhat<-as.numeric(as.character(yhat_test))

接下來看一下預測效果:

s<-0

for(i in 1:15)

{

if(abs(yhat[i]-yt[i])<0.35)

s<-s+1

}

s

[1] 13

預測誤差在0.35以内的資料有13個,相對誤差是3%,效果還不錯,再看一下趨勢預測效果

aa<-0

bb<-0

for(i in 1:14)

{

aa[i]<-yt[i+1]-yt[i]

bb[i]<-yhat[i+1]-yhat[i]

}

ss<-0

for(j in 1:14)

{

if(aa[j]*bb[j]>0)

{

ss<-ss+1

}

}

ss

[1] 11

趨勢預測的正确率是73.3%,也算差強人意,在參數的調節上再下點功夫可能效果會更好

繼續閱讀