permutation_importance#

sklearn.inspection.permutation_importance(estimator, X, y, *, оценка=None, n_repeats=5, n_jobs=None, random_state=None, sample_weight=None, max_samples=1.0)[источник]#

Важность перестановок для оценки признаков [BRE].

The estimator должен быть обученным оценщиком. X может быть набором данных, используемым для обучения оценщика, или отложенной выборкой. Важность перестановки признака рассчитывается следующим образом. Сначала базовый показатель, определенный оценка, оценивается на (возможно, другом) наборе данных, определённом X. Затем признаковый столбец из проверочного набора перемешивается, и метрика вычисляется снова. Важность перестановки определяется как разница между базовой метрикой и метрикой после перестановки признакового столбца.

Подробнее в Руководство пользователя.

Параметры:
estimatorobject

Оценщик, который уже был обученный и совместим с scorer.

Xndarray или DataFrame, форма (n_samples, n_features)

Данные, на которых будет вычисляться важность перестановки.

yarray-like или None, форма (n_samples, ) или (n_samples, n_classes)

Цели для контролируемого или None для неконтролируемого.

оценкаstr, callable, list, tuple или dict, по умолчанию=None

Оценщик для использования. Если scoring представляет собой единичную оценку, можно использовать:

Если scoring представляет несколько оценок, можно использовать:

  • список или кортеж уникальных строк;

  • вызываемый объект, возвращающий словарь, где ключи — это имена метрик, а значения — оценки метрик;

  • словарь с именами метрик в качестве ключей и вызываемыми объектами в качестве значений.

Передача нескольких оценок в scoring более эффективен, чем вызов permutation_importance для каждого из оценок, так как он повторно использует предсказания, чтобы избежать избыточных вычислений.

n_repeatsint, по умолчанию=5

Количество перестановок признака.

n_jobsint или None, по умолчанию=None

Количество задач для параллельного выполнения. Вычисление выполняется путем вычисления пермутационного скора для каждого столбца и распараллеливается по столбцам. None означает 1, если только не в joblib.parallel_backend контекст. -1 означает использование всех процессоров. См. Глоссарий для получения дополнительной информации.

random_stateint, экземпляр RandomState, по умолчанию=None

Псевдослучайный генератор чисел для управления перестановками каждого признака. Передайте целое число для получения воспроизводимых результатов между вызовами функции. Смотрите Глоссарий.

sample_weightarray-like формы (n_samples,), по умолчанию=None

Веса выборок, используемые при оценке.

Добавлено в версии 0.24.

max_samplesint или float, по умолчанию=1.0

Количество образцов для выборки из X для вычисления важности признаков в каждом повторении (без замены).

  • Если int, то нарисовать max_samples выборки.

  • Если float, то нарисовать max_samples * X.shape[0] выборки.

  • Если max_samples равно 1.0 или X.shape[0], все образцы будут использованы.

Хотя использование этой опции может давать менее точные оценки важности, она сохраняет метод работоспособным при оценке важности признаков на больших наборах данных. В сочетании с n_repeats, это позволяет контролировать компромисс между вычислительной скоростью и статистической точностью этого метода.

Добавлено в версии 1.0.

Возвращает:
результатBunch или словарь таких экземпляров

Объект, подобный словарю, со следующими атрибутами.

importances_meanndarray формы (n_features, )

Среднее значение важности признаков по n_repeats.

importances_stdndarray формы (n_features, )

Стандартное отклонение по n_repeats.

важностиndarray формы (n_features, n_repeats)

Сырые оценки важности перестановок.

Если в параметре scoring указано несколько метрик оценки result это словарь с именами скореров в качестве ключей (например, ‘roc_auc’) и Bunch объектов, как выше, в качестве значений.

Ссылки

Примеры

>>> from sklearn.linear_model import LogisticRegression
>>> from sklearn.inspection import permutation_importance
>>> X = [[1, 9, 9],[1, 9, 9],[1, 9, 9],
...      [0, 9, 9],[0, 9, 9],[0, 9, 9]]
>>> y = [1, 1, 1, 0, 0, 0]
>>> clf = LogisticRegression().fit(X, y)
>>> result = permutation_importance(clf, X, y, n_repeats=10,
...                                 random_state=0)
>>> result.importances_mean
array([0.4666, 0.       , 0.       ])
>>> result.importances_std
array([0.2211, 0.       , 0.       ])