Saltar al contenido principal

Una publicación etiquetados con "machine learning"

Ver Todas las Etiquetas

· 3 min de lectura
Darvin Cotrina

Missing data

Es importante tener en cuenta que los modelos de machine learning no pueden trabajar con valores nulos, por lo que es necesario reemplazarlos por algún valor.

Eliminar

Si hay muchos valores nulos, se puede eliminar la columna o fila, tener en cuenta que se puede perder información importante.

df.dropna()

Imputar

from sklearn.impute import SimpleImputer
imputer = SimpleImputer(strategy='mean')
imputer.fit_transform(X)

crear columna indicadora

from sklearn.impute import MissingIndicator
indicator = MissingIndicator()
indicator.fit_transform(X)

Encoder data

Dummy

VariableDummy
colorcolor_rojocolor_verdecolor_azul
rojo100
verde010
azul001
from sklearn.preprocessing import OneHotEncoder
encoder = OneHotEncoder()
encoder.fit_transform(X)
import pandas as pd
pd.get_dummies(X)

Label

VariableLabel
rojo0
verde1
azul2
```python from sklearn.preprocessing import LabelEncoder encoder = LabelEncoder() encoder.fit_transform(X) ```
import pandas as pd
df = pd.DataFrame({'color': ['rojo', 'verde', 'azul']})
df['color'].astype('category').cat.codes

Scaling and Centering Data

StandardScaler

  • xμσ\frac{x - \mu}{\sigma}
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaler.fit_transform(X)

MinMaxScaler

  • xminmaxmin\frac{x - min}{max - min}
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
scaler.fit_transform(X)

RobustScaler

  • xQ1Q3Q1\frac{x - Q_1}{Q_3 - Q_1}
from sklearn.preprocessing import RobustScaler
scaler = RobustScaler()
scaler.fit_transform(X)

Normalizer

  • L1: xi=1nxi\frac{x}{\sum_{i=1}^n |x_i|}
  • L2: xi=1nxi2\frac{x}{\sqrt{\sum_{i=1}^n x_i^2}}
  • max: xmax(x)\frac{x}{max(x)}

from sklearn.preprocessing import Normalizer
# L1, L2, max
scaler = Normalizer(norm='l2')
scaler.fit_transform(X)

Feature engineering

PolynomialFeatures

  • x1,x2x12,x1x2,x22x_1, x_2 \rightarrow x_1^2, x_1x_2, x_2^2
from sklearn.preprocessing import PolynomialFeatures
poly = PolynomialFeatures(degree=2)
poly.fit_transform(X)

Binning

Este proceso se utiliza para discretizar variables continuas, es decir, convertir variables continuas en variables categóricas, agrupando los valores en intervalos.

  • x{0,1,2,...,n}x \rightarrow \{0, 1, 2,..., n\}
from sklearn.preprocessing import KBinsDiscretizer
discretizer = KBinsDiscretizer(n_bins=3, encode='ordinal', strategy='uniform')
discretizer.fit_transform(X)

Feature selection

VarianceThreshold


from sklearn.feature_selection import VarianceThreshold
selector = VarianceThreshold(threshold=0.1)
selector.fit_transform(X)

SelectKBest

from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
selector = SelectKBest(chi2, k=2)
selector.fit_transform(X, y)

SelectFromModel

from sklearn.feature_selection import SelectFromModel
from sklearn.linear_model import LogisticRegression
selector = SelectFromModel(estimator=LogisticRegression())
selector.fit_transform(X, y)

RFE


from sklearn.feature_selection import RFE
from sklearn.linear_model import LogisticRegression
selector = RFE(estimator=LogisticRegression(), n_features_to_select=2)
selector.fit_transform(X, y)