Dimension of data before and after performing PCA
我正在尝试使用Python和scikit-learn进行kaggle.com的数字识别器竞赛。
从训练数据中删除标签后,我将CSV中的每一行添加到这样的列表中:
1 2 | for row in csv: train_data.append(np.array(np.int64(row))) |
我对测试数据也是如此。
我用PCA预处理了这些数据,以进行尺寸缩减(以及特征提取?):
1 2 3 4 5 6 7 8 9 10 | def preprocess(train_data, test_data, pca_components=100): # convert to matrix train_data = np.mat(train_data) # reduce both train and test data pca = decomposition.PCA(n_components=pca_components).fit(train_data) X_train = pca.transform(train_data) X_test = pca.transform(test_data) return (X_train, X_test) |
然后,我创建一个kNN分类器并将其与
使用这种方法,我可以获得大约97%的精度。
我的问题是关于执行PCA之前和之后的数据维数
组件的数量如何影响输出的尺寸? 它们是一样的吗?
PCA算法找到数据协方差矩阵的特征向量。什么是特征向量?没有人知道,也没有人在乎(开玩笑!)。重要的是,第一个特征向量是平行于数据最大方差方向的向量(直觉上是:扩展)。第二个代表最大散布方面的第二好方向,依此类推。另一个重要的事实是这些向量彼此正交,因此它们构成了基础。
对于3D情况,如果要获得由第一个
因此,直接回答您的问题:是的,所需PCA组件的数量是输出数据的维数(转换后)。