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
    Profile photo ofdennyDenny Ceccon
    Moderador

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

    #34612
    Caio
    Participante

    aula 16,tópico 6

    #34616
    Profile photo ofdennyDenny 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.