Ich versuche, ein Tutorial über Pipeline für Studenten zu tun, aber ich blockiere. Ich bin kein Experte, aber ich versuche mich zu verbessern. Also vielen Dank für Ihren Genuss. Tatsächlich versuchen I in einer Pipeline mehrere Schritte auszuführen in einen Datenrahmen für einen Klassifikator vorbereiten:Mehrere benutzerdefinierte Klassen mit Pipeline sklearn (Python) verwenden
- Schritt 1: Beschreibung der Datenrahmen
- Schritt 2: Füllen NaN3
- Schrittwerte: Transforming kategorische Werte in Zahlen
Hier ist mein 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
Wenn ich Schritt 1 und 2 oder Schritt 1 und 3 ausführe, funktioniert es, aber wenn ich Schritt 1, 2 und 3 gleichzeitig ausführe. Ich habe diesen Fehler:
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'
Wahrscheinlich Keine einige von ihnen: 'X' oder 'Y'. Voller Stapel bitte. – sergzach