成功解决TypeError: only size-1 arrays can be converted to Python scalars

成功解决TypeError: only size-1 arrays can be converted to Python scalars

目录


解决问题

TypeError: only size-1 arrays can be converted to Python scalars

解决思路

类型错误:只有size-1的数组可以转换为 Python 标量

解决方法

1、分析问题

在执行shap.summary_plot(shap_i_values, X_data, max_display=7)函数的时候,遇到了TypeError: only size-1 arrays can be converted to Python scalars问题,

explainer = shap.TreeExplainer(model_C)  # 初始化解释器
shap_i_values = explainer.shap_interaction_values(X_data)   # 返回 估计一组样本的 SHAP交互值
print(model_name,type(shap_i_values),shap_i_values.shape,'\n',shap_i_values)
shap.summary_plot(shap_i_values, X_data, max_display=7)

2、测试bug

经过测试,发现model_C带来的shap_i_values存在问题,输出shap_i_values

model_C: RandomForestClassifier()
RFC <class 'list'> 2 
 [array([[[ 1.00892288e-01, -1.68401619e-02, -5.94680958e-03, ...,
         -1.32470081e-02,  3.55464100e-02,  5.80109769e-03],
        [-1.68401619e-02, -5.12440004e-02, -3.74259978e-02, ...,
         -2.28063353e-02,  4.59434195e-02, -3.04559773e-03],
        [-5.94680958e-03, -3.74259978e-02, -1.85461859e-02, ...,
         -6.63725042e-03,  1.92107791e-02, -2.68634910e-03],
        ...,
        [-1.32470081e-02, -2.28063353e-02, -6.63725042e-03, ...,
         -1.38762590e-02,  4.56568837e-02, -7.74597253e-03],
        [ 3.55464100e-02,  4.59434195e-02,  1.92107791e-02, ...,
          4.56568837e-02, -3.10902626e-01,  1.16618553e-02],
        [ 5.80109769e-03, -3.04559773e-03, -2.68634910e-03, ...,
         -7.74597253e-03,  1.16618553e-02,  2.75534972e-02]],

       [[ 8.19124603e-02,  1.07770267e-02, -2.73940856e-03, ...,
         -5.42286117e-03, -1.43148441e-02, -9.38927405e-03],
        [ 1.07770267e-02,  1.34434798e-02,  8.07094323e-03, ...,
          4.91124351e-03,  5.50744405e-03,  6.47903095e-03],
        [-2.73940856e-03,  8.07094323e-03, -1.43633784e-02, ...,
          3.11791569e-03,  3.20759035e-03,  3.83808653e-03],
        ...,
        [-5.42286117e-03,  4.91124351e-03,  3.11791569e-03, ...,
          7.87596527e-02,  1.74101730e-02, -1.64075188e-02],
        [-1.43148441e-02,  5.50744405e-03,  3.20759035e-03, ...,
          1.74101730e-02,  1.33626522e-01,  2.42559627e-02],
        [-9.38927405e-03,  6.47903095e-03,  3.83808653e-03, ...,
         -1.64075188e-02,  2.42559627e-02, -5.97394271e-02]],

       [[-1.38735034e-01, -2.42364407e-02,  1.14693608e-02, ...,
         -6.99696322e-03,  1.72904490e-02, -7.51722121e-03],
        [-2.42364407e-02,  2.39629923e-02, -6.97181439e-03, ...,
         -2.22822148e-02, -1.36613812e-02, -3.50808091e-02],
        [ 1.14693608e-02, -6.97181439e-03, -3.59474202e-03, ...,
         -6.09146988e-03,  5.59217986e-04, -3.53721479e-03],
        ...,
        [-6.99696322e-03, -2.22822148e-02, -6.09146988e-03, ...,
         -1.87555406e-02, -5.20973244e-03,  8.26104068e-03],
        [ 1.72904490e-02, -1.36613812e-02,  5.59217986e-04, ...,
         -5.20973244e-03,  1.75241348e-01, -3.04973301e-03],
        [-7.51722121e-03, -3.50808091e-02, -3.53721479e-03, ...,
          8.26104068e-03, -3.04973301e-03, -1.46418256e-02]],

       ...,

       [[-3.56423927e-02,  5.54317507e-02,  3.91146242e-03, ...,
         -1.75050321e-02,  1.85085775e-02, -7.70937834e-03],
        [ 5.54317507e-02, -1.39482944e-02,  6.70113175e-03, ...,
          6.15454045e-02, -9.39428826e-03,  1.47123014e-02],
        [ 3.91146242e-03,  6.70113175e-03, -1.26818812e-02, ...,
          5.26829692e-03, -2.15772294e-03, -2.47514340e-04],
        ...,
        [-1.75050321e-02,  6.15454045e-02,  5.26829692e-03, ...,
          5.55692076e-04, -2.84333320e-02, -3.75207918e-03],
        [ 1.85085775e-02, -9.39428826e-03, -2.15772294e-03, ...,
         -2.84333320e-02,  1.87019548e-01, -8.06957153e-03],
        [-7.70937834e-03,  1.47123014e-02, -2.47514340e-04, ...,
         -3.75207918e-03, -8.06957153e-03,  2.07337395e-02]],

       [[ 8.84126066e-02,  1.82736920e-02, -5.65054043e-03, ...,
          2.64967036e-02,  4.50916773e-02, -2.10122413e-02],
        [ 1.82736920e-02,  7.86941550e-02,  2.28788104e-03, ...,
         -2.58770389e-03,  4.72064392e-03, -1.03766811e-02],
        [-5.65054043e-03,  2.28788104e-03, -1.35146704e-02, ...,
         -4.56388283e-03, -8.82118001e-04,  7.42603680e-03],
        ...,
        [ 2.64967036e-02, -2.58770389e-03, -4.56388283e-03, ...,
         -2.79773016e-02,  3.87947909e-03, -9.58019047e-03],
        [ 4.50916773e-02,  4.72064392e-03, -8.82118001e-04, ...,
          3.87947909e-03, -2.77131303e-01, -1.79673439e-03],
        [-2.10122413e-02, -1.03766811e-02,  7.42603680e-03, ...,
         -9.58019047e-03, -1.79673439e-03, -2.83423819e-02]],

       [[-1.28237432e-01, -4.30365174e-02, -2.66452665e-02, ...,
          2.37250928e-02,  1.16385374e-02,  2.30255891e-03],
        [-4.30365174e-02, -7.58918083e-03,  1.13716355e-02, ...,
         -1.11100667e-02, -1.67378386e-02, -1.29576697e-02],
        [-2.66452665e-02,  1.13716355e-02,  5.76768628e-03, ...,
         -1.05677681e-02, -6.82289674e-03, -8.07668275e-03],
        ...,
        [ 2.37250928e-02, -1.11100667e-02, -1.05677681e-02, ...,
         -1.14539347e-01, -7.11114704e-03, -2.89130556e-02],
        [ 1.16385374e-02, -1.67378386e-02, -6.82289674e-03, ...,
         -7.11114704e-03,  1.88275364e-01, -1.17071760e-02],
        [ 2.30255891e-03, -1.29576697e-02, -8.07668275e-03, ...,
         -2.89130556e-02, -1.17071760e-02, -1.77655951e-02]]]), array([[[-1.00892288e-01,  1.68401619e-02,  5.94680958e-03, ...,
          1.32470081e-02, -3.55464100e-02, -5.80109769e-03],
        [ 1.68401619e-02,  5.12440004e-02,  3.74259978e-02, ...,
          2.28063353e-02, -4.59434195e-02,  3.04559773e-03],
        [ 5.94680958e-03,  3.74259978e-02,  1.85461859e-02, ...,
          6.63725042e-03, -1.92107791e-02,  2.68634910e-03],
        ...,
        [ 1.32470081e-02,  2.28063353e-02,  6.63725042e-03, ...,
          1.38762590e-02, -4.56568837e-02,  7.74597253e-03],
        [-3.55464100e-02, -4.59434195e-02, -1.92107791e-02, ...,
         -4.56568837e-02,  3.10902626e-01, -1.16618553e-02],
        [-5.80109769e-03,  3.04559773e-03,  2.68634910e-03, ...,
          7.74597253e-03, -1.16618553e-02, -2.75534972e-02]],

       [[-8.19124603e-02, -1.07770267e-02,  2.73940856e-03, ...,
          5.42286117e-03,  1.43148441e-02,  9.38927405e-03],
        [-1.07770267e-02, -1.34434798e-02, -8.07094323e-03, ...,
         -4.91124351e-03, -5.50744405e-03, -6.47903095e-03],
        [ 2.73940856e-03, -8.07094323e-03,  1.43633784e-02, ...,
         -3.11791569e-03, -3.20759035e-03, -3.83808653e-03],
        ...,
        [ 5.42286117e-03, -4.91124351e-03, -3.11791569e-03, ...,
         -7.87596527e-02, -1.74101730e-02,  1.64075188e-02],
        [ 1.43148441e-02, -5.50744405e-03, -3.20759035e-03, ...,
         -1.74101730e-02, -1.33626522e-01, -2.42559627e-02],
        [ 9.38927405e-03, -6.47903095e-03, -3.83808653e-03, ...,
          1.64075188e-02, -2.42559627e-02,  5.97394271e-02]],

       [[ 1.38735034e-01,  2.42364407e-02, -1.14693608e-02, ...,
          6.99696322e-03, -1.72904490e-02,  7.51722121e-03],
        [ 2.42364407e-02, -2.39629923e-02,  6.97181439e-03, ...,
          2.22822148e-02,  1.36613812e-02,  3.50808091e-02],
        [-1.14693608e-02,  6.97181439e-03,  3.59474202e-03, ...,
          6.09146988e-03, -5.59217986e-04,  3.53721479e-03],
        ...,
        [ 6.99696322e-03,  2.22822148e-02,  6.09146988e-03, ...,
          1.87555406e-02,  5.20973244e-03, -8.26104068e-03],
        [-1.72904490e-02,  1.36613812e-02, -5.59217986e-04, ...,
          5.20973244e-03, -1.75241348e-01,  3.04973301e-03],
        [ 7.51722121e-03,  3.50808091e-02,  3.53721479e-03, ...,
         -8.26104068e-03,  3.04973301e-03,  1.46418256e-02]],

       ...,

       [[ 3.56423927e-02, -5.54317507e-02, -3.91146242e-03, ...,
          1.75050321e-02, -1.85085775e-02,  7.70937834e-03],
        [-5.54317507e-02,  1.39482944e-02, -6.70113175e-03, ...,
         -6.15454045e-02,  9.39428826e-03, -1.47123014e-02],
        [-3.91146242e-03, -6.70113175e-03,  1.26818812e-02, ...,
         -5.26829692e-03,  2.15772294e-03,  2.47514340e-04],
        ...,
        [ 1.75050321e-02, -6.15454045e-02, -5.26829692e-03, ...,
         -5.55692076e-04,  2.84333320e-02,  3.75207918e-03],
        [-1.85085775e-02,  9.39428826e-03,  2.15772294e-03, ...,
          2.84333320e-02, -1.87019548e-01,  8.06957153e-03],
        [ 7.70937834e-03, -1.47123014e-02,  2.47514340e-04, ...,
          3.75207918e-03,  8.06957153e-03, -2.07337395e-02]],

       [[-8.84126066e-02, -1.82736920e-02,  5.65054043e-03, ...,
         -2.64967036e-02, -4.50916773e-02,  2.10122413e-02],
        [-1.82736920e-02, -7.86941550e-02, -2.28788104e-03, ...,
          2.58770389e-03, -4.72064392e-03,  1.03766811e-02],
        [ 5.65054043e-03, -2.28788104e-03,  1.35146704e-02, ...,
          4.56388283e-03,  8.82118001e-04, -7.42603680e-03],
        ...,
        [-2.64967036e-02,  2.58770389e-03,  4.56388283e-03, ...,
          2.79773016e-02, -3.87947909e-03,  9.58019047e-03],
        [-4.50916773e-02, -4.72064392e-03,  8.82118001e-04, ...,
         -3.87947909e-03,  2.77131303e-01,  1.79673439e-03],
        [ 2.10122413e-02,  1.03766811e-02, -7.42603680e-03, ...,
          9.58019047e-03,  1.79673439e-03,  2.83423819e-02]],

       [[ 1.28237432e-01,  4.30365174e-02,  2.66452665e-02, ...,
         -2.37250928e-02, -1.16385374e-02, -2.30255891e-03],
        [ 4.30365174e-02,  7.58918083e-03, -1.13716355e-02, ...,
          1.11100667e-02,  1.67378386e-02,  1.29576697e-02],
        [ 2.66452665e-02, -1.13716355e-02, -5.76768628e-03, ...,
          1.05677681e-02,  6.82289674e-03,  8.07668275e-03],
        ...,
        [-2.37250928e-02,  1.11100667e-02,  1.05677681e-02, ...,
          1.14539347e-01,  7.11114704e-03,  2.89130556e-02],
        [-1.16385374e-02,  1.67378386e-02,  6.82289674e-03, ...,
          7.11114704e-03, -1.88275364e-01,  1.17071760e-02],
        [-2.30255891e-03,  1.29576697e-02,  8.07668275e-03, ...,
          2.89130556e-02,  1.17071760e-02,  1.77655951e-02]]])]

