如何在数据框中获得 Lime 预测与实际预测?
How to get Lime predictions vs Actual predictions in a dataframe?
我正在使用随机森林解决二元分类问题,并使用 LIME 解释器来解释预测。
我使用下面的代码生成 LIME 解释
import lime
import lime.lime_tabular
explainer = lime.lime_tabular.LimeTabularExplainer(ord_train_t.values, discretize_continuous=True,
feature_names=feat_names,
mode="classification",
feature_selection = "lasso_path",
class_names=rf_boruta.classes_,
categorical_names=output,
kernel_width=10, verbose=True)
i = 969
exp = explainer.explain_instance(ord_test_t.iloc[1,:],rf_boruta.predict_proba,distance_metric = 'euclidean',num_features=5)
我得到如下输出
Intercept 0.29625037124439896
Prediction_local [0.46168824]
Right:0.6911888737552843
但是,上面的内容作为消息打印在屏幕上
我们如何在数据框中获取此信息?
Lime 没有直接的 export-to-dataframe 功能,所以要走的路似乎是将预测附加到列表中,然后 运行 将其形成数据框。
是的,这可能会花费很多时间,这取决于您有多少预测,因为模型必须单独预测每个实例。
这是我找到的示例,explain_instance
需要根据您的模型参数进行调整,但遵循相同的逻辑。
l=[]
for n in range(0,X_test.shape[0]+1):
exp = explainer.explain_instance(X_test.values[n], clf.predict_proba, num_features=10)
a=exp.as_list()
l.append(a)
df = pd.DataFrame(l)
如果您需要的比 as_list() 提供的更多,解释器上有更多数据。我 运行 一个例子,看看解释实例还会检索什么。
您可以不使用 as_list(),而是将您需要的其他值附加到此 as_list。
a = exp.to_list()
a.append(exp.intercept[1])
l.append(a)
使用这种方法你可以获得拦截和 prediction_local,对于正确的值我真的不知道它会是哪个,但我确信对象解释器在某个地方有它的另一个名字.
在您的代码上使用断点并探索解释器,也许您还想保存其他信息。
我正在使用随机森林解决二元分类问题,并使用 LIME 解释器来解释预测。
我使用下面的代码生成 LIME 解释
import lime
import lime.lime_tabular
explainer = lime.lime_tabular.LimeTabularExplainer(ord_train_t.values, discretize_continuous=True,
feature_names=feat_names,
mode="classification",
feature_selection = "lasso_path",
class_names=rf_boruta.classes_,
categorical_names=output,
kernel_width=10, verbose=True)
i = 969
exp = explainer.explain_instance(ord_test_t.iloc[1,:],rf_boruta.predict_proba,distance_metric = 'euclidean',num_features=5)
我得到如下输出
Intercept 0.29625037124439896
Prediction_local [0.46168824]
Right:0.6911888737552843
但是,上面的内容作为消息打印在屏幕上
我们如何在数据框中获取此信息?
Lime 没有直接的 export-to-dataframe 功能,所以要走的路似乎是将预测附加到列表中,然后 运行 将其形成数据框。
是的,这可能会花费很多时间,这取决于您有多少预测,因为模型必须单独预测每个实例。
这是我找到的示例,explain_instance
需要根据您的模型参数进行调整,但遵循相同的逻辑。
l=[]
for n in range(0,X_test.shape[0]+1):
exp = explainer.explain_instance(X_test.values[n], clf.predict_proba, num_features=10)
a=exp.as_list()
l.append(a)
df = pd.DataFrame(l)
如果您需要的比 as_list() 提供的更多,解释器上有更多数据。我 运行 一个例子,看看解释实例还会检索什么。
您可以不使用 as_list(),而是将您需要的其他值附加到此 as_list。
a = exp.to_list()
a.append(exp.intercept[1])
l.append(a)
使用这种方法你可以获得拦截和 prediction_local,对于正确的值我真的不知道它会是哪个,但我确信对象解释器在某个地方有它的另一个名字.
在您的代码上使用断点并探索解释器,也许您还想保存其他信息。