基本分类问题

数据挖掘 机器学习 分类 数据挖掘 训练
2022-03-09 06:30:57

我想知道在使用 PCA 或归一化以及分类中的其他类似方法之后如何管理测试数据,因为我们的模型适用于其输入向量给出的表示。例如,假设您在训练数据集中使用了 PCA 以获得更好的准确性,或者您对数据进行了归一化(最小-最大)。现在,您已经开发了一个模型并想要安装它并标记新的示例。您需要以某种方式将 PCA 应用于每个即将到来的记录并规范化该记录。将 PCA 应用于一个记录不会产生与训练阶段使用的 PCA 相同的效果,我认为即使将 PCA 应用于一个样本也没有任何意义。那么我们如何在测试数据的训练阶段管理这些预处理技术呢?

提前致谢。

1个回答

PCA 是从原始数据集到一组正交特征的矩阵变换。应用于训练集的转换矩阵将被维护并在未来与您的测试数据一起使用,以便原始测试集特征将映射到与 PCA 转换的训练集相同的空间。

如果训练集有实例并且它们是个特征,则训练矩阵的大小为PCA 变换矩阵的维度为,其中是保留的 PCA 特征的数量,即顶部特征值。因此,我们可以通过变换矩阵将单个实例这导致向量。nmn×mm×kk1×mm×k1×k


我有一些使用词袋矢量化的文本文件。训练集如下图左侧,测试集在右侧。每行是一个文本文件,列是字数。

在此处输入图像描述

如果我们绘制这个数据集的前 2 个特征,我们会得到

在此处输入图像描述

现在我们将拟合我们的 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)

这给出了以下情节。紫色和黄色点是训练集中的 2 个不同类别。然后浅蓝色点来自测试集。可以看到,经过 PCA 转换后的测试集中的点将与训练集并排排列。

在此处输入图像描述