Erro na implementação do DeepLearning

Home Fóruns Fórum Machine Learning e Data Science com R de A à Z Erro na implementação do DeepLearning

Visualizando 6 posts - 1 até 6 (de 6 do total)
  • Autor
    Posts
  • #35649
    ahand
    Participante

      Olá Jones,

      Ao tentar implementar a aula de DeepLearning usando a base de dades Census.csv no RStudio versão 2022.02.3 Build 492 aparece a mensagem

      |=========================================================================| 100%

      ERROR: Unexpected HTTP Status code: 412 Precondition Failed (url = http://localhost:54321/3/ModelBuilders/deeplearning)

      water.exceptions.H2OModelBuilderIllegalArgumentException
      [1] “water.exceptions.H2OModelBuilderIllegalArgumentException: Illegal argument(s) for DeepLearning model: DeepLearning_model_R_1656097366399_6. Details: ERRR on field: _response_column: Use numerical, categorical or time variable. Currently used String\n”
      [2] ” water.exceptions.H2OModelBuilderIllegalArgumentException.makeFromBuilder(H2OModelBuilderIllegalArgumentException.java:19)”
      [3] ” hex.ModelBuilder.trainModelOnH2ONode(ModelBuilder.java:334)”
      [4] ” water.api.ModelBuilderHandler.handle(ModelBuilderHandler.java:51)”
      [5] ” water.api.ModelBuilderHandler.handle(ModelBuilderHandler.java:16)”
      [6] ” water.api.RequestServer.serve(RequestServer.java:470)”
      [7] ” water.api.RequestServer.doGeneric(RequestServer.java:301)”
      [8] ” water.api.RequestServer.doPost(RequestServer.java:227)”
      [9] ” javax.servlet.http.HttpServlet.service(HttpServlet.java:707)”
      [10] ” javax.servlet.http.HttpServlet.service(HttpServlet.java:790)”
      [11] ” org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:865)”
      [12] ” org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:535)”
      [13] ” org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)”
      [14] ” org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1317)”
      [15] ” org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)”
      [16] ” org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)”
      [17] ” org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)”
      [18] ” org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1219)”
      [19] ” org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)”
      [20] ” org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)”
      [21] ” org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)”
      [22] ” water.webserver.jetty9.Jetty9ServerAdapter$LoginHandler.handle(Jetty9ServerAdapter.java:130)”
      [23] ” org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)”
      [24] ” org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)”
      [25] ” org.eclipse.jetty.server.Server.handle(Server.java:531)”
      [26] ” org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:352)”
      [27] ” org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)”
      [28] ” org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:281)”
      [29] ” org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102)”
      [30] ” org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)”
      [31] ” org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)”
      [32] ” org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)”
      [33] ” org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)”
      [34] ” org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)”
      [35] ” org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)”
      [36] ” org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:762)”
      [37] ” org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:680)”
      [38] ” java.lang.Thread.run(Unknown Source)”

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

      ERROR MESSAGE:

      Illegal argument(s) for DeepLearning model: DeepLearning_model_R_1656097366399_6. Details: ERRR on field: _response_column: Use numerical, categorical or time variable. Currently used String

       

       

      Resolvi o problema colocando a variável ‘income’ no mesmo formato numérico das variáveis preditivas. Porém ao usar o comando predict retornou o seguinte resultado

      predict
      1 1.0119418
      2 1.7859616
      3 1.7070299
      4 0.9467311
      5 1.5249221
      6 0.9774379

       

      O que significa esses números ?

       

      Aguardo, obgd

      AH

       

      #35731
      Denny Ceccon
      Moderador

        Olá,

        É que, como você converteu a variável income para valores numéricos, o algoritmo está prevendo números reais. Para o processamento correto, você precisa transformar a variável em um fator, basta ativar a linha 16 que está comentada. A diferença para a aula deve ser em função de alguma atualização nas versões mais recentes da biblioteca.

        #35812
        ahand
        Participante

          Pois é Denny, Obgd por responder mas a dúvida permanece … como interpretar o resultado ?

          predict
          1 1.0119418
          2 1.7859616
          3 1.7070299
          4 0.9467311
          5 1.5249221
          6 0.9774379

          aguardo

          Armando

           

          #35813
          Denny Ceccon
          Moderador

            Se você seguir a minha orientação, os valores serão expressos como 0 ou 1, e não haverá mais problema para interpretação. Sem a correção, os resultados não fazem sentido.

            #35819
            ahand
            Participante

              obgd Denny, deu certo.

              Tentei convertei todas como factor e deu certo também.

              Então ficou a dúvida: porque o Jones precisou trabalhar como numérico ?

              abs

              #35820
              Denny Ceccon
              Moderador

                O que eu acho mais provável é por causa de versões das bibliotecas, às vezes os desenvolvedores mudam a forma de usar o algoritmo, eu acho que este foi o caso. Antigamente aceitava numérico, agora não aceita mais.

              Visualizando 6 posts - 1 até 6 (de 6 do total)
              • Você deve fazer login para responder a este tópico.