预测时如何使用主成分分析?
How to use Principal Component Analysis while predicting?
假设我的原始数据集有 8 个特征,我应用 PCA
和 n_components = 3
(我正在使用 sklearn.decomposition.PCA
)。然后我使用这 3 个 PCA 组件(现在是我的新功能)训练我的模型。
我是否也需要在预测时应用 PCA
?
即使我只预测一个数据点,我是否需要这样做?
让我感到困惑的是,当我进行预测时,每个数据点都是二维矩阵中的一行(由我要预测的所有数据点组成)。因此,如果我仅在一个数据点上应用 PCA
,则相应的行向量将转换为零向量。
如果您在 PCA 的前三个分量上拟合模型,则必须适当地转换任何新数据。例如,考虑取自 here:
的这段代码
pca = PCA(n_components=n_components, svd_solver='randomized',
whiten=True).fit(X_train)
X_train_pca = pca.transform(X_train)
X_test_pca = pca.transform(X_test)
clf = GridSearchCV(SVC(kernel='rbf', class_weight='balanced'), param_grid)
clf = clf.fit(X_train_pca, y_train)
y_pred = clf.predict(X_test_pca)
在代码中,他们首先将 PCA 应用于训练。然后他们转换训练和测试,然后他们将模型(在他们的例子中,SVM
)应用于转换后的数据。
即使您的 X_test
仅包含 1 个数据点,您仍然可以使用 PCA
。只需将您的数据转换为二维矩阵即可。例如,如果您的数据点是 [1,2,0,5]
,则 X_test=[[1,2,0,5]]
。也就是说,它是一个1行的二维矩阵。
假设我的原始数据集有 8 个特征,我应用 PCA
和 n_components = 3
(我正在使用 sklearn.decomposition.PCA
)。然后我使用这 3 个 PCA 组件(现在是我的新功能)训练我的模型。
我是否也需要在预测时应用 PCA
?
即使我只预测一个数据点,我是否需要这样做?
让我感到困惑的是,当我进行预测时,每个数据点都是二维矩阵中的一行(由我要预测的所有数据点组成)。因此,如果我仅在一个数据点上应用 PCA
,则相应的行向量将转换为零向量。
如果您在 PCA 的前三个分量上拟合模型,则必须适当地转换任何新数据。例如,考虑取自 here:
的这段代码pca = PCA(n_components=n_components, svd_solver='randomized',
whiten=True).fit(X_train)
X_train_pca = pca.transform(X_train)
X_test_pca = pca.transform(X_test)
clf = GridSearchCV(SVC(kernel='rbf', class_weight='balanced'), param_grid)
clf = clf.fit(X_train_pca, y_train)
y_pred = clf.predict(X_test_pca)
在代码中,他们首先将 PCA 应用于训练。然后他们转换训练和测试,然后他们将模型(在他们的例子中,SVM
)应用于转换后的数据。
即使您的 X_test
仅包含 1 个数据点,您仍然可以使用 PCA
。只需将您的数据转换为二维矩阵即可。例如,如果您的数据点是 [1,2,0,5]
,则 X_test=[[1,2,0,5]]
。也就是说,它是一个1行的二维矩阵。