Escalonamento para Vizinhos
Parte da seção Aprendizado supervisionado do Journey de Machine Learning da Coddy. Lição 9 de 58.
O k-NN mede a distância, então uma característica com valores grandes se sobrepõe às demais, como alertado na seção 2. Aqui, a distância do rio, em metros, se sobrepõe à elevação:
Escale primeiro. Ajuste o escalonador apenas nas linhas de treinamento e, em seguida, transforme ambos os conjuntos:
scaler = StandardScaler()
X_train_s = scaler.fit_transform(X_train)
X_test_s = scaler.transform(X_test)
model = KNeighborsClassifier()
model.fit(X_train_s, y_train)
print(model.score(X_test_s, y_test))Isso imprime 0.925, acima de 0.6. As linhas de teste continuam sem ser vistas: o escalonador não aprende nada com elas.
Desafio
FácilUm medidor inteligente estima qual aparelho está em funcionamento com base na potência (watts) e no tempo de funcionamento (minutos), em meter.csv. O código inicial lê k e imprime a precisão do k-NN com os recursos brutos.
- Ajuste um
StandardScaleràs linhas de treinamento e transforme os dois conjuntos. - Ajuste um modelo k-NN com o mesmo k usando as linhas escalonadas; imprima sua precisão com 3 casas decimais.
- Imprima o ganho.
Para outra casa e k = 5:
Unscaled accuracy: 0.65
Scaled accuracy: 0.875
Scaling gains 0.225Experimente você mesmo
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.preprocessing import StandardScaler
# Uma linha por ciclo de funcionamento de um eletrodoméstico: potência em watts, tempo de funcionamento em minutos e qual eletrodoméstico
meter = pd.read_csv("meter.csv")
X = meter[["watts", "minutes"]]
y = meter["appliance"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
k = int(input())
# k-NN com as características não escalonadas
raw_model = KNeighborsClassifier(n_neighbors=k)
raw_model.fit(X_train, y_train)
raw = raw_model.score(X_test, y_test)
print(f"Unscaled accuracy: {round(raw, 3)}")
# Escreva seu código abaixo
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Aprendizado supervisionado
1Seu primeiro modelo
Aprendendo com exemplosConjuntos de treino e testeAjustar e preverAvaliar um modeloRecapitulação: classificador de sementes4Regressão logística
Previsões de sim ou nãoO limiar de decisãoPesos como evidênciasVárias classesRevisão: filtro de spam2Vizinhos Mais Próximos
Como o k-NN DecideEscolhendo kLimites de DecisãoEscalonamento para VizinhosRevisão: Vizinhos do Vinho5Avaliando Classificadores
A Matriz de ConfusãoPrecisão e RevocaçãoA Pontuação F1Classes DesbalanceadasCurvas ROCRecapitulação: Teste de Triagem8Validação Cruzada
Validação K-FoldComparando Modelos de Forma JustaBusca em GradeRevisão: Consertos de Skate11Projeto: Espécies de Pinguins
Conheça os PinguinsPrepare os DadosEscolha um ModeloAjuste o VencedorColoque o Modelo em Produção3Regressão Linear
Prevendo númerosVárias característicasMedindo errosGráficos de resíduosRevisão: aluguel de bicicletas6Árvores de Decisão
Árvores fazem perguntasLendo uma árvoreProfundidade da árvoreImportância das característicasRevisão: decisões de empréstimoPratique por conta própria: Compilador de Python online