python-3.x - 如何在预测时使用主成分分析?

标签 python-3.x machine-learning scikit-learn pca

假设我的原始数据集有 8 个特征,并且我应用 PCAn_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 行的二维矩阵。

关于python-3.x - 如何在预测时使用主成分分析?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45824383/

相关文章:

r - R 中的 t-SNE 预测

python - 概率 SVM、回归

python - 忽略训练数据中不存在的测试特征

python - Sklearn K-Fold 交叉验证内存问题

python - pyparsing - 大计算卡住解释器

python - 如何为我自己的用户定义类覆盖可变参数函数中用于 kwargs 的 `**` 运算符?

python - 在 Windows 上设置 Python simpleHTTPserver

python-3.x - or-tools 卡住并忽略超时

python-3.x - 如何将数据类型更改为 float64 以便 sklearn 可以在数据大于 np.float32 的数据帧上工作

python-2.7 - 您可以从 scikit-learn 中的 DecisionTreeRegressor 获取选定的叶子吗