Python For循环运行缓慢,用于提取所有数据集的形状值

Python For循环运行缓慢,用于提取所有数据集的形状值,python,pandas,numpy,shap,lime,Python,Pandas,Numpy,Shap,Lime,我正在处理一个数据集,在这个数据集中,我需要提取每个预测中最重要的变量。我使用SHAP库来实现这一点 一般来说,对于一个预测,运行时间不到一秒,但问题是,当我为110000个客户端运行它时,运行时间几乎是半天!(我没有检查到最后)在每次运行中,我都希望引入影响目标变量每个方向的最多五个特性。 在这个过程结束时,我应该有一个大约110万条记录的数据集,其中包含预测指数和预测中最重要的变量 以下是数据对象: var1 var2 var3 ... var_k XX XX XX XX

我正在处理一个数据集,在这个数据集中,我需要提取每个预测中最重要的变量。我使用SHAP库来实现这一点

一般来说,对于一个预测,运行时间不到一秒,但问题是,当我为110000个客户端运行它时,运行时间几乎是半天!(我没有检查到最后)在每次运行中,我都希望引入影响目标变量每个方向的最多五个特性。 在这个过程结束时,我应该有一个大约110万条记录的数据集,其中包含预测指数和预测中最重要的变量

以下是数据对象:

var1 var2 var3 ... var_k
XX    XX  XX       XX
代码如下:

import shap
explainer = shap.TreeExplainer(xgb_model)
shap_values = explainer.shap_values(data)
   
    
appended_data=[]
        
for i in range(0,data.index.values.max()+1)): 
        vars()['df_'+str(i)] = pd.DataFrame(shap_values[i]).T 
        vars()['df_'+str(i)].columns = data.columns
        vars()['df_'+str(i)] = pd.concat([vars() \
       ['df_'+str(i)].T.sort_values(by=0,ascending=False).head(4),vars() \
       ['df_'+str(i)].T.sort_values(by=0,ascending=True).head(4)]) 
        vars()['df_'+str(i)].columns = ['var_power']
        vars()['df_'+str(i)]=vars()['df_'+str(i)].reset_index()
        vars()['df_'+str(i)].columns = ['var_name','var_power']
        vars()['df_'+str(i)]['num']=i
        vars()['df_'+str(i)]=vars()['df_'+str(i)].set_index('num')
        vars()['df_'+str(i)].index.name = None
        appended_data.append(vars()['df_'+str(i)])
        df_final=pd.concat(appended_data)
以下是1个实例的输出示例:

   var_name var_power
 1    var1     1.5
 1    var2     1.0
 1    var22    0.5
 1    var53    0.4
 1    var21    0.3
 1    var47   -2.0
 1    var90   -1.5
 1    var11   -1.0
 1    var62   -0.5
 1    var82   -0.3
但我需要为11万名客户提供,但这需要很多时间如何优化运行时?