Spec-Zone.ru › scikit-learn

KBinsDiscretizer

classsklearn.preprocessing.KBinsDiscretizer(n_bins=5, *, encode='onehot', strategy='quantile', quantile_method='averaged_inverted_cdf', dtype=None, subsample=200000, random_state=None)[исходный код]

Разбивает непрерывные данные на интервалы.

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

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

Параметры:
n_binsint или array-like формы (n_features,), по умолчанию=5

Количество создаваемых интервалов. Вызывает ValueError, если n_bins < 2.

encode{‘onehot’, ‘onehot-dense’, ‘ordinal’}, по умолчанию=’onehot’

Метод кодирования преобразованного результата.

  • ‘onehot’: Кодирует преобразованный результат с помощью унитарного кодирования и возвращает разреженную матрицу. Игнорируемые признаки всегда располагаются справа.
  • ‘onehot-dense’: Кодирует преобразованный результат с помощью унитарного кодирования и возвращает плотный массив. Игнорируемые признаки всегда располагаются справа.
  • ‘ordinal’: Возвращает идентификатор интервала, закодированный целым числом.
strategy{‘uniform’, ‘quantile’, ‘kmeans’}, по умолчанию=’quantile’

Стратегия определения ширины интервалов.

  • ‘uniform’: Все интервалы каждого признака имеют одинаковую ширину.
  • ‘quantile’: Все интервалы каждого признака содержат одинаковое количество точек.
  • ‘kmeans’: Значения в каждом интервале имеют одинаковый ближайший центр кластера одномерного k-средних.

Пример различных стратегий см. здесь: Демонстрация различных стратегий KBinsDiscretizer.

quantile_method{“inverted_cdf”, “averaged_inverted_cdf”,

“closest_observation”, “interpolated_inverted_cdf”, “hazen”, “weibull”, “linear”, “median_unbiased”, “normal_unbiased”}, по умолчанию=”averaged_inverted_cdf” Метод, передаваемый в вычисление np.percentile при использовании strategy=”quantile”. Только averaged_inverted_cdf и inverted_cdf поддерживают использование sample_weight != None, если подвыборка не используется.

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

Изменено в версии 1.9: Значение по умолчанию изменено с "linear" на "averaged_inverted_cdf".

dtype{np.float32, np.float64}, по умолчанию=None

Требуемый тип данных для выходных данных. Если значение равно None, тип выходных данных соответствует типу входных данных. Поддерживаются только np.float32 и np.float64.

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

subsampleint или None, по умолчанию=200_000

Максимальное количество образцов, используемых для обучения модели, для повышения вычислительной эффективности. subsample=None означает, что при вычислении квантилей, определяющих пороги разбиения на интервалы, используются все обучающие образцы. Поскольку вычисление квантилей требует сортировки каждого столбца X, а эта сортировка имеет временную сложность n log(n), для наборов данных с очень большим числом образцов рекомендуется использовать подвыборку.

Изменено в версии 1.3: Значение параметра subsample по умолчанию изменено с None на 200_000, когда strategy="quantile".

Изменено в версии 1.5: Значение параметра subsample по умолчанию изменено с None на 200_000, когда strategy="uniform" или strategy="kmeans".

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

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

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

Атрибуты:
bin_edges_ndarray из ndarray формы (n_features,)

Границы каждого интервала. Содержит массивы разной формы (n_bins_, ). Для игнорируемых признаков будут использоваться пустые массивы.

n_bins_ndarray формы (n_features,), dtype=np.int64

Количество интервалов для каждого признака. Интервалы с шириной, слишком малой (т. е. <= 1e-8), удаляются с предупреждением.

n_features_in_int

Количество признаков, обнаруженных при вызове fit.

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

feature_names_in_ndarray формы (n_features_in_,)

Имена признаков, обнаруженных при вызове fit. Определяется только в том случае, если X имеет имена признаков, являющиеся строками.

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

См. также

Binarizer

Класс для разбиения значений на 0 или 1 в зависимости от параметра threshold.

Примечания

Визуализацию дискретизации на разных наборах данных см. в разделе Дискретизация признаков. О влиянии дискретизации на линейные модели см. в разделе Использование KBinsDiscretizer для дискретизации непрерывных признаков.

