- This topic has 3 replies, 2 voices, and was last updated 4 years, 1 month ago by .
Viewing 4 posts - 1 through 4 (of 4 total)
Viewing 4 posts - 1 through 4 (of 4 total)
- You must be logged in to reply to this topic.
Home › Forums › Fórum Estatística para Ciência de Dados e Machine Learning › Padronização e zscore(knn)
Tagged: Padronização (z-score) e k-NN
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?
Olá Caio, você pode especificar a qual aula exatamente se refere?
aula 16,tópico 6
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.