【发布时间】:2013-11-28 20:55:04
【问题描述】:
我正在尝试使用 Python 和 scikit-learn kaggle.com's digit recognizer competition。
从训练数据中删除标签后,我将 CSV 中的每一行添加到如下列表中:
for row in csv:
train_data.append(np.array(np.int64(row)))
我对测试数据做同样的事情。
我使用 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)
然后我创建了一个 kNN 分类器,并用 X_train 数据对其进行拟合,并使用 X_test 数据进行预测。
使用这种方法,我可以获得大约 97% 的准确率。
我的问题是关于执行 PCA 前后数据的维度
train_data和X_train的尺寸是多少?
组件的数量如何影响输出的维度?它们是一样的吗?
【问题讨论】:
标签: python numpy scikit-learn pca