C:\Users\MINEDU~1\AppData\Local\Programs\Python\PYTHON~1\Lib\site-packages\sklearn\utils\validation.py:2739: UserWarning: X does not have valid feature names, but LinearDiscriminantAnalysis was fitted with feature names
warnings.warn(
C:\Users\MINEDU~1\AppData\Local\Programs\Python\PYTHON~1\Lib\site-packages\sklearn\utils\validation.py:2739: UserWarning: X does not have valid feature names, but LinearDiscriminantAnalysis was fitted with feature names
warnings.warn(
predicciones = lda.predict(nuevas_flores)
C:\Users\MINEDU~1\AppData\Local\Programs\Python\PYTHON~1\Lib\site-packages\sklearn\utils\validation.py:2739: UserWarning: X does not have valid feature names, but LinearDiscriminantAnalysis was fitted with feature names
warnings.warn(
nombres_grupos = iris.target_names[predicciones]# Graficar datos originalesplt.figure(figsize=(8,6))colores = ['red', 'green', 'blue']for i, target_name inenumerate(iris.target_names): plt.scatter(X_lda[y==i,0], X_lda[y==i,1], alpha=0.5, label=target_name, color=colores[i])# Graficar nuevas flores como estrellasfor i, nombre inenumerate(nombres_grupos): plt.scatter(nuevas_flores_lda[i,0], nuevas_flores_lda[i,1], color=colores[predicciones[i]], edgecolor='black', marker='*', s=400, label=f'Nueva flor {i+1}: {nombre}')plt.xlabel('LD1')plt.ylabel('LD2')plt.title('Clasificación de nuevas flores en el espacio LDA')plt.legend(loc='best', fontsize='small')plt.show()
from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay# Predicciones sobre los datos originalesy_pred = lda.predict(X)# Matriz de confusióncm = confusion_matrix(y, y_pred)print("Matriz de confusión:\n", cm)
# Visualización de la matriz de confusióndisp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=iris.target_names)disp.plot(cmap='Blues')
<sklearn.metrics._plot.confusion_matrix.ConfusionMatrixDisplay object at 0x000001BA184F4CE0>
plt.title('Matriz de confusión del modelo LDA')plt.show()
from sklearn.metrics import accuracy_score# Predicciones sobre los datos originalesy_pred = lda.predict(X)# Calcular precisiónprecision = accuracy_score(y, y_pred)print(f"Precisión del modelo LDA: {precision:.2%}")
Precisión del modelo LDA: 98.00%
# Obtener los eigenvalores del modelo LDAeigenvalues = lda.explained_variance_ratio_ / (1- lda.explained_variance_ratio_)# Calcular Lambda de Wilkslambda_wilks =1/ np.prod(1+ eigenvalues)print(f"Lambda de Wilks: {lambda_wilks:.4f}")
Lambda de Wilks: 0.0087
from scipy.stats import shapirofor clase in np.unique(y):print(f"\nGrupo: {iris.target_names[clase]}")for i, var inenumerate(iris.feature_names): stat, p = shapiro(df[df['target']==clase][var])print(f"{var}: p-valor={p:.3f}")
import pandas as pdimport numpy as npfrom pingouin import multivariate_normality# Evaluar normalidad multivariante para cada grupofor clase in np.unique(y): grupo = df[df['target'] == clase][iris.feature_names]print(f"\nGrupo: {iris.target_names[clase]}") mardia = multivariate_normality(grupo, alpha=0.05)print(mardia)
Sepal.Length Sepal.Width Petal.Length Petal.Width
Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100
1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300
Median :5.800 Median :3.000 Median :4.350 Median :1.300
Mean :5.843 Mean :3.057 Mean :3.758 Mean :1.199
3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800
Max. :7.900 Max. :4.400 Max. :6.900 Max. :2.500
Species
setosa :50
versicolor:50
virginica :50
pairs(iris[1:4], col=iris$Species, pch=19, main="Matriz de dispersión de Iris")
#install.packages("MVN") # Solo si no lo tieneslibrary(MVN)
Warning: package 'MVN' was built under R version 4.4.2
for (sp inunique(iris$Species)) {cat("\nGrupo:", sp, "\n") grupo <-subset(iris, Species == sp)[,1:4]print(mvn(grupo, mvnTest ="mardia")$multivariateNormality)}
Grupo: setosa
Test Statistic p value Result
1 Mardia Skewness 25.6643445196298 0.177185884467652 YES
2 Mardia Kurtosis 1.29499223711605 0.195322907441935 YES
3 MVN <NA> <NA> YES
Grupo: versicolor
Test Statistic p value Result
1 Mardia Skewness 25.1850115362466 0.194444483140265 YES
2 Mardia Kurtosis -0.57186635893429 0.567412516528727 YES
3 MVN <NA> <NA> YES
Grupo: virginica
Test Statistic p value Result
1 Mardia Skewness 26.2705981752915 0.157059707690356 YES
2 Mardia Kurtosis 0.152614173978342 0.878702546726567 YES
3 MVN <NA> <NA> YES
#install.packages("biotools") # Solo si no lo tieneslibrary(biotools)
Warning: package 'biotools' was built under R version 4.4.3
Cargando paquete requerido: MASS
---
biotools version 4.3
boxM(iris[,1:4], iris$Species)
Box's M-test for Homogeneity of Covariance Matrices
data: iris[, 1:4]
Chi-Sq (approx.) = 140.94, df = 20, p-value < 2.2e-16
Interpretación:
Si el p-valor es menor a 0.05, se rechaza la igualdad de matrices de covarianza.