Un transformador propio en Python
Implementa fit y transform y tu código encaja en cualquier pipeline.
import numpy as np
from sklearn.base import BaseEstimator, TransformerMixin
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
class RecortaAtipicos(BaseEstimator, TransformerMixin):
def __init__(self, quantile=0.95):
self.quantile = quantile
def fit(self, X, y=None):
self.limits_ = np.quantile(np.asarray(X), self.quantile, axis=0)
return self
def transform(self, X):
return np.minimum(np.asarray(X), self.limits_)
datos = [[1.0, 2.0], [2.0, 4.0], [3.0, 90.0]]
pipeline = make_pipeline(RecortaAtipicos(quantile=0.9), StandardScaler())
print(pipeline.fit_transform(datos).round(2))
print(pipeline.named_steps["recortaatipicos"].limits_)
Cómo funciona
BaseEstimatorte daget_paramsgratis, que el grid search necesita.fitaprende y devuelve self;transformnunca aprende.- Los argumentos del constructor se guardan sin cambios, por convención.
Palabras clave y builtins usados aquí
asclassdefprintreturnself
El intento, en números
- Líneas
- 22
- Caracteres a escribir
- 684
- Tokens
- 171
- Ritmo de tres estrellas
- 115 tpm
Al ritmo de tres estrellas de 115 tokens por minuto, este intento toma unos 89 segundos.
Paso 1 de 3 en Más allá de lo básico; paso 22 de 25 en Machine learning con scikit-learn.