3、寻找函数参数正确定义

因为shap_values: numpy.array
对于单个输出解释,这是一个SHAP值的矩阵(# samples x # features)。
对于多输出解释,这是一个SHAP值矩阵的列表。

成功解决TypeError: only size-1 arrays can be converted to Python scalars

 可知,当前list数据并非size-1的数组,所以,无法转为scalars类型的数据

4、最终解决办法

RandomForestClassifier()改为<lightgbm.basic.Booster object at 0x00000210CCAAF898>,经过测试,输出以下,运行成功!

model_C: <lightgbm.basic.Booster object at 0x00000269F30A5860>
LGBMC <class 'numpy.ndarray'> (295, 7, 7) 
 [[[-2.03212277e-01  8.38473368e-02  9.27494035e-03 ...  3.76043663e-02
   -1.12195878e-01 -7.51591770e-03]
  [ 8.38473368e-02  8.67422668e-04  2.27826062e-02 ...  1.51550190e-02
   -1.28015053e-01  1.73530157e-04]
  [ 9.27494035e-03  2.27826062e-02  9.83802075e-02 ...  0.00000000e+00
   -1.22171674e-01  0.00000000e+00]
  ...
  [ 3.76043663e-02  1.51550190e-02  0.00000000e+00 ... -7.48850883e-02
   -6.75088971e-04 -7.39881971e-04]
  [-1.12195878e-01 -1.28015053e-01 -1.22171674e-01 ... -6.75088971e-04
    8.18119865e-01 -7.07531214e-03]
  [-7.51591770e-03  1.73530157e-04  0.00000000e+00 ... -7.39881971e-04
   -7.07531214e-03 -5.30181847e-03]]

 [[-2.03905009e-01  1.76970856e-02  3.60372896e-03 ...  6.59590565e-02
    3.25192369e-02  2.85055286e-03]
  [ 1.76970856e-02  7.42271902e-03  9.11656209e-03 ... -2.63576934e-02
   -1.41990904e-02 -4.81719902e-03]
  [ 3.60372896e-03  9.11656209e-03  4.88673814e-02 ...  0.00000000e+00
    6.82874328e-03  0.00000000e+00]
  ...
  [ 6.59590565e-02 -2.63576934e-02  0.00000000e+00 ... -8.03527385e-02
   -2.39716159e-02 -1.06731256e-03]
  [ 3.25192369e-02 -1.41990904e-02  6.82874328e-03 ... -2.39716159e-02
   -3.32003213e-01 -8.00174419e-03]
  [ 2.85055286e-03 -4.81719902e-03  0.00000000e+00 ... -1.06731256e-03
   -8.00174419e-03  2.47351615e-02]]

 [[ 3.65524524e-01  1.23282110e-01 -6.94995088e-03 ...  1.08536810e-01
   -1.80451184e-02 -5.55932748e-03]
  [ 1.23282110e-01 -5.94745798e-02 -6.94995088e-03 ...  3.15618035e-02
    3.78288199e-02 -1.76019586e-03]
  [-6.94995088e-03 -6.94995088e-03  2.85466167e-02 ...  0.00000000e+00
    2.48014752e-03  0.00000000e+00]
  ...
  [ 1.08536810e-01  3.15618035e-02  0.00000000e+00 ... -1.29775694e-01
    4.39073931e-02  1.56505599e-03]
  [-1.80451184e-02  3.78288199e-02  2.48014752e-03 ...  4.39073931e-02
   -3.65634236e-01 -7.31780875e-04]
  [-5.55932748e-03 -1.76019586e-03  0.00000000e+00 ...  1.56505599e-03
   -7.31780875e-04  2.39037391e-02]]

 ...

 [[ 4.63957818e-02 -1.58713899e-02  1.81106212e-03 ...  2.55113122e-02
   -5.77921525e-02  3.08940168e-04]
  [-1.58713899e-02 -1.35632524e-02 -1.18515307e-02 ... -3.50505266e-02
    1.52571779e-02 -3.73236510e-04]
  [ 1.81106212e-03 -1.18515307e-02  3.32397672e-02 ...  0.00000000e+00
    3.52229420e-03  0.00000000e+00]
  ...
  [ 2.55113122e-02 -3.50505266e-02  0.00000000e+00 ... -9.64323297e-02
    3.35029039e-02  1.61635537e-03]
  [-5.77921525e-02  1.52571779e-02  3.52229420e-03 ...  3.35029039e-02
   -3.98187413e-01 -3.02662989e-04]
  [ 3.08940168e-04 -3.73236510e-04  0.00000000e+00 ...  1.61635537e-03
   -3.02662989e-04 -9.08739780e-03]]

 [[-1.71996993e-01 -1.47872120e-02  3.85899956e-03 ... -1.50209005e-01
   -2.18026430e-01  1.39766423e-02]
  [-1.47872120e-02 -3.28965975e-01 -2.96173881e-02 ...  1.32839906e-01
    7.62613499e-02  1.98508032e-02]
  [ 3.85899956e-03 -2.96173881e-02  5.05960370e-02 ...  0.00000000e+00
   -2.96173881e-02  0.00000000e+00]
  ...
  [-1.50209005e-01  1.32839906e-01  0.00000000e+00 ... -1.54809945e-01
   -1.33767766e-01  1.49019359e-02]
  [-2.18026430e-01  7.62613499e-02 -2.96173881e-02 ... -1.33767766e-01
    6.61193249e-01 -3.50387426e-02]
  [ 1.39766423e-02  1.98508032e-02  0.00000000e+00 ...  1.49019359e-02
   -3.50387426e-02  3.15684010e-02]]

 [[ 3.71525973e-01  1.15451908e-01 -6.94995088e-03 ...  9.02379792e-02
   -2.25047248e-02 -5.55932748e-03]
  [ 1.15451908e-01 -5.05320365e-02 -6.94995088e-03 ...  1.02980057e-02
    3.28772676e-02 -1.76019586e-03]
  [-6.94995088e-03 -6.94995088e-03  2.85466167e-02 ...  0.00000000e+00
    2.48014752e-03  0.00000000e+00]
  ...
  [ 9.02379792e-02  1.02980057e-02  0.00000000e+00 ... -1.94072290e-01
    1.63458574e-02  1.56505599e-03]
  [-2.25047248e-02  3.28772676e-02  2.48014752e-03 ...  1.63458574e-02
   -3.58855532e-01 -7.31780875e-04]
  [-5.55932748e-03 -1.76019586e-03  0.00000000e+00 ...  1.56505599e-03
   -7.31780875e-04  2.39037391e-02]]]

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2023年3月8日 下午9:14
下一篇 2023年3月8日

相关推荐