Forum Replies Created

Viewing 15 posts - 346 through 360 (of 402 total)
  • Author
    Posts
  • in reply to: Validação cruzada em datasets grandes #35077
    Denny Ceccon
    Moderator

      Olá Luis,

      A biblioteca skorch que usamos para fazer validação cruzada no curso suporta o uso de GPUs, como é documentado aqui. Mesmo assim, é possível implementar a validação cruzada de forma mais manual, criando os folds explicitamente, e aproveitar o suporte a GPUs que o próprio PyTorch já tem.

      in reply to: Como converter um resultado do tensor em um percentual? #35071
      Denny Ceccon
      Moderator

        Com a função argmax:

        array = output.numpy()
        prob = np.max(array)
        index = np.argmax(array)
        return prob, index
        in reply to: Como converter um resultado do tensor em um percentual? #35032
        Denny Ceccon
        Moderator
          array = output.numpy()
          array = np.max(array)
          return array
          in reply to: Como converter um resultado do tensor em um percentual? #35029
          Denny Ceccon
          Moderator

            Olá Aislan,

            Este tensor já contém as probabilidades para cada uma das classes. Observe que o valor no index 6 é igual a 0.999, que equivale a 99.9%. Todos os outros são tão baixos que na prática equivalem a zero.

            Se você quiser formatar melhor, pode converser este tensor para numpy array com array = tensor.numpy(), e depois extrair o valor máximo com np.max(array).

            in reply to: Não consigo prever mais classes, AJUDA POR FAVOR! #35013
            Denny Ceccon
            Moderator

              Olá Micael,

              Para prever mais de uma categoria, além de ajustar o parâmetro NB_CLASSES, você precisa transformar seus rótulos usando o LabelEncoder do Sklearn:

              from sklearn.preprocessing import LabelEncoder
              encoder = LabelEncoder()
              data_labels = encoder.fit_transform(data_labels.reshape(-1, 1))

              Aliás, dá pra fazer isto também com duas categorias, ao invés de fazer a transformação manualmente como o professor fez.

              O interessante de usar este método é que dá pra recuperar os rótulos originais no final, usando o método inverse_transform do encoder:

              def get_prediction(sentence):
                  tokens = encode_sentence(sentence)
                  inputs = tf.expand_dims(tokens, 0)
                  output = Dcnn(inputs, training=False).numpy()
                  output = np.argmax(output, -1)
                  category = encoder.inverse_transform(output)
                  return category
              in reply to: sigmoid #34752
              Denny Ceccon
              Moderator

                Se você usar sigmoide, então cada neurônio que tiver valor o acima de 0.5 indica presença da categoria. Por exemplo, se neurônio_mamífero = 0.6, neurônio_aquático = 0.7 e neurônio_escamoso = 0.4, então o registro é mamífero e também aquático, mas não tem escamas.

                Quando o problema só admite uma classe, nós usamos softmax, que aí sim o valor maior indica a presença da única classe permitida.

                in reply to: sigmoid #34703
                Denny Ceccon
                Moderator

                  Até consegue, pois você pode por exemplo colocar três neurônios na camada de saída, todos ativados com sigmoide. Neste caso, a rede neural vai determinar se o registro pertence a cada uma das classes, independentemente. É assim que trabalhamos com problemas multi-classe, por exemplo quando um animal pode ser mamífero e aquático ao mesmo tempo. Mas se as classes forem exclusivas, por exemplo mamífero ou réptil ou peixe. a ativação mais adequada é softmax, que limita a resposta a somente uma categoria.

                  in reply to: sigmoid #34702
                  Denny Ceccon
                  Moderator

                    Até consegue, pois você pode por exemplo colocar três neurônios na camada de saída, todos ativados com sigmoide. Neste caso, a rede neural vai determinar se o registro pertence a cada uma das classes, independentemente. É assim que trabalhamos com problemas multi-classe, por exemplo quando um animal pode ser mamífero e aquático ao mesmo tempo. Mas se as classes forem exclusivas, por exemplo mamífero ou réptil ou peixe. a ativação mais adequada é softmax, que limita a resposta a somente uma categoria.

                    in reply to: sigmoid #34675
                    Denny Ceccon
                    Moderator

                      Olá Caio,

                      Cada neurônio de entrada representa uma variável do dataset, e cada neurônio terá pesos diferentes para cada camada oculta.

                      A função sigmoide produz resultados no intervalo entre 0 e 1, mas ela força para que os resultados se concentrem mais próximos de 0 ou de 1. Por isso, ela é uma função de ativação adequada para problemas de classificação binária, indicando uma das classes com 0 e a outra com 1.

                      in reply to: COnversão Date em Datetime #34674
                      Denny Ceccon
                      Moderator

                        Olá Felix,

                        Seria interessante converter a coluna Date para datetime se o professor fosse utilizar a data para, por exemplo, plotar um gráfico temporal, mas como ele não fez isso, não faz diferença, o importante é recuperar a informação de interesse.

                        in reply to: Visualizar um dataframe atraves do displaCY #34659
                        Denny Ceccon
                        Moderator

                          É que o displacy renderiza uma frase por vez, e tecnicamente, em uma coluna, você terá várias frases. Mas pode tentar algo deste tipo:

                          for frase in df['coluna']:
                              doc = nlp(frase)
                              displacy.render(doc, style='dep')
                          in reply to: Qui quadrado #34657
                          Denny Ceccon
                          Moderator

                            Depende, neste caso o 1 vai só significar se o registro não está nulo para a categoria “estado civil”. Se você quiser explicitar que a categoria pode ser casado, solteiro, viúvo ou nulo, precisa fazer desta forma:

                            reg1: casado => [1, 0, 0, 0]
                            reg2: solteiro => [0, 1, 0, 0]
                            reg3: viúvo => [0, 0, 1, 0]
                            reg4: nulo => [0, 0, 0, 1]

                            Assim, cada posição da lista indica uma das 4 categorias possíveis para “estado civil”.

                            Esta codificação é tão comum que é chamada de One Hot Encoding, você vai encontrar referências a ela e como realizá-la no curso Machine Learning e Data Science com Python de A à Z, Parte 1 – Classificação, aula Atributos categóricos – OneHotEncoder.

                            in reply to: Qui quadrado #34636
                            Denny Ceccon
                            Moderator

                              Olá Caio,

                              As classes qualitativas devem estar representadas com 0 (para ausência) e 1 (para presença), como acontece com várias colunas do dataset mostrado na aula.

                              in reply to: Teste de hipótese #34635
                              Denny Ceccon
                              Moderator

                                Olá Caio,

                                Você precisa garantir que as duas são amostras representativas da mesma população. Existe uma literatura considerável sobre o que significa uma amostra representativa, mas um dos princípios mais fundamentais é que ela seja aleatória. Não precisa ter o mesmo número de amostras, mas tecnicamente você precisa garantir que o número de amostras seja suficiente para medir o efeito de interesse. Este é outro assunto que tem bastante material de referência, te recomendo este artigo pra te dar uma ideia: https://www.statology.org/minimum-sample-size-for-t-test/

                                in reply to: Visualizar um dataframe atraves do displaCY #34634
                                Denny Ceccon
                                Moderator

                                  Olá Shin,

                                  Tente adicionar o parâmetro manual=True à chamada do displacy, como sugere o código de erro.

                                Viewing 15 posts - 346 through 360 (of 402 total)