在转换后的d的管道后获取列名

2024-04-19 04:41:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我的代码中既有数字变量也有分类变量。因此,我在管道中使用了ColumnTransformer,并使用了Logistic回归算法

因此,我可以得到变换后的可变系数。 我还可以得到转换的变量截距。 我可以得到预测的Y值

但我还必须了解哪些特征对应于这些系数。我做不到,我尝试了所有的可能性。正如您所知道的,fit_transform给出一个没有列的数组作为结果(转换后的输入数据,用于训练)。如果没有专栏,它在解释和分析形势方面毫无价值

您能帮助我改进代码,以获得具有相同系数顺序以及转换数据的列列表吗

 logit = LogisticRegression(C= 1000, penalty = 'l1', tol = 0.001)

#numeric_pipe = make_pipeline(MinMaxScaler(feature_range = (-1,1)))
numeric_pipe = Pipeline(steps = [('minmax', MinMaxScaler(feature_range = (-1,1)))])
#categoric_pipe = make_pipeline(OneHotEncoder(sparse = True, handle_unknown='ignore'))
categoric_pipe = Pipeline(steps = [('onehot', OneHotEncoder(sparse = True, handle_unknown='ignore'))])
preprocessor = ColumnTransformer(transformers = [('num',numeric_pipe, num_cols), ('cat',categoric_pipe,cat_cols)])

pipe_final = Pipeline(steps = [('prep', preprocessor), ('log',logit)])      
pipe_final.fit(data_x, data_y.values.ravel())

print(pipe_final.named_steps['prep'].get_feature_names())

trans = pipe_final.named_steps['prep'].fit(data_x).transform(data_x)
trans_feat = pipe_final.named_steps['prep'].fit(data_x).transform(data_x)

print(data_x.info())

print(confusion_matrix(data_y, pipe_final.predict(data_x)))
print(classification_report(data_y, pipe_final.predict(data_x)))
print(roc_auc_score(data_y, pipe_final.predict(data_x)))
data_y['predicted'] = pipe_final.predict(data_x)   


data_final = data_x.join(data_y)
print(pipe_final.named_steps['log'].classes_)
print(pipe_final.named_steps['log'].coef_)
print(pipe_final.named_steps['log'].intercept_)

Tags: logdatapipelinetransformstepspredictfeaturenamed