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
Variable | Dummy | ||
---|---|---|---|
color | color_rojo | color_verde | color_azul |
rojo | 1 | 0 | 0 |
verde | 0 | 1 | 0 |
azul | 0 | 0 | 1 |
from sklearn.preprocessing import OneHotEncoder
encoder = OneHotEncoder()
encoder.fit_transform(X)
import pandas as pd
pd.get_dummies(X)
Label
Variable | Label |
---|---|
rojo | 0 |
verde | 1 |
azul | 2 |
import pandas as pd
df = pd.DataFrame({'color': ['rojo', 'verde', 'azul']})
df['color'].astype('category').cat.codes
Scaling and Centering Data
StandardScaler
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaler.fit_transform(X)
MinMaxScaler
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
scaler.fit_transform(X)
RobustScaler
from sklearn.preprocessing import RobustScaler
scaler = RobustScaler()
scaler.fit_transform(X)
Normalizer
- L1:
- L2:
- max:
from sklearn.preprocessing import Normalizer
# L1, L2, max
scaler = Normalizer(norm='l2')
scaler.fit_transform(X)
Feature engineering
PolynomialFeatures
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.
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)