Forum Replies Created

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

            in reply to: Distribuição de Poisson #34589
            Denny Ceccon
            Moderator

              Olá Marcio,

              Não entendi sua pergunta, qual a relevância de empresas com capital aberto? Distribuição de quê? Toda distribuição se refere a uma população ou uma amostra de valores. Modelo de quê? Por favor detalhe melhor sua dúvida.

              • This reply was modified 2 years, 11 months ago by Denny Ceccon.
              in reply to: calculo de média em uma lista #34577
              Denny Ceccon
              Moderator

                Olá Arno,

                Você pode fazer um loop por cada tupla (chave, valores) do dicionário e imprimir a chave e a média dos valores:

                for key, values in dictionary.items():
                    print(key, values.mean())
                Denny Ceccon
                Moderator

                  Olá Hagi,

                  Se o objetivo for avaliar os modelos exaustivamente, seria sim interessante repetir o processo todo a cada fit do grid search, pois em alguns casos a alteração dos hiperparâmetros pode mudar consideravelmente o comportamento do modelo. Entretanto, na prática isto geralmente não ocorre, principalmente com modelos grandes ou muitos dados, que levam muito tempo pra treinar. No final das contas vai da disponibilidade de tempo e de recursos, que você deve balancear com a confiança que quer ter no modelo final. Não existem regras muito fixas sobre isso, o desenvolvedor vai adquirindo uma intuição com a experiência e conforme se familiariza com cada caso. No final das contas, Ciência de Dados é tão arte quanto ciência! 🙂

                  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 2 years, 11 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.

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