我正在将 PCA 应用于我的训练集,并希望使用 SVM 进行分类。如何在测试集中自动拥有相同的功能?(与 PCA 后的新列车集相同)。
在带有 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 上的主成分分析