我正在尝试使用Python和scikit-learn 进行kaggle.com的数字识别器竞赛.
从训练数据中删除标签后,我将CSV中的每一行添加到如下列表中:
for row in csv:
train_data.append(np.array(np.int64(row)))
Run Code Online (Sandbox Code Playgroud)
我对测试数据做了同样的事情.
我使用PCA预处理这些数据以执行降维(和特征提取?):
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)
Run Code Online (Sandbox Code Playgroud)
然后我创建一个kNN分类器并将其与X_train
数据拟合并使用数据进行预测X_test
.
使用这种方法,我可以获得97%的准确率.
我的问题是关于PCA执行前后数据的维度
什么尺寸train_data
和X_train
?
组件数量如何影响输出的维数?它们是一样的吗?