我需要量化模型中特征的重要性。但是,当我使用 XGBoost 执行此操作时,我会得到完全不同的结果,具体取决于我使用的是变量重要性图还是特征重要性。
例如,如果我使用model.feature_importances_
与xgb.plot_importance(model)
我得到不对齐的值。据推测,特征重要性图使用了特征重要性,但 numpy 数组feature_importances
并不直接对应于plot_importance
函数返回的索引。
这是情节的样子:
但这是model.feature_importances_
给出完全不同的值的输出:
array([ 0. , 0. , 0. , 0. , 0. ,
0. , 0.00568182, 0. , 0. , 0. ,
0.13636364, 0. , 0. , 0. , 0.01136364,
0. , 0. , 0. , 0. , 0.07386363,
0.03409091, 0. , 0.00568182, 0. , 0. ,
0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. ,
0. , 0.00568182, 0. , 0. , 0. ,
0. , 0. , 0.00568182, 0. , 0. ,
0. , 0. , 0. , 0. , 0. ,
0.01704546, 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. ,
0. , 0.05681818, 0.15909091, 0.0625 , 0. ,
0. , 0. , 0.10227273, 0. , 0.07386363,
0.01704546, 0.05113636, 0.00568182, 0. , 0. ,
0.02272727, 0. , 0.01136364, 0. , 0. ,
0.11363637, 0. , 0.01704546, 0.01136364, 0. ,
0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. ], dtype=float32)
如果我只是尝试获取功能 81 ( model.feature_importances_[81]
),我会得到:0.051136363
. 然而model.feature_importances_.argmax()
回报72
。
所以这些值彼此不对应,我不确定该怎么做。
有谁知道为什么这些值不一致?