typestar

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

  1. BaseEstimator te da get_params gratis, que el grid search necesita.
  2. fit aprende y devuelve self; transform nunca aprende.
  3. Los argumentos del constructor se guardan sin cambios, por convención.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 1 de 3 en Más allá de lo básico; paso 22 de 25 en Machine learning con scikit-learn.

← Anterior Siguiente →