我的代码中同时包含数字变量和分类变量。因此,我在具有LogisticRegression算法的管道内使用了ColumnTransformer。
结果,我可以获得变换后的可变系数。 我还可以获取转换后的变量截距。 我可以得到预测的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_)