Al igual que antes, trazamos los dos componentes del LDA.
plt.xlabel('LD1')
plt.ylabel('LD2')plt.scatter(
X_lda,
X_lda,
c=y,
cmap='rainbow',
alpha=0.7,
edgecolors='b'
)
A continuación, vamos a ver cómo se compara el LDA con el Análisis de Componentes Principales o PCA. Comenzamos creando y ajustando una instancia de la clase PCA
.
from sklearn.decomposition import PCApca = PCA(n_components=2)X_pca = pca.fit_transform(X, y)
Podemos acceder a la propiedad explained_variance_ratio_
para ver el porcentaje de la varianza explicada por cada componente.
pca.explained_variance_ratio_
Como podemos ver, PCA seleccionó los componentes que darían lugar a la mayor dispersión (retener la mayor información) y no necesariamente los que maximizan la separación entre las clases.
plt.xlabel('PC1')
plt.ylabel('PC2')plt.scatter(
X_pca,
X_pca,
c=y,
cmap='rainbow',
alpha=0.7,
edgecolors='b'
)
A continuación, vamos a ver si podemos crear un modelo para clasificar los utilizando los componentes del LDA como características. Primero, dividimos los datos en conjuntos de entrenamiento y de prueba.
X_train, X_test, y_train, y_test = train_test_split(X_lda, y, random_state=1)
Entonces, construimos y entrenamos un Árbol de Decisión. Después de predecir la categoría de cada muestra en el conjunto de prueba, creamos una matriz de confusión para evaluar el rendimiento del modelo.
dt = DecisionTreeClassifier()dt.fit(X_train, y_train)y_pred = dt.predict(X_test)confusion_matrix(y_test, y_pred)