查看单个预测的模型系数

我有一个包含在scikit-learn管道中的逻辑回归模型,使用如下代码:

pipeline = make_pipeline(    StandardScaler(),    LogisticRegressionCV(        solver='lbfgs',        cv=10,        scoring='roc_auc',        class_weight='balanced'    ))pipeline.fit(X_train, y_train)y_pred = pipeline.predict(X_test)

我可以使用以下代码查看模型对整体预测的系数…

# 查看模型的系数以了解哪些特征最为重要plt.rcParams['figure.dpi'] = 50model = pipeline.named_steps['logisticregressioncv']coefficients = pd.Series(model.coef_[0], X_train.columns)plt.figure(figsize=(10,12))coefficients.sort_values().plot.barh(color='grey');

这会返回一个特征及其系数的条形图。

尝试做的是能够看到单个观测值的不同输入值如何影响其预测。想法是能够对样本群体运行预测,并检查“低”预测的群体…例如,如果我对10个观测值进行预测,我想看到不同的输入值如何单独影响这10个预测中的每一个。


回答:

回想起来,我可以通过Shap值实现这一点,使用类似于下面的代码(但使用LinearExplainer而不是TreeExplainer):

# 在管道之外实例化模型和编码器以便# 与shap一起使用model = RandomForestClassifier( random_state=25)# 在训练集上拟合,在验证集上评分model.fit(X_train_encoded, y_train2)y_pred_shap = model.predict(X_val_encoded)# 获取要解释的单个观测值row = X_test_encoded.iloc[[-3]]# 为什么模型会这样预测?# 查看Shapley值力图import shapexplainer = shap.TreeExplainer(model)shap_values = explainer.shap_values(row)shap.initjs()shap.force_plot(    base_value=explainer.expected_value[1],    shap_values=shap_values[1],    features=row)

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注