Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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. |
|
|
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 |
|
true |
|
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.