`eli5.show_weights` отображаемое стандартное отклонение не соответствует значениям в` feature_importances_std_` - PullRequest
2 голосов
/ 02 марта 2020

Объект PermutationImportance имеет несколько приятных атрибутов, таких как feature_importances_ и feature_importances_std_.

. Для визуализации в стиле HTML я использовал функцию eli5.show_weights. Однако я заметил, что отображаемое стандартное отклонение не соответствует значениям в feature_importances_std_.

Более конкретно, я вижу, что отображаемые значения HTML равны feature_importances_std_ * 2. Почему это так?

Код:

from sklearn import datasets
import eli5
from eli5.sklearn import PermutationImportance
from sklearn.svm import SVC, SVR

# import some data to play with
iris = datasets.load_iris()
X = iris.data[:, :2]  # we only take the first two features.
y = iris.target

clf = SVC()
perms = PermutationImportance(clf, n_iter=1000, cv=10, random_state=0).fit(X, y)

print(perms.feature_importances_)
# this is the actual SD
print(perms.feature_importances_std_)
# These are the displayed values
print(perms.feature_importances_std_* 2)

[0.39527333 0.17178   ] # the actual mean
[0.13927548 0.11061278] # the actual SD
[0.27855095 0.22122556] # the displayed values by `show_weights()`

eli5.show_weights(perms)

Мы видим, что стандартное отклонение с двойным отсчетом двойное, т. Е. 2 * perms.feature_importances_std_.

Это ошибка может быть?

enter image description here

1 Ответ

1 голос
/ 09 марта 2020

Найдена *2:
Она находится в шаблоне, генерирующем значения функций html таблица на следующей странице

https://github.com/TeamHG-Memex/eli5/blob/63e99182dc682bbf225355c80a24807396a747b6/eli5/templates/feature_importances.html

        {% if not fw.std is none %}
            ± {{ "%0.4f"|format(2 * fw.std) }}
        {% endif %}

Это ясно ставится от руки

...