Линейный дискриминантный анализ
- классsklearn.discriminant_analysis.LinearDiscriminantAnalysis(solver='svd', shrinkage=None, priors=None, n_components=None, store_covariance=False, tol=0.0001, covariance_estimator=None)[source]
-
Линейный дискриминантный анализ.
Классификатор с линейной границей принятия решения, полученный путем подгонки условных плотностей классов к данным и использования правила Байеса.
Модель подбирает гауссовскую плотность для каждого класса, предполагая, что все классы имеют одинаковую ковариационную матрицу.
Построенная модель также может использоваться для уменьшения размерности входных данных путем проекции их на самые дискриминационные направления, используя метод
transform.Добавлена в версии 0.17.
Для сравнения между
LinearDiscriminantAnalysisиQuadraticDiscriminantAnalysis, см. Линейный и квадратичный дискриминантный анализ с эллипсом ковариации.Подробнее см. в Руководстве пользователя.
- Параметры:
-
- solver{‘svd’, ‘lsqr’, ‘eigen’}, по умолчанию =’svd’
-
- Используемый решатель, возможные значения:
-
- ‘svd’: разложение по сингулярным значениям (по умолчанию). Не вычисляет ковариационную матрицу, поэтому этот решатель рекомендуется для данных с большим количеством признаков.
- ‘lsqr’: решение методом наименьших квадратов. Может быть объединён с уменьшением или пользовательским оценщиком ковариации.
- ‘eigen’: разложение по собственным значениям. Может быть объединён с уменьшением или пользовательским оценщиком ковариации.
Изменено в версии 1.2:
solver="svd"теперь имеет экспериментальную поддержку Array API. Подробнее см. Руководство пользователя Array API. - shrinkage‘auto’ или float, по умолчанию = None
-
- Параметр уменьшения, возможные значения:
-
- None: без уменьшения (по умолчанию).
- ‘auto’: автоматическое уменьшение с использованием леммы Ледоит-Вольфа.
- значение от 0 до 1: фиксированный параметр уменьшения.
Это значение следует оставить равным None, если используется
covariance_estimator. Обратите внимание, что уменьшение работает только с решателями ‘lsqr’ и ‘eigen’.Пример использования см. в Нормальный, Ледоит-Вольф и OAS линейный дискриминантный анализ для классификации.
- priorsодномерный массив формы (n_classes,), по умолчанию = None
-
Вероятности априорных классов. По умолчанию пропорции классов выводятся из обучающих данных.
- n_componentsint, по умолчанию = None
-
Количество компонент (<= min(n_classes - 1, n_features)) для уменьшения размерности. Если None, будет установлено равным min(n_classes - 1, n_features). Этот параметр влияет только на метод
transform.Пример использования см. в Сравнение LDA и PCA: 2D проекция набора данных Ириса.
- store_covariancebool, по умолчанию = False
-
Если True, явно вычисляет взвешенную ковариационную матрицу внутри класса, когда решатель равен ‘svd’. Для других решателей матрица всегда вычисляется и хранится.
Добавлена в версии 0.17.
- tolfloat, по умолчанию = 1.0e-4
-
Абсолютный порог для сингулярного значения X, который считается значимым, используется для оценки ранга X. Измеряемые размеры, сингулярные значения которых не значимы, отбрасываются. Используется только если решатель равен ‘svd’.
Добавлена в версии 0.17.
- covariance_estimatorоценщик ковариации, по умолчанию = None
-
Если не None, используется
covariance_estimatorдля оценки ковариационных матриц вместо использования эмпирического оценщика ковариации (с потенциальным уменьшением). Объект должен иметь метод fit и атрибутcovariance_как оценщики вsklearn.covariance. Если None, то параметр уменьшения управляет оценкой.Это значение следует оставить равным None, если используется
shrinkage. Обратите внимание, чтоcovariance_estimatorработает только с решателями ‘lsqr’ и ‘eigen’.Добавлена в версии 0.24.
- Атрибуты:
-
- coef_одномерный массив формы (n_features,) или (n_classes, n_features)
-
Вектор(ы) весов.
- intercept_одномерный массив формы (n_classes,)
-
Постоянный член.
- covariance_массив-подобный формы (n_features, n_features)
-
Взвешенная ковариационная матрица внутри класса. Она соответствует
sum_k prior_k * C_k, гдеC_k— ковариационная матрица выборок в классеk.C_kоцениваются с использованием (потенциально уменьшенного) смещённого оценщика ковариации. Если solver равен ‘svd’, существует только когдаstore_covarianceравно True. - explained_variance_ratio_одномерный массив формы (n_components,)
-
Процент дисперсии, объясненной каждой из выбранных компонент. Если
n_componentsне задано, все компоненты хранятся, и сумма объясненных дисперсий равна 1,0. Доступно только при использовании решателя eigen или svd. - means_массив-подобный формы (n_classes, n_features)
-
Средние значения по классам.
- priors_массив-подобный формы (n_classes,)
-
Вероятности априорных классов (сумма равна 1).
- scalings_массив-подобный формы (rank, n_classes - 1)
-
Масштабирование признаков в пространстве, охватываемом центрами классов. Доступно только для решателей ‘svd’ и ‘eigen’.
- xbar_массив-подобный формы (n_features,)
-
Общее среднее. Присутствует только если solver равен ‘svd’.
- classes_массив-подобный формы (n_classes,)
-
Уникальные метки классов.
- n_features_in_int
-
Количество признаков, увиденных во время fit.
Добавлена в версии 0.24.
-
feature_names_in_массив-подобный формы (
n_features_in_,) -
Имена признаков, увиденные во время fit. Определены только если
Xимеет имена признаков, все из которых являются строками.Добавлена в версии 1.0.
См. также
QuadraticDiscriminantAnalysis-
Квадратичный дискриминантный анализ.
Примеры
>>> import numpy as np >>> from sklearn.discriminant_analysis import LinearDiscriminantAnalysis >>> X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]]) >>> y = np.array([1, 1, 1, 2, 2, 2]) >>> clf = LinearDiscriminantAnalysis() >>> clf.fit(X, y) LinearDiscriminantAnalysis() >>> print(clf.predict([[-0.8, -1]])) [1]
- decision_function(X)[source]
-
Применить функцию принятия решения к массиву выборок.
Функция принятия решения равна (с точностью до постоянного множителя) логарифмической апостериорной вероятности модели, т.е.
log p(y = k | x). В случае двоичной классификации это вместо этого соответствует разностиlog p(y = 1 | x) - log p(y = 0 | x). См. Математическая формулировка LDA и QDA классификаторов.- Параметры:
-
- Xмассив-подобный формы (n_samples, n_features)
-
Массив выборок (тестовые векторы).
- Возвращает:
-
- y_scoresмассив-подобный формы (n_samples,) или (n_samples, n_classes)
-
Значения функции принятия решения, относящиеся к каждому классу, для каждой выборки. В случае двух классов форма равна
(n_samples,), давая отношение логарифмов вероятностей положительного класса.
- fit(X, y)[source]
-
Обучить модель линейного дискриминантного анализа.
Изменено в версии 0.19:
store_covarianceиtolбыли перемещены в основной конструктор.- Параметры:
-
- Xмассив-подобный (n_samples, n_features)
-
Данные обучения.
- yмассив-подобный (n_samples,)
-
Значения целевой переменной.
- Возвращаемое значение:
-
- selfобъект
-
Обученная модель.
- fit_transform(X, y=None, **fit_params)[source]
-
Обучение на данных, затем преобразование.
Обучает преобразователь на
Xиyс необязательными параметрамиfit_paramsи возвращает преобразованную версиюX.- Параметры:
-
- Xмассив-подобный (n_samples, n_features)
-
Входные данные.
- yмассив-подобный (n_samples,) или (n_samples, n_outputs), по умолчанию None
-
Значения целевой переменной (None для неконтролируемых преобразований).
- **fit_paramsdict
-
Дополнительные параметры обучения.
- Возвращаемое значение:
-
- X_newмассив ndarray формы (n_samples, n_features_new)
-
Преобразованный массив.
- get_feature_names_out(input_features=None)[source]
-
Получить имена выходных признаков для преобразования.
Имена выходных признаков будут иметь префикс в нижнем регистре имени класса. Например, если преобразователь выводит 3 признака, то имена выходных признаков:
["class_name0", "class_name1", "class_name2"].- Параметры:
-
- input_featuresмассив-подобный str или None, по умолчанию None
-
Используется только для проверки имен признаков с именами, которые были видны в
fit.
- Возвращаемое значение:
-
- feature_names_outмассив ndarray из str объектов
-
Имена преобразованных признаков.
- get_metadata_routing()[source]
-
Получить маршрутизацию метаданных этого объекта.
Пожалуйста, ознакомьтесь со Руководством пользователя о том, как работает механизм маршрутизации.
- Возвращаемое значение:
-
- routingMetadataRequest
-
MetadataRequest, содержащий информацию о маршрутизации.
- get_params(deep=True)[source]
-
Получить параметры для этого оценщика.
- Параметры:
-
- deepbool, по умолчанию True
-
Если True, вернет параметры для этого оценщика и содержащихся вложенных объектов, которые являются оценщиками.
- Возвращаемое значение:
-
- paramsdict
-
Имена параметров, сопоставленные со значениями.
- predict(X)[source]
-
Предсказать метки классов для выборок в X.
- Параметры:
-
- X{массив-подобный, разреженная матрица} формы (n_samples, n_features)
-
Матрица данных, для которой нужно получить предсказания.
- Возвращаемое значение:
-
- y_predмассив ndarray формы (n_samples,)
-
Вектор, содержащий метки классов для каждой выборки.
- predict_log_proba(X)[source]
-
Оценить логарифмическую вероятность.
- Параметры:
-
- Xмассив-подобный формы (n_samples, n_features)
-
Входные данные.
- Возвращаемое значение:
-
- Cмассив ndarray формы (n_samples, n_classes)
-
Оцененные логарифмические вероятности.
- predict_proba(X)[source]
-
Оценить вероятность.
- Параметры:
-
- Xмассив-подобный формы (n_samples, n_features)
-
Входные данные.
- Возвращаемое значение:
-
- Cмассив ndarray формы (n_samples, n_classes)
-
Оцененные вероятности.
- score(X, y, sample_weight=None)[source]
-
Возвращает среднюю точность на заданных тестовых данных и метках.
В случае многоклассовой классификации это точность подмножества, которая является жёсткой метрикой, так как для каждой выборки требуется, чтобы каждый набор меток был предсказан правильно.
- Параметры:
-
- Xмассив-подобный типа (n_samples, n_features)
-
Тестовые образцы.
- yмассив-подобный типа (n_samples,) или (n_samples, n_outputs)
-
Истинные метки для
X. - sample_weightмассив-подобный типа (n_samples,), по умолчанию=None
-
Веса образцов.
- Возвращает:
-
- scoreчисло с плавающей запятой
-
Средняя точность
self.predict(X)по отношению кy.
- set_output(*, transform=None)[source]
-
Устанавливает контейнер для вывода.
См. Введение в API set_output, чтобы узнать, как использовать API.
- Параметры:
-
- transform{“default”, “pandas”, “polars”}, по умолчанию=None
-
Настройка вывода
transformиfit_transform.-
"default": Формат вывода по умолчанию для преобразователя -
"pandas": Вывод в формате DataFrame -
"polars": Вывод в формате Polars -
None: Настройка преобразования не изменяется
Добавлен в версии 1.4:
"polars"опция была добавлена. -
- Возвращает:
-
- selfэкземпляр оценщика
-
Экземпляр оценщика.
- set_params(**params)[source]
-
Устанавливает параметры этого оценщика.
Метод работает как с простыми оценщиками, так и с вложенными объектами (например,
Pipeline). Последние имеют параметры в формате<component>__<parameter>, чтобы можно было обновить каждый компонент вложенного объекта.- Параметры:
-
- **paramsсловарь
-
Параметры оценщика.
- Возвращает:
-
- selfэкземпляр оценщика
-
Экземпляр оценщика.
- set_score_request(*, sample_weight:bool|None|str='$UNCHANGED$') LinearDiscriminantAnalysis[source]
-
Запрашивает метаданные, переданные методу
score.Обратите внимание, что этот метод актуален только если
enable_metadata_routing=True(см.sklearn.set_config). Пожалуйста, обратитесь к Руководству пользователя, чтобы узнать, как работает механизм маршрутизации.Варианты для каждого параметра:
-
True: метаданные запрашиваются и передаютсяscoreесли они предоставлены. Запрос игнорируется, если метаданные не предоставлены. -
False: метаданные не запрашиваются, и мета-оценщик не передаст ихscore. -
None: метаданные не запрашиваются, и мета-оценщик выведет ошибку, если пользователь предоставит их. -
str: метаданные должны передаваться мета-оценщику с этим псевдонимом вместо оригинального имени.
По умолчанию (
sklearn.utils.metadata_routing.UNCHANGED): сохраняется существующий запрос. Это позволяет изменить запрос для некоторых параметров, а не для других.Добавлен в версии 1.3.
Примечание
Этот метод актуален только если этот оценщик используется в качестве под-оценщика мета-оценщика, например, внутри
Pipeline. В противном случае он не имеет эффекта.- Параметры:
-
- sample_weightstr, True, False, или None, по умолчанию=sklearn.utils.metadata_routing.UNCHANGED
-
Маршрутизация метаданных для параметра
sample_weightвscore.
- Возвращает:
-
- selfобъект
-
Обновленный объект.
-
- transform(X)[source]
-
Проецирует данные для максимального разделения классов.
- Параметры:
-
- Xмассив-подобный типа (n_samples, n_features)
-
Входные данные.
- Возвращает:
-
- X_newмассив ndarray типа (n_samples, n_components) или (n_samples, min(rank, n_components))
-
Преобразованные данные. В случае решателя ‘svd’ размерность (n_samples, min(rank, n_components)).
Примеры галереи
© 2007–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/modules/generated/sklearn.discriminant_analysis.LinearDiscriminantAnalysis.html