Evolução do Diabetes
Parte da seção Aprendizado supervisionado do Journey de Machine Learning da Coddy. Lição 55 de 58.
Uma clínica de diabetes agenda consultas de acompanhamento com base no quanto a doença de cada paciente vai progredir em um ano. Na seção 2, uma característica explicava apenas parte disso:
Agora entram todas as dez medições de load_diabetes. Em qual modelo a clínica deve confiar e quantos pontos de erro ele terá?
Ele quer uma seleção justa por validação cruzada, erros honestos em pacientes não vistos e uma verificação dos resíduos para identificar o que o modelo não consegue captar.
Desafio
DifícilO programa lê os valores de alpha do Ridge em alphas; o código inicial configura um gráfico com título.
- Separe um quarto dos dados para teste usando
random_state=0. - Avalie um
LinearRegressione umRidgepara cada valor de alpha, usando validação cruzada de 5 partições nos dados de treinamento. Imprima a média de R quadrado de cada um (3 casas decimais) e, em seguida, o vencedor. - Ajuste o vencedor e imprima MAE e RMSE no conjunto de teste (1 casa decimal) e R quadrado (3 casas decimais).
- Faça um gráfico de dispersão dos resíduos de teste — valor real menos valor previsto — em relação às previsões. Adicione uma linha em zero e, em seguida, exiba o gráfico.
Para outra clínica e os valores de alpha 0.5 e 2.0:
Linear: CV R squared 0.472
Ridge 0.5: CV R squared 0.481
Ridge 2.0: CV R squared 0.402
Winner: Ridge 0.5
Test errors: MAE 47.3, RMSE 58.9, R squared 0.414Em seguida, Coddy descreve seu gráfico de resíduos.
Experimente você mesmo
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_diabetes
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.linear_model import LinearRegression, Ridge
from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score
diabetes = load_diabetes(as_frame=True)
X = diabetes.data
y = diabetes.target
# Os valores de alpha do Ridge a testar
n = int(input())
alphas = []
for i in range(n):
alphas.append(float(input()))
fig, ax = plt.subplots()
ax.set_title("Residuals on Test Patients")
ax.set_xlabel("Predicted progression")
ax.set_ylabel("Residual (true - predicted)")
# 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éstimo9Métodos ensemble
Florestas aleatóriasPor que as florestas funcionamBoosting de gradienteRevisão: Guarda-florestal12Desafios Finais
Evolução do DiabetesAprovação de CréditoDígitos ManuscritosCancelamento de ClientesPratique por conta própria: Compilador de Python online