Files
fn_registry/python/functions/datascience/pca_explained.md
T
egutierrez 763e06c127 feat(browser): auto-commit con 178 cambios
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-20 18:22:23 +02:00

3.0 KiB

name, kind, lang, domain, version, purity, signature, description, tags, params, output, uses_functions, uses_types, returns, returns_optional, error_type, imports, tested, tests, test_file_path, file_path
name kind lang domain version purity signature description tags params output uses_functions uses_types returns returns_optional error_type imports tested tests test_file_path file_path
pca_explained function py datascience 1.0.0 pure def pca_explained(columns: dict, n_components: int = 2) -> dict PCA rapido sobre columnas numericas: estandariza (z-score), descarta filas con valores faltantes y ajusta sklearn PCA determinista para revelar estructura latente y cuanta varianza concentran pocos componentes. EDA barato.
eda
models
pca
dimensionality-reduction
variance
datascience
sklearn
name desc
columns Mapa {nombre_columna: [valores numericos]}. Listas alineadas por fila (misma longitud). Columnas no numericas o constantes se descartan; None/NaN marcan filas a descartar.
name desc
n_components Numero maximo de componentes principales (default 2). Se acota a min(n_features, n_filas_validas).
dict con n_components, n_rows_used, n_features, explained_variance_ratio (lista), cumulative (lista), top_loadings (lista de {component, feature, loading}) y projection (matriz cap a 1000 filas). Con <2 columnas numericas o <3 filas validas devuelve {n_components:0, explained_variance_ratio:[], note:'datos insuficientes'}.
false
numpy
scikit-learn
true
test_pc1_concentra_varianza_con_columnas_colineales
test_una_sola_columna_numerica_datos_insuficientes
test_pocas_filas_validas_datos_insuficientes
python/functions/datascience/pca_explained_test.py python/functions/datascience/pca_explained.py

Ejemplo

from datascience import pca_explained

# x e y casi colineales (y ~= 2x); z independiente.
n = 50
cols = {
    "x": [float(i) for i in range(n)],
    "y": [2.0 * i for i in range(n)],
    "z": [float((i * 7) % 13) for i in range(n)],
}

res = pca_explained(cols, n_components=2)
# res["explained_variance_ratio"][0] > 0.6  -> PC1 concentra la varianza
# res["cumulative"][-1] ~ 1.0 con 2 componentes sobre 3 features
# res["top_loadings"][0] -> {"component": 0, "feature": "x" o "y", "loading": ...}

Cuando usarla

Cuando exploras un dataset tabular numerico y quieres ver, de un vistazo y sin montar un pipeline, si pocas dimensiones explican casi toda la varianza (alta correlacion entre columnas) y que features pesan en cada componente. Util como primer paso de EDA antes de decidir reduccion de dimensionalidad o seleccion de variables. Pasa las columnas alineadas por fila; la funcion limpia filas con faltantes y estandariza por ti.

Notas

Funcion pura y determinista: estandariza con StandardScaler, ajusta sklearn.decomposition.PCA con random_state=0. No hace I/O. Las columnas no numericas o que no pueden coercerse a float se descartan; los None se tratan como NaN y eliminan la fila completa. projection se acota a las primeras 1000 filas para mantener la salida manejable. Degrada con gracia: con menos de 2 columnas numericas o menos de 3 filas validas devuelve note: "datos insuficientes" sin lanzar excepcion.