Forum Replies Created

Viewing 15 posts - 376 through 390 (of 410 total)
  • Author
    Posts
  • in reply to: Amplitude total de distribuição #34559
    Denny Ceccon
    Moderator

      Olá Caio,

      A amplitude é sempre dada pela diferença entre valor máximo e valor mínimo.

      in reply to: Validação cruzada #34555
      Denny Ceccon
      Moderator

        Olá Renato,

        Sim, na Parte 1 você encontra a sessão Avaliação de algoritmos de classificação, e a aula Validação cruzada.

        Denny Ceccon
        Moderator

          Olá Hagi,

          É possível sim, os mesmos conceitos se aplicam. Inclusive a biblioteca imblearn aceita nativamente y com mais de duas categorias.

          in reply to: Como posso pré-processar texto NLP no spacy #34530
          Denny Ceccon
          Moderator

            Olá Shin,

            Você nem precisa do spacy, pode fazer uma função como a seguir:

            def clean_text(text):
                text = text.lower()
                words = text.split()
                keep = ['.', ',', '!', '?'] # supondo que quer manter alguma pontuação
                clean_words = []
                for word in words:
                    clean_word = ''.join([c for c in word if c.isalpha() or c in keep]) # isalpha retorna True se o caractere for alfabético
                    if clean_word is not '': # algumas palavras vão estar vazias, podemos ignorá-las
                        clean_words.append(clean_word)
                return ' '.join(clean_words)

            Exemplo:

            clean_text('Olá, bom dia @Shin! Você tem 1 minuto?')
            # olá, bom dia shin! você tem minuto?
            • This reply was modified 3 years, 8 months ago by Denny Ceccon.
            in reply to: TF -IDF par(verbo-substantivo) #34529
            Denny Ceccon
            Moderator

              Olá Shin,

              Suponho que você perguntou sobre um parágrafo. Até pode, mas a ideia do tf-idf é reconhecer as palavras mais distintivas de cada texto, e se analisamos o parágrafo inteiro, ele dificilmente vai se repetir em outros textos, o que compromete a ideia que fundamenta o tf-idf.

              Denny Ceccon
              Moderator

                Olá Thiago, você até pode usar o train_test_split (depois que as janelas de tempo estão prontas, ou seja, depois de criar a variável X), mas se quiser gerar um gráfico no final com dados contínuos, é mais interessante separar alguns registros do final da sua tabela histórica, já que usando train_test_split, o dia em questão vai ser amostrado aleatoriamente.

                in reply to: Como faço parar calcular a acuracia da rede neural #34498
                Denny Ceccon
                Moderator

                  Olá Thiago,

                  A acurácia é uma medida de desempenho dos modelos de classificação, mas este é um problema de regressão, portanto temos que usar outras métricas. Na aula, nós usamos o mean absolute error, que é o erro absoluto. No final do treinamento, você pode observar que o MAE é de 0.1621; isto significa que a rede está errado 0.1621 no preço escalonado, para cima ou para baixo.

                  in reply to: CONTEUDO PARA MAIS SENTIMENTOS #34496
                  Denny Ceccon
                  Moderator

                    Olá Kayo,

                    O primeiro passo é converter os rótulos para inteiros, começando com 0 e incrementando 1 para nova cada classe. Este processo é chamado de LabelEncoder, e pode ser feito utilizando uma classe do Sklearn. No código da aula, depois de criar data_labels, você poderia fazer essa transformação assim:

                    data_labels = y
                    from sklearn.preprocessing import LabelEncoder
                    le = LabelEncoder()
                    data_labels = le.fit_transform(data_labels)
                    print(data_labels)
                    # array([1, 2, 2, ..., 0, 0, 1])

                    Aí, depois de treinar o modelo (adaptado para seu número de classes), você continua fazendo a predição o método predict. Você veria algo assim (supondo que temos 3 classes):

                    y_pred_test = Dcnn.predict(test_inputs)
                    print(y_pred_test)
                    # array([[0.11550928, 0.195952 , 0.6885387 ], 
                    #        [0.134687  , 0.340371 , 0.52494204], 
                    #        ...,
                    #        [0.27549207, 0.4443647, 0.28011146],
                    #        [0.10340592, 0.2649754, 0.63168657]], dtype=float32)

                    Este array tem shape (n_registros, n_classes), ou seja, cada linha representa um registro e cada coluna representa uma das 3 classes. Os valores são o resultado da ativação final do modelo, que neste caso é softmax, e indicam a probabilidade de o registro daquela linha pertencer àquela classe. Ou seja, você pode recuperar a predição vendo qual a classe de maior probabilidade para cada registro, e isso pode ser feito com:

                    y_pred_labels = np.argmax(y_pred_test, axis=-1)
                    print(y_pred_labels)
                    # array([2, 2, 0, ..., 1, 2, 2])

                    Este é o resultado com os rótulos codificados, para recuperar o rótulo original você faz:

                    y_pred = le.inverse_transform(y_pred_labels.reshape(-1))

                    Agora, y_pred contém seus resultados finais.

                    in reply to: Série temporal com múltiplos previsores II #34375
                    Denny Ceccon
                    Moderator

                      Olá Henrique,

                      Isso ocorre na linha 39 você usa somente uma variável (índice 0) para descrever cada timestep do dataset de treinamento, mas seu X_teste (linha 93) é construído com 6 variáveis. Mudando 0:6 para 0 deve resolver o problema.

                      in reply to: Percorrer uma lista com o get_prediction #34229
                      Denny Ceccon
                      Moderator

                        Olá Micael,

                        Você pode primeiro fazer uma pequena modificação na função get_predictions, para retornar o valor ao invés de exibi-lo na tela:

                        def get_prediction(sentence):
                          tokens = encode_sentence(sentence)
                          inputs = tf.expand_dims(tokens, 0) # (batch_size) (1,...)
                          output = Dcnn(inputs, training=False)
                          sentiment = math.floor(output*2)
                          if sentiment == 0:
                            return 'negative'
                          elif sentiment == 1:
                            return 'positive'

                        Agora, pode organizar suas frases em um dataframe e adicionar o resultado desta forma:

                        texts = ["This movie was pretty interesting", "I'd rather not do that again", "What a great time to be alive", "I wish this never happened"]
                        df = pd.DataFrame({'text': texts})
                        df['emotion'] = df['text'].map(get_prediction)
                        print(df)
                        
                        <out> 
                          text                              emotion
                        --------------------------------------------
                        0 This movie was pretty interesting positive
                        1 I'd rather not do that again      negative
                        2 What a great time to be alive     positive
                        3 I wish this never happened        negative
                        
                        
                        • This reply was modified 3 years, 9 months ago by Denny Ceccon.
                        in reply to: Augmentation e testes com a rede neural #34193
                        Denny Ceccon
                        Moderator

                          Olá Henrique,

                          O warning diz que seu gerador ficou sem dados. Como ele parou no batch 126, eu acho mais provável que sua pasta com os arquivos de treinamento esteja incompleta. Veja se ela contém todos os arquivos demonstrados na aula.

                          in reply to: Aula -> Validação Cruzada – Implementação #34058
                          Denny Ceccon
                          Moderator

                            Olá Henrique,

                            Esse é o número do batch. O número total de batches é definido pelo tamanho do dataset (número de instâncias), que no caso é igual a len(previsores), dividido pelo batch_size. Como o tamanho do dataset é fixo durante uma tarefa de validação cruzada, você pode alterá-lo mudando o batch_size.

                            Denny Ceccon
                            Moderator

                              Olá Aislan,

                              Basta utilizar NB_CLASSES = 5, conforme aula Treinamento do Modelo @1:22.

                              in reply to: Bert para outras linguas #33725
                              Denny Ceccon
                              Moderator

                                Felix, é que o BERT trabalha com uma estratégia de tokenização chamada subwords, onde as palavras são quebradas nos n-gramas de letras mais frequentes. Adicione a isso o fato de que o modelo multilíngua foi treinado com várias línguas, e o resultado é que muitos tokens não farão sentido gramatical, mas computacionalmente eles são úteis. O importante não é que a tokenização “faça sentido”, mas que sirva para a finalidade do algoritmo.

                                Existem modelos treinados em outras línguas, mas são soluções de outros grupos, não oficiais do Google. Algumas, inclusive, você consegue importar do próprio hub do Tensorflow, o que facilita a adaptação do código da aula. Não temos como oferecer suporte neste caso, mas você está livre para testá-las por conta própria.

                                in reply to: Restore de checkpoint #33724
                                Denny Ceccon
                                Moderator

                                  Olá Felix,

                                  Nesse caso, você deve salvar o atributo history do objeto history com:

                                  import joblib
                                  joblib.dump(history.history, 'history.joblib')

                                  E depois restaurar com:

                                  history = joblib.load('history.joblib')

                                  Observe entretanto que não é possível salvar o objeto history inteiro, apenas o atributo history dele, que contém as métricas.

                                Viewing 15 posts - 376 through 390 (of 410 total)