В границах интервалов для признака i первое и последнее значения используются только для inverse_transform. При преобразовании границы интервалов расширяются до:

np.concatenate([-np.inf, bin_edges_[i][1:-1], np.inf])

Можно объединить KBinsDiscretizer с ColumnTransformer, если нужно предварительно обработать только часть признаков.

KBinsDiscretizer может создавать постоянные признаки (например, когда encode = 'onehot' и некоторые интервалы не содержат данных). Такие признаки можно удалить с помощью алгоритмов отбора признаков (например, VarianceThreshold).

Примеры

>>> from sklearn.preprocessing import KBinsDiscretizer
>>> X = [[-2, 1, -4,   -1],
...      [-1, 2, -3, -0.5],
...      [ 0, 3, -2,  0.5],
...      [ 1, 4, -1,    2]]
>>> est = KBinsDiscretizer(
...     n_bins=3, encode='ordinal', strategy='uniform'
... )
>>> est.fit(X)
KBinsDiscretizer(...)
>>> Xt = est.transform(X)
>>> Xt
array([[ 0., 0., 0., 0.],
       [ 1., 1., 1., 0.],
       [ 2., 2., 2., 1.],
       [ 2., 2., 2., 2.]])

Иногда может быть полезно преобразовать данные обратно в исходное пространство признаков. Функция inverse_transform преобразует данные с разбивкой на интервалы в исходное пространство признаков. Каждое значение будет равно среднему значению двух границ интервала.

>>> est.bin_edges_[0]
array([-2., -1.,  0.,  1.])
>>> est.inverse_transform(Xt)
array([[-1.5,  1.5, -3.5, -0.5],
       [-0.5,  2.5, -2.5, -0.5],
       [ 0.5,  3.5, -1.5,  0.5],
       [ 0.5,  3.5, -1.5,  1.5]])

Хотя этот этап предобработки может служить оптимизацией, важно учитывать, что массив, возвращаемый функцией inverse_transform, будет иметь внутренний тип np.float64 или np.float32, заданный аргументом dtype. Это может значительно увеличить объем памяти, занимаемый массивом. См. пример векторного квантования, в котором KBinsDescretizer используется для кластеризации изображения по интервалам и увеличивает его размер в 8 раз.

fit(X, y=None, sample_weight=None)[исходный код]

Обучает оцениватель.

Параметры:
Xarray-like формы (n_samples, n_features)

Данные для дискретизации.

yNone

Игнорируется. Этот параметр существует только для совместимости с Pipeline.

sample_weightndarray формы (n_samples,)

Содержит значения весов, соответствующие каждому образцу.

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

Изменено в версии 1.7: Добавлена поддержка strategy=”uniform”.

Возвращает:
selfobject

Возвращает сам экземпляр.

fit_transform(X, y=None, **fit_params)[исходный код]

Обучает преобразователь на данных, а затем преобразует их.

Обучает преобразователь на X и y с необязательными параметрами fit_params и возвращает преобразованную версию X.

Параметры:
Xarray-like формы (n_samples, n_features)

Входные образцы.

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

Целевые значения (None для преобразований без учителя).

**fit_paramsdict

Дополнительные параметры обучения. Передавайте их, только если оцениватель принимает дополнительные параметры в методе fit.

Возвращает:
X_newndarray-массив формы (n_samples, n_features_new)

Преобразованный массив.

get_feature_names_out(input_features=None)[исходный код]

Получает имена выходных признаков.

Параметры:
input_featuresarray-like строк или None, по умолчанию=None

Входные признаки.

  • Если input_features равно None, то в качестве имен входных признаков используются feature_names_in_. Если feature_names_in_ не определено, генерируются следующие имена входных признаков: ["x0", "x1", ..., "x(n_features_in_ - 1)"].
  • Если input_features является array-like, то input_features должно соответствовать feature_names_in_, если определено feature_names_in_.
Возвращает:
feature_names_outndarray объектов str

Имена преобразованных признаков.

get_metadata_routing()[исходный код]

Получает настройки маршрутизации метаданных этого объекта.

О том, как работает механизм маршрутизации, см. в руководстве пользователя.

Возвращает:
routingMetadataRequest

