我需要量化模型中特征的重要性。但是,当我使用 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。
所以这些值彼此不对应,我不确定该怎么做。
有谁知道为什么这些值不一致?
