2017-01-02 9 views
1

私は2つのループ(下記参照)を含むコードを作成しましたが、エラーが発生しました。どのようにこのループを作成できますか?添付正しくh2oパッケージenvに基づいてループを作成する方法。正しく

Error in .h2o.doSafeREST(h2oRestApiVersion = h2oRestApiVersion, urlSuffix = page, : 
ERROR MESSAGE: 

Can only append one column 

私のコードです:

attach(iris) 
train<-iris 
test<-iris 
invisible(capture.output(h2o.init(nthreads = -1))) # initalising with all cpu cores 
trainHex <- as.h2o(train[1:200,]) 
testHex <- as.h2o(test) 
x_names <- colnames(trainHex[1:4]) 
SEED<-c(123456789,12345678,1234567) 
method<-c("Rectifier", "Tanh", "TanhWithDropout", "RectifierWithDropout", "Maxout", "MaxoutWithDropout") 
Res<-data.frame() 

for(i in 1:6){ 
    for(j in 1:3){ 

     system.time(ann <- h2o.deeplearning(
      reproducible = TRUE, 
      seed = SEED[j], 
      x = x_names, 
      y = "Species", 
      training_frame = trainHex,epochs = 50, 
      standardize = TRUE, 
      nesterov_accelerated_gradient = T, # for speed 
      activation = method[i] 
     )) 
     #ann 
     testHex$h20<-ifelse(predict(ann,newdata = testHex)>0.5,1,0) 
     testHex<-as.data.frame(testHex) 
     s<-xtabs(~Species +h20,data=testHex) 
     accuracy<-sum(diag(s))/sum(s) 
     tmp<-data.frame(seed=SEED[j],method=method[i],result=accuracy) 
     Res<-rbind(Res,tmp) 

    } 
} 
Error in .h2o.doSafeREST(h2oRestApiVersion = h2oRestApiVersion, urlSuffix = page, : 


ERROR MESSAGE: 

Can only append one column 

答えて

1

あなたは多項分類を行っています。すなわち、予測は3つのクラスのうちの1つになる。

p = predict(ann,newdata = testHex) 

あなたは1を取得するには、この操作を行うことができます予測を得るために

> predict(ann,newdata = testHex) 
    |========================================================================================================================================================| 100% 
    predict setosa versicolor virginica 
1 setosa 0.9999930 7.032604e-06 1.891484e-30 
2 setosa 0.9998726 1.274161e-04 2.791200e-28 
3 setosa 0.9999923 7.679687e-06 1.101218e-29 
4 setosa 0.9999838 1.619749e-05 1.593254e-28 
5 setosa 0.9999978 2.150244e-06 7.174795e-31 
6 setosa 0.9999932 6.844831e-06 5.511857e-29 

[150 rows x 4 columns] 

私はあなたが何をしているか完全にわからないんだけど、これを与えられた:h2o.predict()したがって、4列を返します正解、間違いのための0:

p$predict == testHex$Species 

それとも、それをクライアント側やって:

さらに一般的には、h2o.grid()は代替パラメータを使用して実験する方が適しています。私はこれがあなたの意図に近いかもしれないと思う:

parts = h2o.splitFrame(as.h2o(iris), 0.8, seed=123) 
trainHex = parts[[1]] 
testHex = parts[[2]] 

g = h2o.grid("deeplearning", 
hyper_params = list(
    seed = c(123456789,12345678,1234567), 
    activation = c("Rectifier", "Tanh", "TanhWithDropout", "RectifierWithDropout", "Maxout", "MaxoutWithDropout") 
    ), 
reproducible = TRUE, 
x = 1:4, 
y = 5, 
training_frame = trainHex, 
validation_frame = testHex, 
epochs = 1 
) 
g #Output the grid 

(私はちょうどそれがすぐに完了するために取得するために1にエポックを設定しているしたい場合は50に設定してください。。)

私が使用したsplitFrame()トレーニングデータとして80%、テストデータとして20%を使用する。テストデータをvalidation_frameに割り当てることで、グリッドは自動的にその目に見えないデータにスコアを付けます。

関連する問題