вы правы насчет исправления, однако вам не следует это делать!
PCA
PCA создает встраивание, находя ось, максимизирующую дисперсию: учитывая обучающий набор, вы находите направления (линейная комбинация осей (x, y, z и т. д.)), где данные сильно различаются.Результатом подобранного PCA являются k направлений (k линейная комбинация оси) (это атрибут .components в sklearn).Затем вы можете преобразовать свои тестовые данные, применяя линейную комбинацию к контрольным точкам.
TSNE
TSNE, с другой стороны, создает низкоразмерное вложение, которое пытается соблюдать (на определенном уровне) расстояние между точками в реальных измерениях.TSNE не смотрит на точки, учитывая их положение в пространстве большого измерения, он просто смотрит на расстояние между этой точкой и ее соседями.И постарайтесь соблюдать эти отношения в пространстве с низким уровнем яркости.
Вот почему у Sklearn нет функции преобразования для этого класса, вы не можете преобразовать данные с помощью TSNE: функция преобразования TSNE должна сначала соответствовать данным.
Вернуться к вашему вопросу
Если вы используете свой конвейер с обучением/ test split TSNE-объект будет переобучен во время теста с использованием данных теста!И нет НИКАКИХ причин, по которым вложение выглядело бы так же, как и в случае с данными обучения (опять же, поскольку вложение зависит от точек, заданных во время обучения).Производительность вашей модели ML должна быть плохой!
Если вы действительно хотите использовать TSNE, а затем машинное обучение, вам нужно преобразовать весь набор данных и тестировать: но помните, что ваша функция машинного обучения будет бесполезной, поскольку вы пропустили тестовые данные!