#python #scikit-learn #pca
#python #scikit-learn #pca
Вопрос:
У меня есть набор данных, и я выполнил анализ PCA с использованием scikit-learn
. У меня есть другой набор данных с теми же функциями, и я хотел бы спроецировать данные в то же пространство PCA, что и созданный первым набором данных.
Я понимаю, что я должен преобразовать и центрировать данные так же, как исходный набор данных, а затем использовать собственные векторы для поворота данных.
Я немного застрял, чтобы сделать это на основе выходных данных sklearn.decomposition.PCA library
.
Пока у меня есть
X1 = np.loadtxt(fname="dataset1.txt")
pca = PCA(n_components=50)
pca.fit_transform(X1)
pca_result = pca.transform(X1)
X2 = np.loadtxt(fname="dataset2.txt")
У кого-нибудь есть какие-либо указания на то, как этого можно достичь?
Ответ №1:
У вас есть некоторая избыточность. Если вы выполняете fit_transform() , он возвращает основные компоненты, сохраняя при этом параметры объекта. Если у вас есть новый образец, вы используете только transform . Смотрите ниже:
X1 = np.loadtxt(fname="dataset1.txt")
pca = PCA(n_components=50)
Y1 = pca.fit_transform(X1)
X2 = np.loadtxt(fname="dataset2.txt")
Y2 = pca.transform(X2)
Комментарии:
1. Спасибо — именно то, что мне было нужно!
Ответ №2:
Установите его, используя первый набор данных, а затем преобразуйте второй, используя подобранную модель.
X1 = np.loadtxt(fname="dataset1.txt")
pca = PCA(n_components=50) # define model
pca.fit(X1) # fit model
pca_result = pca.transform(X1) # project the dataset 1
X2 = np.loadtxt(fname="dataset2.txt")
pca_results_2 = pca.transform(X2) # project the dataset 2 using the fitted model