Gráficos avanzados con dependencia parcial

Machine LearningMachine LearningBeginner
Practicar Ahora

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

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

Este tutorial lo guiará a través del proceso de trazar curvas de dependencia parcial para múltiples características. Las curvas de dependencia parcial se utilizan para analizar el efecto de una característica en el resultado previsto de un modelo de aprendizaje automático mientras se mantienen constantes todas las demás características. Este tutorial demostrará cómo trazar curvas de dependencia parcial para un árbol de decisión y una red neuronal multicapa en el conjunto de datos de diabetes.

Consejos sobre la VM

Una vez finalizada la inicialización de la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.

A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de las operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.

Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje sus comentarios después de la sesión y lo resolveremos rápidamente para usted.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills ml/sklearn -.-> lab-49238{{"Gráficos avanzados con dependencia parcial"}} end

Entrenar modelos en el conjunto de datos de diabetes

En este paso, entrenaremos un árbol de decisión y una red neuronal multicapa en el conjunto de datos 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)

Trazar dependencia parcial para dos características

En este paso, trazaremos curvas de dependencia parcial para las características "edad" y "imc" (índice de masa corporal) para el árbol de decisión. Con dos características, PartialDependenceDisplay.from_estimator espera trazar dos curvas. Aquí, la función de trazado coloca una cuadrícula de dos trazados utilizando el espacio definido por ax.

fig, ax = plt.subplots(figsize=(12, 6))
ax.set_title("Decision Tree")
tree_disp = PartialDependenceDisplay.from_estimator(tree, X, ["age", "bmi"], ax=ax)

Las curvas de dependencia parcial se pueden trazar para la red neuronal multicapa. En este caso, line_kw se pasa a PartialDependenceDisplay.from_estimator para cambiar el color de la curva.

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

Trazar la dependencia parcial de los dos modelos juntos

En este paso, trazaremos las curvas de dependencia parcial de los dos modelos en la misma gráfica.

fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(10, 10))
tree_disp.plot(ax=ax1)
ax1.set_title("Decision Tree")
mlp_disp.plot(ax=ax2, line_kw={"color": "red"})
ax2.set_title("Multi-layer Perceptron")

Otra forma de comparar las curvas es superponerlas. Aquí, creamos una figura con una fila y dos columnas. Los ejes se pasan a la función PartialDependenceDisplay.plot como una lista, lo que dibujará las curvas de dependencia parcial de cada modelo en los mismos ejes. La longitud de la lista de ejes debe ser igual al número de gráficos dibujados.

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 6))
tree_disp.plot(ax=[ax1, ax2], line_kw={"label": "Decision Tree"})
mlp_disp.plot(
    ax=[ax1, ax2], line_kw={"label": "Multi-layer Perceptron", "color": "red"}
)
ax1.legend()
ax2.legend()

tree_disp.axes_ es un contenedor de matriz de numpy con los ejes utilizados para dibujar las gráficas de dependencia parcial. Esto se puede pasar a mlp_disp para tener el mismo efecto de dibujar las gráficas una encima de la otra. Además, mlp_disp.figure_ almacena la figura, lo que permite cambiar el tamaño de la figura después de llamar a plot. En este caso, tree_disp.axes_ tiene dos dimensiones, por lo que plot solo mostrará la etiqueta y las marcas del eje y en la gráfica más a la izquierda.

tree_disp.plot(line_kw={"label": "Decision Tree"})
mlp_disp.plot(
    line_kw={"label": "Multi-layer Perceptron", "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()

Trazar dependencia parcial para una característica

En este paso, trazaremos las curvas de dependencia parcial para una sola característica, "edad", en los mismos ejes. En este caso, tree_disp.axes_ se pasa a la segunda función de trazado.

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

Resumen

Este tutorial demostró cómo trazar curvas de dependencia parcial para múltiples características utilizando el objeto PartialDependenceDisplay. Primero, entrenamos un árbol de decisión y una red neuronal multicapa en el conjunto de datos de diabetes. Luego, tracamos curvas de dependencia parcial para el árbol de decisión y la red neuronal multicapa para dos características. A continuación, tracamos las curvas de dependencia parcial de los dos modelos en la misma gráfica. Finalmente, tracamos las curvas de dependencia parcial para una sola característica en los mismos ejes.