Padronização e zscore(knn)

Visualizando 4 posts - 1 até 4 (de 4 do total)
  • Autor
    Posts
  • #34592
    Caio
    Participante

      Professor,eu to com a seguinte dúvida,nesse caso de padrozinação,usamos  um standartscaler para a base de teste e outro para a base de treinamento,por causa que suas estatisticas são diferentes(media,moda e mediana).Mas se ao invés do traint-test-split.eu usasse a validação cruzada,teria necessidade de fazer esse processo?

       

      #34601
      Denny Ceccon
      Moderador

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

        #34612
        Caio
        Participante

          aula 16,tópico 6

          #34616
          Denny Ceccon
          Moderador

            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.

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