Forum Replies Created

Viewing 15 posts - 361 through 375 (of 413 total)
  • Author
    Posts
  • 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.

                          in reply to: Padronização e zscore(knn) #34616
                          Denny Ceccon
                          Moderator

                            Bem observado, Caio! Neste caso, você não vai poder usar a função cross_val_score, e precisa fazer uma implementação manual. Seria mais ou menos assim:

                            from sklearn.model_selection import StratifiedKFold
                            from sklearn.preprocessing import StandardScaler
                            from sklearn.neighbors import KNeighborsClassifier
                            from sklearn.metrics import accuracy_score
                            
                            skf = StratifiedKFold(n_splits=5)
                            z_score_treinamento = StandardScaler()
                            z_score_teste = StandardScaler()
                            accuracy_folds = []
                            for train_index, test_index in skf.split(X, y):
                                X_treinamento, y_treinamento = X[train_index], y[train_index]
                                X_teste, y_teste = X[test_index], y[test_index]
                                X_treinamento_p = z_score_treinamento.fit_transform(X_treinamento)
                                X_teste_p = z_score_teste.fit_transform(X_teste)
                                knn = KNeighborsClassifier()
                                knn.fit(X_treinamento_p, y_treinamento)
                                previsoes = knn.predict(X_teste_p)
                                accuracy = accuracy_score(y_teste, previsoes)
                                accuracy_folds.append(accuracy)

                            Ou seja, os splits são produzidos manualmente através da classe StratifiedKFold, aí cada split é padronizado, o modelo é treinado, a acurácia é calculada e o resultado é acumulado na lista accuracy_folds.

                            in reply to: Como encontrar o suporte de cada regra #34602
                            Denny Ceccon
                            Moderator

                              Olá Samara,

                              Se você inspecionar a variável resultados, vai ver que uma das primeiras informações é o suporte:

                              in reply to: Padronização e zscore(knn) #34601
                              Denny Ceccon
                              Moderator

                                Olá Caio, você pode especificar a qual aula exatamente se refere?

                                in reply to: Dependencia de Parsing de um par Verbo-substantivo #34591
                                Denny Ceccon
                                Moderator

                                  Olá Shin,

                                  A classe gramatical (verbo ou substantivo) você pode pegar do atributo pos_ dos tokens, e se o token for um substantivo, pode verificar no atributo dep_ se ele é um objeto; em caso afirmativo, pode associar o substantivo com o verbo que vem antes.

                                  Em inglês temos outras opções como o atributo noun_chunks do documento, que reconheceria por exemplo que “chefes de departamento” é uma coisa só, mas em português a biblioteca é mais limitada.

                                Viewing 15 posts - 361 through 375 (of 413 total)