【问题标题】:How to aply the same PCA to train and test set如何将相同的 PCA 应用于训练和测试集
【发布时间】:2019-08-21 18:53:40
【问题描述】:

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

【问题讨论】:

  • 你能提供更多关于你在做什么的信息吗?语言、ml 库...
  • 我正在使用 weka,实际上我已经使用 libSVM 和 J48 进行了分类并且我有结果,所以现在我想使用 PCA 进行特征提取,我将 PCA 应用于训练集并调用它“TrainSet_AfterPCA”现在我想用 libSVM 和 J48 对“TrainSet_AfterPCA”进行分类,但问题是测试集不兼容,如果我对测试集进行 PCA,它会给出错误的特性,所以我真的需要做将“TrainSet_AfterPCA”的特征投影到测试集,这样我就可以进行分类了……我的问题是我可以自动进行吗?或者没有? (与 weka )

标签: weka


【解决方案1】:

在带有 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)

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

【讨论】:

    猜你喜欢
    • 2018-08-18
    • 1970-01-01
    • 2016-07-22
    • 2019-12-09
    • 1970-01-01
    • 2013-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多