Visualização de Previsões com Validação Cruzada

Beginner

This tutorial is from open-source community. Access the source code

Introdução

Neste laboratório, aprenderemos a utilizar a validação cruzada para visualizar as previsões e erros do modelo usando as funções cross_val_predict e PredictionErrorDisplay no scikit-learn. Carregaremos o conjunto de dados de diabetes, criaremos uma instância de um modelo de regressão linear e usaremos a validação cruzada para obter um array de previsões. Em seguida, usaremos PredictionErrorDisplay para plotar os valores reais versus os valores previstos, bem como os resíduos versus os valores previstos.

Dicas da Máquina Virtual

Após o arranque da VM, clique no canto superior esquerdo para mudar para a aba Notebook para aceder ao Jupyter Notebook para a prática.

Às vezes, pode ser necessário esperar alguns segundos para o Jupyter Notebook terminar de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.

Se tiver problemas durante o aprendizado, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão e resolveremos o problema rapidamente para si.

Carregar e Preparar Dados

Primeiro, carregaremos o conjunto de dados de diabetes e o prepararemos para modelagem. Usaremos a função load_diabetes do scikit-learn para carregar o conjunto de dados em dois arrays, X e y.

from sklearn.datasets import load_diabetes

X, y = load_diabetes(return_X_y=True)

Criar um Modelo de Regressão Linear

Em seguida, criaremos uma instância de um modelo de regressão linear usando a classe LinearRegression do scikit-learn.

from sklearn.linear_model import LinearRegression

lr = LinearRegression()

Gerar Previsões com Validação Cruzada

Usaremos a função cross_val_predict do scikit-learn para gerar previsões com validação cruzada.

from sklearn.model_selection import cross_val_predict

y_pred = cross_val_predict(lr, X, y, cv=10)

Visualizar Erros de Predição

Usaremos PredictionErrorDisplay do scikit-learn para visualizar os erros de previsão. Iremos plotar os valores reais versus os valores preditos, bem como os resíduos versus os valores preditos.

import matplotlib.pyplot as plt
from sklearn.metrics import PredictionErrorDisplay

fig, axs = plt.subplots(ncols=2, figsize=(8, 4))
PredictionErrorDisplay.from_predictions(
    y,
    y_pred=y_pred,
    kind="actual_vs_predicted",
    subsample=100,
    ax=axs[0],
    random_state=0,
)
axs[0].set_title("Valores Reais vs. Valores Preditos")
PredictionErrorDisplay.from_predictions(
    y,
    y_pred=y_pred,
    kind="residual_vs_predicted",
    subsample=100,
    ax=axs[1],
    random_state=0,
)
axs[1].set_title("Resíduos vs. Valores Preditos")
fig.suptitle("Plotando previsões com validação cruzada")
plt.tight_layout()
plt.show()

Interpretar Resultados

A partir das visualizações, podemos observar que o gráfico de valores reais versus preditos apresenta uma relação relativamente linear com alguma variação. O gráfico de resíduos versus valores preditos mostra um padrão relativamente aleatório sem tendência clara, indicando que o modelo de regressão linear pode ser um bom ajuste para os dados. No entanto, é importante notar que usamos cross_val_predict apenas para fins de visualização. Seria problemático avaliar quantitativamente o desempenho do modelo calculando uma única métrica de desempenho a partir das previsões concatenadas retornadas por cross_val_predict, quando as diferentes dobras de validação cruzada variam em tamanho e distribuições. Recomenda-se calcular as métricas de desempenho por dobra usando cross_val_score ou cross_validate em vez disso.

Resumo

Neste laboratório, aprendemos como usar a validação cruzada para visualizar as previsões e erros do modelo utilizando as funções cross_val_predict e PredictionErrorDisplay no scikit-learn. Carregamos o conjunto de dados de diabetes, criamos uma instância de um modelo de regressão linear e usamos a validação cruzada para obter um array de previsões. Em seguida, usamos PredictionErrorDisplay para plotar os valores reais versus os valores preditos, bem como os resíduos versus os valores preditos. Finalmente, interpretamos os resultados e discutimos a importância de usar métricas de desempenho por dobra para a avaliação do modelo.