J'essaie de faire un tutoriel sur Pipeline pour les étudiants mais je bloque. Je ne suis pas un expert mais j'essaie de m'améliorer. Donc merci pour votre indulgence. En fait, j'essaie dans un pipeline pour exécuter plusieurs étapes dans la préparation d'un dataframe pour un classificateur:Utilisation de plusieurs classes personnalisées avec Pipeline sklearn (Python)
- Étape 1: Description de la dataframe
- Étape 2: Remplissez NaN Valeurs
- Étape 3: Transformer Les valeurs catégorielles en nombres
Voici mon code:
class Descr_df(object):
def transform (self, X):
print ("Structure of the data: \n {}".format(X.head(5)))
print ("Features names: \n {}".format(X.columns))
print ("Target: \n {}".format(X.columns[0]))
print ("Shape of the data: \n {}".format(X.shape))
def fit(self, X, y=None):
return self
class Fillna(object):
def transform(self, X):
non_numerics_columns = X.columns.difference(X._get_numeric_data().columns)
for column in X.columns:
if column in non_numerics_columns:
X[column] = X[column].fillna(df[column].value_counts().idxmax())
else:
X[column] = X[column].fillna(X[column].mean())
return X
def fit(self, X,y=None):
return self
class Categorical_to_numerical(object):
def transform(self, X):
non_numerics_columns = X.columns.difference(X._get_numeric_data().columns)
le = LabelEncoder()
for column in non_numerics_columns:
X[column] = X[column].fillna(X[column].value_counts().idxmax())
le.fit(X[column])
X[column] = le.transform(X[column]).astype(int)
return X
def fit(self, X, y=None):
return self
Si j'exécute les étapes 1 et 2 ou 1 et 3 cela fonctionne mais si j'exécute les étapes 1, 2 et 3 en même temps. J'ai cette erreur:
pipeline = Pipeline([('df_intropesction', Descr_df()), ('fillna',Fillna()), ('Categorical_to_numerical', Categorical_to_numerical())])
pipeline.fit(X, y)
AttributeError: 'NoneType' object has no attribute 'columns'
probablement certains d'entre eux Aucun: '' X' ou y'. Pile complète s'il vous plaît. – sergzach