Объект MetadataRequest, содержащий сведения о маршрутизации.

get_params(deep=True)[исходный код]

Получает параметры этого оценивателя.

Параметры:
deepbool, по умолчанию=True

Если True, возвращает параметры этого оценивателя и содержащихся в нём подобъектов, являющихся оценивателями.

Возвращает:
paramsdict

Имена параметров, сопоставленные с их значениями.

inverse_transform(X)[исходный код]

Преобразует дискретизированные данные обратно в исходное пространство признаков.

Обратите внимание, что из-за округления при дискретизации эта функция не восстанавливает исходные данные.

Параметры:
Xarray-like формы (n_samples, n_features)

Преобразованные данные в пространстве интервалов.

Возвращает:
X_originalndarray, dtype={np.float32, np.float64}

Данные в исходном пространстве признаков.

set_fit_request(*, sample_weight:bool|None|str='$UNCHANGED$') → KBinsDiscretizer[исходный код]

Настраивает, следует ли запрашивать передачу метаданных в метод fit.

Обратите внимание, что этот метод имеет значение только тогда, когда оцениватель используется как подоцениватель в метаоценивателе и включена маршрутизация метаданных с помощью enable_metadata_routing=True (см. sklearn.set_config). О том, как работает механизм маршрутизации, см. в руководстве пользователя.

Для каждого параметра доступны следующие варианты:

  • True: метаданные запрашиваются и передаются в fit, если они предоставлены. Запрос игнорируется, если метаданные не предоставлены.
  • False: метаданные не запрашиваются, и метаоцениватель не передаёт их в fit.
  • None: метаданные не запрашиваются, и метаоцениватель вызовет ошибку, если пользователь их предоставит.
  • str: метаданные следует передавать метаоценивателю под указанным псевдонимом вместо исходного имени.

Значение по умолчанию (sklearn.utils.metadata_routing.UNCHANGED) сохраняет существующий запрос. Это позволяет изменить запрос для одних параметров, не меняя его для остальных.

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

Параметры:
sample_weightstr, True, False или None, по умолчанию=sklearn.utils.metadata_routing.UNCHANGED

Маршрутизация метаданных для параметра sample_weight в fit.

Возвращает:
selfobject

Обновлённый объект.

set_output(*, transform=None)[исходный код]

Задаёт контейнер выходных данных.

Дополнительные сведения см. в руководстве пользователя, а пример использования API — в разделе Знакомство с API set_output.

Параметры:
transform{“default”, “pandas”, “polars”}, по умолчанию=None

Настраивает выходные данные transform и fit_transform.

  • "default": формат выходных данных преобразователя по умолчанию
  • "pandas": выходные данные DataFrame
  • "polars": выходные данные Polars
  • None: конфигурация преобразования остаётся без изменений

Добавлено в версии 1.4: Добавлен параметр "polars".

Возвращает:
selfэкземпляр оценивателя

Экземпляр оценивателя.

set_params(**params)[исходный код]

Задаёт параметры этого оценивателя.

Метод работает как с простыми оценивателями, так и с вложенными объектами (например, Pipeline). Параметры последних имеют вид <component>__<parameter>, что позволяет обновлять каждый компонент вложенного объекта.

Параметры:
**paramsdict

Параметры оценивателя.

Возвращает:
selfэкземпляр оценивателя

Экземпляр оценивателя.

transform(X)[исходный код]

Дискретизирует данные.

Параметры:
Xarray-like формы (n_samples, n_features)

Данные для дискретизации.

Возвращает:
Xt{ndarray, разреженная матрица}, dtype={np.float32, np.float64}

Данные в пространстве интервалов. Будет разреженной матрицей, если self.encode='onehot', и ndarray в противном случае.

Примеры из галереи

Создание признаков, связанных со временем

График вероятностей классификации

Пример векторного квантования

Регрессия Пуассона и ненормальная функция потерь

Регрессия Твиди для страховых требований

Дискретизация непрерывных признаков с помощью KBinsDiscretizer

Дискретизация признаков

Демонстрация различных стратегий KBinsDiscretizer

Внутренний кросс-фитинг TargetEncoder

Основные возможности scikit-learn 1.2

© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.preprocessing.KBinsDiscretizer.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API