【发布时间】:2021-07-12 06:41:19
【问题描述】:
我正在尝试使用 Python 中的 Dalex 包来可视化二进制 logit 模型的某些特征。
我从示例书中复制了一段代码here (整个第五个代码单元)但现在我不太确定应该如何解释结果......
在我使用statsmodels 创建的基本 logit 模型中,我为每个类别手动选择了一个参考级别变量,以避免多重共线性(这意味着模型的所有结果都根据参考水平)。
但是当我使用上面链接中的一段代码(也复制到这篇文章下面)时,它首先在sklearn 中创建了一些管道对象,one-hot 对分类变量进行编码,然后将管道对象拟合到数据并在 Dalex 解释器中用作要解释的模型。
问题是当我在 Dalex 中使用像 model_profile() 这样的函数时,它应该输出一个图表,显示变量对预测的其他条件影响,我不知道如何解释结果,因为似乎一个分类变量中的所有值都包含在图表中。
例如,模型显示了“性别”分类变量对男性和女性的平均预测的影响......
这也显示了一条名为“平均预测”的水平线,但“平均预测”是什么?是以男性为参考水平,还是以女性为标准计算?
我对结果的含义感到非常困惑......有人可以澄清一下吗?我正在尝试使用的函数model_profile() 在笔记本中也有说明。谢谢!
我复制的一段代码:
numerical_features = ['age', 'fare', 'sibsp', 'parch']
numerical_transformer = Pipeline(
steps=[
('imputer', SimpleImputer(strategy='median')),
('scaler', StandardScaler())
]
)
categorical_features = ['gender', 'class', 'embarked']
categorical_transformer = Pipeline(
steps=[
('imputer', SimpleImputer(strategy='constant', fill_value='missing')),
('onehot', OneHotEncoder(handle_unknown='ignore'))
]
)
preprocessor = ColumnTransformer(
transformers=[
('num', numerical_transformer, numerical_features),
('cat', categorical_transformer, categorical_features)
]
)
classifier = MLPClassifier(hidden_layer_sizes=(150,100,50), max_iter=500, random_state=0)
clf = Pipeline(steps=[('preprocessor', preprocessor),
('classifier', classifier)])
clf.fit(X, y)
exp = dx.Explainer(clf, X, y)
【问题讨论】:
标签: python scikit-learn pipeline dalex