如何应用相同的 PCA 来训练和测试集

Chk*_*ati 2 weka

我正在将 PCA 应用于我的训练集,并希望使用 SVM 进行分类。如何在测试集中自动拥有相同的功能?(与 PCA 后的新列车集相同)。

Hic*_*TTA 5

在带有 scikit-learn 的 python 中,我们在训练数据集上拟合 PCA 和分类器,然后我们使用已经拟合的 pca 和分类器转换测试数据集。这是一个例子:

from sklearn.decomposition import PCA
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris

# load data
iris = load_iris()

# initiate PCA and classifier
pca = PCA()
classifier = DecisionTreeClassifier()

# transform / fit

X_transformed = pca.fit_transform(iris.data)
classifier.fit(X_transformed, iris.target)

# predict "new" data
# (I'm faking it here by using the original data)

newdata = iris.data

# transform new data using already fitted pca
# (don't re-fit the pca)
newdata_transformed = pca.transform(newdata)

# predict labels using the trained classifier

pred_labels = classifier.predict(newdata_transformed)
Run Code Online (Sandbox Code Playgroud)

您应该对 weka 应用相同的逻辑:在测试数据上应用拟合的 pca 过滤器,然后对 pca 转换的测试集执行预测。您可以查看以下Weka相关主题: Weka 上的主成分分析