Plotagem Avançada com Dependência Parcial

Beginner

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

Introdução

Este tutorial guiará você pelo processo de plotagem de curvas de dependência parcial para múltiplas características. As curvas de dependência parcial são usadas para analisar o efeito de uma característica no resultado previsto de um modelo de aprendizado de máquina, mantendo todas as outras características constantes. Este tutorial demonstrará como plotar curvas de dependência parcial para uma árvore de decisão e uma perceptron multicamadas no conjunto de dados de diabetes.

Dicas da Máquina Virtual

Após o término da inicialização da máquina virtual, clique no canto superior esquerdo para mudar para a aba Notebook para acessar o Jupyter Notebook para praticar.

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

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

Treinar Modelos no Conjunto de Dados de Diabetes

Neste passo, treinaremos uma árvore de decisão e um perceptron multicamadas no conjunto de dados de diabetes.

diabetes = load_diabetes()
X = pd.DataFrame(diabetes.data, columns=diabetes.feature_names)
y = diabetes.target

tree = DecisionTreeRegressor()
mlp = make_pipeline(
    StandardScaler(),
    MLPRegressor(hidden_layer_sizes=(100, 100), tol=1e-2, max_iter=500, random_state=0),
)
tree.fit(X, y)
mlp.fit(X, y)

Plotando Dependência Parcial para Duas Características

Neste passo, plotaremos curvas de dependência parcial para as características "idade" e "índice de massa corporal" (IMC) para a árvore de decisão. Com duas características, PartialDependenceDisplay.from_estimator espera plotar duas curvas. Aqui, a função de plotagem posiciona uma grade de dois gráficos usando o espaço definido por ax.

fig, ax = plt.subplots(figsize=(12, 6))
ax.set_title("Árvore de Decisão")
tree_disp = PartialDependenceDisplay.from_estimator(tree, X, ["age", "bmi"], ax=ax)

As curvas de dependência parcial também podem ser plotadas para o perceptron multicamadas. Neste caso, line_kw é passado para PartialDependenceDisplay.from_estimator para alterar a cor da curva.

fig, ax = plt.subplots(figsize=(12, 6))
ax.set_title("Perceptron Multicamadas")
mlp_disp = PartialDependenceDisplay.from_estimator(
    mlp, X, ["age", "bmi"], ax=ax, line_kw={"color": "red"}
)

Plotando a Dependência Parcial dos Dois Modelos Juntos

Neste passo, plotaremos as curvas de dependência parcial dos dois modelos no mesmo gráfico.

fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(10, 10))
tree_disp.plot(ax=ax1)
ax1.set_title("Árvore de Decisão")
mlp_disp.plot(ax=ax2, line_kw={"color": "red"})
ax2.set_title("Perceptron Multicamadas")

Outra forma de comparar as curvas é plotá-las uma sobre a outra. Aqui, criamos uma figura com uma linha e duas colunas. Os eixos são passados para a função PartialDependenceDisplay.plot como uma lista, o que plotará as curvas de dependência parcial de cada modelo nos mesmos eixos. O comprimento da lista de eixos deve ser igual ao número de gráficos desenhados.

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 6))
tree_disp.plot(ax=[ax1, ax2], line_kw={"label": "Árvore de Decisão"})
mlp_disp.plot(
    ax=[ax1, ax2], line_kw={"label": "Perceptron Multicamadas", "color": "red"}
)
ax1.legend()
ax2.legend()

tree_disp.axes_ é um contêiner do tipo numpy array que contém os eixos usados para desenhar os gráficos de dependência parcial. Isso pode ser passado para mlp_disp para ter o mesmo efeito de desenhar os gráficos um sobre o outro. Além disso, mlp_disp.figure_ armazena a figura, o que permite redimensionar a figura após a chamada de plot. Neste caso, tree_disp.axes_ tem duas dimensões, portanto, plot mostrará apenas a legenda e os ticks do eixo y no gráfico mais à esquerda.

tree_disp.plot(line_kw={"label": "Árvore de Decisão"})
mlp_disp.plot(
    line_kw={"label": "Perceptron Multicamadas", "color": "red"}, ax=tree_disp.axes_
)
tree_disp.figure_.set_size_inches(10, 6)
tree_disp.axes_[0, 0].legend()
tree_disp.axes_[0, 1].legend()
plt.show()

Plotando Dependência Parcial para uma Única Característica

Neste passo, plotaremos as curvas de dependência parcial para uma única característica, "idade", nos mesmos eixos. Neste caso, tree_disp.axes_ é passado para a segunda função de plotagem.

tree_disp = PartialDependenceDisplay.from_estimator(tree, X, ["age"])
mlp_disp = PartialDependenceDisplay.from_estimator(
    mlp, X, ["age"], ax=tree_disp.axes_, line_kw={"color": "red"}
)

Resumo

Este tutorial demonstrou como plotar curvas de dependência parcial para múltiplas características usando o objeto PartialDependenceDisplay. Primeiro, treinamos uma árvore de decisão e um perceptron multicamadas no conjunto de dados de diabetes. Em seguida, plotamos as curvas de dependência parcial da árvore de decisão e do perceptron multicamadas para duas características. Depois, plotamos as curvas de dependência parcial dos dois modelos no mesmo gráfico. Finalmente, plotamos as curvas de dependência parcial para uma única característica nos mesmos eixos.