Medindo erros
Parte da seção Aprendizado supervisionado do Journey de Machine Learning da Coddy. Lição 13 de 58.
Qual é o erro do modelo, em dólares? Aqui está um modelo de preço de casas em cinco casas de teste que ele nunca viu:
sklearn.metrics mede os erros para você:
from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score
y_test = np.array([290, 410, 235, 520, 330]) # milhares de dólares
pred = np.array([270, 450, 245, 430, 360])
print(mean_absolute_error(y_test, pred))
print(np.round(np.sqrt(mean_squared_error(y_test, pred)), 1))
print(np.round(r2_score(y_test, pred), 3))Isso imprime:
38.0
47.1
0.776O MAE, erro absoluto médio, é o erro típico: 38 mil. O RMSE eleva os erros ao quadrado, calcula a média e, em seguida, extrai a raiz: um erro grande eleva o resultado para 47.
Ambos são expressos nas unidades do alvo. r2_score é o seu R ao quadrado: 78% da dispersão dos preços é explicada.
Desafio
MédioUma loja define os preços de câmeras usadas com um modelo. Uma segunda característica ajuda? O programa lê shutter_k (milhares de fotos tiradas) ou megapixels. O código inicial ajusta dois modelos, um apenas com age_years e outro com a característica extra, mantendo suas previsões de teste em preds.
- Para cada modelo, imprima seu MAE, RMSE (1 casa decimal) e R squared (3 casas decimais).
- Imprima aquele com o menor MAE.
Para outra loja e shutter_k:
age_years: MAE 212.4, RMSE 268.1, R squared 0.853
age_years + shutter_k: MAE 98.7, RMSE 121.0, R squared 0.97
Better: age_years + shutter_k, off by 98.7 dollars on a typical cameraExperimente você mesmo
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
# Uma linha por câmera vendida: idade, número de disparos do obturador em milhares, megapixels, preço em dólares
cameras = pd.read_csv("cameras.csv")
extra = input()
names = ["age_years", "age_years + " + extra]
columns = [["age_years"], ["age_years", extra]]
# Divida as linhas inteiras; cada modelo abaixo seleciona suas próprias colunas
X_train, X_test, y_train, y_test = train_test_split(cameras, cameras["price"], test_size=0.25, random_state=0)
# Um modelo para cada lista de colunas e suas previsões para as câmeras de teste
preds = []
for cols in columns:
model = LinearRegression()
model.fit(X_train[cols], y_train)
preds.append(model.predict(X_test[cols]))
# 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