我尝试为学生做一个关于Pipeline的教程,但我阻止了.我不是专家,但我正在努力改进.谢谢你的放纵.
实际上,我尝试在管道中执行几个步骤来为分类器准备数据帧:
>步骤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,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,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'