Python >> Tutoriel Python >  >> Python Tag >> Array

ValueError :Shape mismatch :si categories est un tableau, il doit être de forme (n_features,)

Vous devez utiliser ColumnTransformer pour spécifier l'index de colonne non categories paramètre.

Paramètre constructeur categories est de dire explicitement des valeurs de catégories distinctes. Par exemple. vous pouvez fournir [0, 1, 2] explicitement, mais auto le déterminera. De plus, vous pouvez utiliser slice() objet à la place.

from sklearn.preprocessing import OneHotEncoder
from sklearn.compose import ColumnTransformer

X = [[0, 'a'], [0, 'b'], [1, 'a'], [2, 'b']]

ct = ColumnTransformer(
    [('one_hot_encoder', OneHotEncoder(categories='auto'), [0])],   # The column numbers to be transformed (here is [0] but can be [0, 1, 3])
    remainder='passthrough'                                         # Leave the rest of the columns untouched
)

X = ct.fit_transform(X)