X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, random_state=SEMILLA, stratify=y
)
modelo_completo = Pipeline([
('escalador', StandardScaler()),
('clasificador', LogisticRegression(max_iter=2000)),
])
modelo_pca = Pipeline([
('escalador', StandardScaler()),
('pca', PCA(n_components=2, random_state=SEMILLA)),
('clasificador', LogisticRegression(max_iter=2000)),
])
modelo_umap = Pipeline([
('escalador', StandardScaler()),
('umap', umap.UMAP(n_components=2, n_neighbors=15, min_dist=0.1, random_state=SEMILLA)),
('clasificador', LogisticRegression(max_iter=2000)),
])
resultados = []
for nombre, modelo in [('13 variables', modelo_completo), ('PCA (2D)', modelo_pca), ('UMAP (2D)', modelo_umap)]:
modelo.fit(X_train, y_train)
exactitud = accuracy_score(y_test, modelo.predict(X_test))
resultados.append({'modelo': nombre, 'dimensiones': 13 if nombre == '13 variables' else 2, 'exactitud_test': exactitud})
tabla_resultados = pd.DataFrame(resultados)
display(tabla_resultados.style.format({'exactitud_test': '{:.2%}'}))