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 в противном случае.
Примеры из галереи
© 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