私は学生向けにPipelineのチュートリアルを試みますが、ブロックします。私は専門家ではないが、私は改善しようとしている。あなたの贅沢に感謝します。Pipeline sklearn(Python)で複数のカスタムクラスを使用する
- ステップ1:実際には は、私が分類器のためのデータフレームを製造する際に、いくつかのステップを実行するためにパイプラインで試すデータフレームの説明を
- ステップ2:NaNの値を記入
- ステップ3:変革ここ数
へのカテゴリ値は私のコードです:
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
手順1と2、または手順1と3を実行すると、手順1と2と3を同時に実行しても動作します。から
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'
おそらく、そのうちのいくつかは、どれも: 'X'または 'y'。完全にスタックしてください。 – sergzach