TSNE
- классsklearn.manifold.TSNE(n_components=2, *, perplexity=30.0, early_exaggeration=12.0, learning_rate='auto', max_iter=None, n_iter_without_progress=300, min_grad_norm=1e-07, metric='euclidean', metric_params=None, init='pca', verbose=0, random_state=None, method='barnes_hut', angle=0.5, n_jobs=None, n_iter='deprecated')[source]
-
Распределение t-распределённой стохастической встраиваемости соседей.
t-SNE [1] — инструмент для визуализации данных высокой размерности. Он преобразует сходства между точками данных в совместные вероятности и пытается минимизировать расстояние Кульбака-Лейблера между совместными вероятностями низкоразмерной встраиваемости и данными высокой размерности. Функция стоимости t-SNE не является выпуклой, т. е. при разных начальных значениях мы можем получить разные результаты.
Сильно рекомендуется использовать другой метод уменьшения размерности (например, PCA для плотных данных или TruncatedSVD для разреженных данных), чтобы уменьшить количество измерений до разумного значения (например, 50), если число признаков очень велико. Это позволит подавить некоторый шум и ускорить вычисление парных расстояний между выборками. Дополнительные советы можно найти в FAQ Лорена ван дер Матена [2].
Подробнее см. в Руководстве пользователя.
- Параметры:
-
- n_componentsint, по умолчанию=2
-
Размерность встраиваемого пространства.
- perplexityfloat, по умолчанию=30.0
-
Переплетение связано с количеством ближайших соседей, используемых в других алгоритмах обучения многообразий. Для больших наборов данных обычно требуется большее значение переплетения. Рассмотрите выбор значения между 5 и 50. Разные значения могут привести к значительно различающимся результатам. Переплетение должно быть меньше количества выборок.
- early_exaggerationfloat, по умолчанию=12.0
-
Управляет тем, насколько плотно естественные кластеры в исходном пространстве расположены в пространстве встраиваемости и насколько много места будет между ними. Для больших значений пространство между естественными кластерами будет больше в пространстве встраиваемости. Опять же, выбор этого параметра не является очень критическим. Если функция стоимости увеличивается во время начальной оптимизации, фактор ранней преувеличения или скорость обучения могут быть слишком высокими.
- learning_ratefloat или “auto”, по умолчанию=”auto”
-
Скорость обучения для t-SNE обычно находится в диапазоне [10.0, 1000.0]. Если скорость обучения слишком высока, данные могут выглядеть как «шар» с любой точкой, примерно равноудаленной от ближайших соседей. Если скорость обучения слишком низка, большинство точек могут выглядеть сжатыми в плотное облако с небольшим количеством выбросов. Если функция стоимости застряла в плохом локальном минимуме, увеличение скорости обучения может помочь. Обратите внимание, что во многих других реализациях t-SNE (bhtsne, FIt-SNE, openTSNE и т. д.) используется определение скорости обучения, которое в 4 раза меньше нашего. Так что наша скорость обучения = 200 соответствует скорости обучения = 800 в этих других реализациях. Вариант «auto» устанавливает скорость обучения в
max(N / early_exaggeration / 4, 50), где N — размер выборки, в соответствии с [4] и [5].Изменено в версии 1.2: Значение по умолчанию изменено на
"auto". - max_iterint, по умолчанию=1000
-
Максимальное количество итераций для оптимизации. Должно быть не менее 250.
Изменено в версии 1.5: Имя параметра изменено с
n_iterнаmax_iter. - n_iter_without_progressint, по умолчанию=300
-
Максимальное количество итераций без прогресса, прежде чем мы прервем оптимизацию, используемое после 250 начальных итераций с ранней преувеличением. Обратите внимание, что прогресс проверяется только каждые 50 итераций, поэтому это значение округляется до ближайшего кратного 50.
Добавлен в версии 0.17: параметр n_iter_without_progress для управления критериями остановки.
- min_grad_normfloat, по умолчанию=1e-7
-
Если норма градиента ниже этого порога, оптимизация будет остановлена.
- metricстрока или вызываемый объект, по умолчанию=’euclidean’
-
Метрика, используемая при вычислении расстояния между экземплярами в массиве признаков. Если метрика — строка, она должна быть одной из опций, разрешённых scipy.spatial.distance.pdist для параметра метрики, или метрика, указанная в pairwise.PAIRWISE_DISTANCE_FUNCTIONS. Если метрика — “precomputed”, X предполагается матрицей расстояний. В противном случае, если метрика — вызываемый объект, он вызывается для каждой пары экземпляров (строк), и полученное значение записывается. По умолчанию — “euclidean”, что интерпретируется как квадратное евклидово расстояние.
- metric_paramsсловарь, по умолчанию=None
-
Дополнительные ключевые аргументы для функции метрики.
Добавлен в версии 1.1.
- init{“random”, “pca”} или массив NumPy формы (n_samples, n_components), по умолчанию=”pca”
-
Инициализация встраиваемости. Инициализация PCA не может использоваться с предопределёнными расстояниями и обычно более глобально устойчива, чем случайная инициализация.
Изменено в версии 1.2: Значение по умолчанию изменено на
"pca". - verboseint, по умолчанию=0
-
Уровень детализации.
- random_stateint, экземпляр RandomState или None, по умолчанию=None
-
Определяет генератор случайных чисел. Передайте целое число для воспроизводимых результатов при нескольких вызовах функций. Обратите внимание, что разные инициализации могут привести к разным локальным минимумам функции стоимости. См. Словарь.
- method{‘barnes_hut’, ‘exact’}, по умолчанию=’barnes_hut’
-
По умолчанию алгоритм вычисления градиента использует приближение Барнса-Хатта, выполняющееся за время O(NlogN). method=’exact’ выполнит более медленный, но точный алгоритм за время O(N^2). Точный алгоритм следует использовать, когда ошибки ближайших соседей должны быть лучше, чем 3%. Однако точный метод не может масштабироваться до миллионов примеров.
Добавлен в версии 0.17: Приблизительная оптимизация метода с помощью Барнса-Хатта.
- anglefloat, по умолчанию=0.5
-
Используется только при method=’barnes_hut’. Это компромисс между скоростью и точностью для t-SNE Барнса-Хатта. «angle» — угловой размер (обозначается как тета в [3]) удалённого узла, измеренный относительно точки. Если этот размер меньше «angle», он используется как узловой элемент для всех точек, содержащихся в нём. Этот метод не очень чувствителен к изменениям этого параметра в диапазоне 0,2-0,8. Угол меньше 0,2 быстро увеличивает время вычислений, а угол больше 0,8 быстро увеличивает ошибку.
- n_jobsint, по умолчанию=None
-
Количество параллельных задач для поиска соседей. Этот параметр не оказывает никакого влияния при
metric="precomputed"или (metric="euclidean"иmethod="exact").Noneозначает 1, за исключением контекстаjoblib.parallel_backend.-1означает использование всех процессоров. Дополнительные сведения см. в Словаре.Добавлен в версии 0.22.
- n_iterint
-
Максимальное количество итераций для оптимизации. Должно быть не менее 250.
Устарело начиная с версии 1.5:
n_iterустарело в версии 1.5 и будет удалено в версии 1.7. Пожалуйста, используйтеmax_iterвместо него.
- Атрибуты:
-
- embedding_массив NumPy формы (n_samples, n_components)
-
Хранит векторы встраиваемости.
- kl_divergence_float
-
Расстояние Кульбака-Лейблера после оптимизации.
- n_features_in_int
-
Число признаков, увиденных во время fit.
Добавлен в версии 0.24.
-
feature_names_in_массив NumPy формы (
n_features_in_,) -
Имена признаков, увиденные во время fit. Определены только тогда, когда
Xимеет имена признаков, которые все являются строками.Добавлен в версии 1.0.
- learning_rate_float
-
Эффективная скорость обучения.
Добавлен в версии 1.2.
- n_iter_int
-
Количество выполненных итераций.
См. также
sklearn.decomposition.PCA-
Анализ главных компонент, который является линейным методом сокращения размерности.
sklearn.decomposition.KernelPCA-
Нелинейное уменьшение размерности с использованием ядер и PCA.
MDS-
Обучение многообразию с использованием многомерного масштабирования.
Isomap-
Обучение многообразию, основанное на изометрическом отображении.
LocallyLinearEmbedding-
Обучение многообразию с использованием локально-линейного вложения.
SpectralEmbedding-
Спектральное вложение для нелинейной размерности.
Примечания
Пример использования
TSNEв сочетании сKNeighborsTransformerсм. Приближенные ближайшие соседи в TSNE.Ссылки
- [1] van der Maaten, L.J.P.; Hinton, G.E. Визуализация данных высокой размерности
-
Использование t-SNE. Журнал машинного обучения 9:2579-2605, 2008.
- [2] van der Maaten, L.J.P. t-распределенное стохастическое вложение ближайших соседей
- [3] L.J.P. van der Maaten. Ускорение t-SNE с помощью алгоритмов на основе деревьев.
-
Журнал машинного обучения 15(Oct):3221-3245, 2014. https://lvdmaaten.github.io/publications/papers/JMLR_2014.pdf
- [4] Belkina, A. C., Ciccolella, C. O., Anno, R., Halpert, R., Spidlen, J.,
-
& Snyder-Cappione, J. E. (2019). Автоматически оптимизированные параметры для t-распределённого стохастического вложения ближайших соседей улучшают визуализацию и анализ больших наборов данных. Nature Communications, 10(1), 1-12.
- [5] Kobak, D., & Berens, P. (2019). Искусство использования t-SNE для одноклеточной
-
транскриптомики. Nature Communications, 10(1), 1-14.
Примеры
>>> import numpy as np >>> from sklearn.manifold import TSNE >>> X = np.array([[0, 0, 0], [0, 1, 1], [1, 0, 1], [1, 1, 1]]) >>> X_embedded = TSNE(n_components=2, learning_rate='auto', ... init='random', perplexity=3).fit_transform(X) >>> X_embedded.shape (4, 2)
- fit(X, y=None)[source]
-
Поместить X в пространство вложений.
- Параметры:
-
- X{array-like, sparse matrix} of shape (n_samples, n_features) or (n_samples, n_samples)
-
Если метрика равна ‘precomputed’, X должен быть квадратной матрицей расстояний. В противном случае он содержит образец на строке. Если метод равен ‘exact’, X может быть разреженной матрицей типа ‘csr’, ‘csc’ или ‘coo’. Если метод равен ‘barnes_hut’ и метрика равна ‘precomputed’, X может быть предварительно вычисленным разреженным графом.
- yNone
-
Игнорируется.
- Возвращаемое значение:
-
- selfobject
-
Обученный оценщик.
- fit_transform(X, y=None)[source]
-
Обучить X в пространстве вложений и вернуть преобразованный результат.
- Параметры:
-
- X{array-like, sparse matrix} of shape (n_samples, n_features) or (n_samples, n_samples)
-
Если метрика равна ‘precomputed’, X должен быть квадратной матрицей расстояний. В противном случае он содержит образец на строке. Если метод равен ‘exact’, X может быть разреженной матрицей типа ‘csr’, ‘csc’ или ‘coo’. Если метод равен ‘barnes_hut’ и метрика равна ‘precomputed’, X может быть предварительно вычисленным разреженным графом.
- yNone
-
Игнорируется.
- Возвращаемое значение:
-
- X_newndarray of shape (n_samples, n_components)
-
Вложение обучающих данных в пространстве меньшей размерности.
- get_feature_names_out(input_features=None)[source]
-
Получить имена выходных признаков для преобразования.
Имена выходных признаков будут иметь префикс в нижнем регистре с именем класса. Например, если преобразователь выводит 3 признака, то имена выходных признаков
["class_name0", "class_name1", "class_name2"].- Параметры:
-
- input_featuresarray-like of str or None, default=None
-
Используется только для проверки имён признаков с именами, которые были в
fit.
- Возвращаемое значение:
-
- feature_names_outndarray of str objects
-
Имена преобразованных признаков.
- get_metadata_routing()[source]
-
Получить маршрутизацию метаданных этого объекта.
См. Руководство пользователя о том, как работает механизм маршрутизации.
- Возвращаемое значение:
-
- routingMetadataRequest
-
Объект
MetadataRequest, содержащий информацию о маршрутизации.
- get_params(deep=True)[source]
-
Получить параметры этого оценщика.
- Параметры:
-
- deepbool, default=True
-
Если True, вернет параметры этого оценщика и содержащихся в нем подобъектов, которые являются оценщиками.
- Возвращаемое значение:
-
- paramsdict
-
Имена параметров, сопоставленные с их значениями.
- 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>, чтобы было возможно обновлять каждый компонент вложенного объекта.- Параметры:
-
- **paramsdict
-
Параметры оценщика.
- Возвращаемое значение:
-
- selfэкземпляр оценщика
-
Экземпляр оценщика.
Примеры из галереи
© 2007–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/modules/generated/sklearn.manifold.TSNE.html