我想知道如何在使用PCA或规范化以及其他类似于分类的方法来管理测试数据,因为我们的模型工作在输入向量的表示上。例如,假设您在您的训练数据集中使用了PCA以获得更高的精度,或者您已经标准化(最小-最大)数据。现在,您已经开发了一个模型,并希望安装它并标记新的示例。您需要以某种方式将PCA应用于每个即将到来的记录,并将该记录规范化。将PCA应用于一个记录不会产生与训练阶段使用的PCA相同的效果,我认为将PCA应用于一个样本也是没有意义的。那么,我们如何在测试数据的培训阶段管理这些预处理技术呢?
提前谢谢。
发布于 2018-04-18 08:37:43
PCA是从原始数据集到一组正交特征的矩阵转换。应用于训练集的转换矩阵将在将来与您的测试数据一起维护和使用,以便将原始测试集特征映射到与PCA变换的训练集相同的空间。
如果训练集有$n$实例,并且它们是$m$特性,则训练矩阵的大小为$n \倍m$。PCA变换矩阵的维数为$m \乘以k$,其中$k$是保留的PCA特征数,是最大的特征值。因此,我们可以通过$m \倍k$转换矩阵来转换单个实例$1 \乘以m$。这将导致$1 \乘以k$向量。
我有一些文本文件,我用文字袋矢量化。训练集显示在左侧,测试集在右侧。每一行都是一个文本文件,列是单词计数。

如果我们绘制这个数据集的前两个特性,我们就会得到

现在,我们将拟合我们的PCA变换矩阵,并将此转换应用于训练和测试集。
from sklearn.decomposition import PCA
pca = PCA(n_components=2, copy=True)
pca.fit(X_train)
train_PCA = pca.transform(X_train)
test_PCA = pca.transform(X_test)这给出了下面的情节。紫色和黄色的分数是两个不同的班从训练集。然后,浅蓝点是从测试集。您可以看到,经过PCA转换后,测试集中的点将与训练集并排。

https://datascience.stackexchange.com/questions/30467
复制相似问题