Saltar al contenido

SKLearn MinMaxScaler: escala solo columnas específicas

Nuestros mejores investigadores han agotado sus provisiones de café, en su búsqueda diariamente por la resolución, hasta que Matías encontró el hallazgo en Beanstalk así que ahora la compartimos con nosotros.

Solución:

Manifestación:

In [90]: df = pd.DataFrame(np.random.randn(5, 3), index=list('abcde'), columns=list('xyz'))

In [91]: df
Out[91]:
          x         y         z
a -0.325882 -0.299432 -0.182373
b -0.833546 -0.472082  1.158938
c -0.328513 -0.664035  0.789414
d -0.031630 -1.040802 -1.553518
e  0.813328  0.076450  0.022122

In [92]: from sklearn.preprocessing import MinMaxScaler

In [93]: mms = MinMaxScaler()

In [94]: df[['x','z']] = mms.fit_transform(df[['x','z']])

In [95]: df
Out[95]:
          x         y         z
a  0.308259 -0.299432  0.505500
b  0.000000 -0.472082  1.000000
c  0.306662 -0.664035  0.863768
d  0.486932 -1.040802  0.000000
e  1.000000  0.076450  0.580891

el mismo resultado también se puede lograr usando sklearn.preprocessing.minmax_scale:

from sklearn.preprocessing import minmax_scale

df[['x','z']] = minmax_scale(df[['x','z']])

Dado que sklearn> = 0.20, puede hacerlo usando Column Transformer

standard_transformer = Pipeline(steps=[
        ('standard', StandardScaler())])

minmax_transformer = Pipeline(steps=[
        ('minmax', MinMaxScaler())])


preprocessor = ColumnTransformer(
        remainder='passthrough', #passthough features not listed
        transformers=[
            ('std', standard_transformer , ['z']),
            ('mm', minmax_transformer , ['x','y'])
        ])

Aquí puedes ver las reseñas y valoraciones de los usuarios

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *