Correção do Exercício

Visualizando 2 posts - 1 até 2 (de 2 do total)
  • Autor
    Posts
  • #37558
    Daniel Pereira
    Participante

      Olá, pessoal!

      Acredito que a execução do código
      np.var(X[0]), np.var(X[1]), np.var(X[2])
      a fim de se obter a Variância dos atributos está errado, pois ao executar o código X[1], por exemplo, encontra-se o seguinte resultado: [0.28812165, 0.86378597, 0.47682695].
      Ou seja, são os valores da segunda linha do array criado com a transformação de X (X = scaler.fit_transform(X)).

      Para encontrarmos a Variância correta das 3 colunas, a solução que encontrei foi criar um Data Frame:
      X_df = pd.DataFrame(X)

      Após a criação de X_df, entrei com o código:
      np.var(X_df[0]), np.var(X_df[1]), np.var(X_df[2])

      Desta forma, o 0, o 1 e o 2 são realmente as colunas 0, 1 e 2, selecionando assim todos os valores de cada coluna e calculando sua Variância.

      O resultado foi:
      (0.08210439343522112, 0.013694697910033598, 0.04897070767524544)

      Onde 0.08210439343522112 é a Variância do atributo Income, 0.013694697910033598 do atributo Age e 0.04897070767524544 do atributo Loan.

      Diferente do resultado apresentado na aula, que é a Variância entre os dados Income, Age e Loan da linha informada. Para ter a certeza, fiz o seguinte teste:
      test = [0.28812165, 0.86378597, 0.47682695] # (Valor retirado quando escrevemos o código X[1])
      np.var(test)

      E obtive o resultado: 0.057415153636501425, praticamente o mesmo da aula.

      Por fim, para chegar ao threshold “ideal” eu peguei a média entre as 3 Variâncias, ficando de fora o atributo Age, e não o atributo Income.

      O resultado final é o mesmo, mas talvez esse detalhe na execução poderia comprometer o resultado caso houvesse mais atributos.

      Por favor, corrijam-me se eu estiver errado.

      #37582
      Denny Ceccon
      Moderador

        Olá Daniel,

        Você está certo, o código apresentado na aula retorna a variância das 3 primeiras instâncias (linhas de X), não dos 3 atributos. O resultado correto poderia ser obtido também com np.var(X[:, 0]), np.var(X[:, 1]), np.var(X[:, 2]), ou ainda com np.var(X, axis=1), que calcula a variância ao longo das colunas do array.

        Obrigado pela correção!

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