gpt4 book ai didi

python - 将 PCA 应用于测试数据

转载 作者:太空宇宙 更新时间:2023-11-03 15:09:48 25 4
gpt4 key购买 nike

我正在尝试使用 sklearn 执行 PCA 的 python 实现。我创建了以下函数:

def dimensionality_reduction(train_dataset_mod1, train_dataset_mod2, test_dataset_mod1, test_dataset_mod2):

pca = PCA(n_components= 200)
pca.fit(train_dataset_mod1.transpose())
mod1_features_train = pca.components_
pca2 = PCA(n_components=200)
pca2.fit(train_dataset_mod2.transpose())
mod2_features_train = pca2.components_
mod1_features_test = pca.transform(test_dataset_mod1)
mod2_features_test = pca2.transform(test_dataset_mod2)

return mod1_features_train.transpose(), mod2_features_train.transpose(), mod1_features_test, mod2_features_test

我的矩阵的大小如下:

train_dataset_mod1 733x5000
test_dataset_mod1 360x5000
mod1_features_train 200x733
train_dataset_mod2 733x8000
test_dataset_mod2 360x8000
mod2_features_train 200x733

但是,当我尝试运行整个脚本时,我收到以下消息:

File "\Anaconda2\lib\site-packages\sklearn\decomposition\base.py", line 132, in transform X = X - self.mean_

有什么问题吗?如何将 PCA 应用于测试数据?

这里是 mod1 的 pca 调试示例:

enter image description here

转换后的数据集 mod1_features_train 和 mod1_features_train 的正确大小均为 500x733。但是我不能对 test_dataset_mod1 和 test_dataset_mod2 执行相同的操作,为什么?

编辑:在调试过程中,我注意到pca的base.py文件中,有一个操作X = X - self.mean,其中X是我的测试数据,self_mean是根据适合训练集(slf_mean 的大小为 733,与 X 不匹配)。如果我在训练过程中删除 transpose(),则 pca 正常工作,不会出现错误,test_dataset_mod1 和 test_dataset_mod2 具有正确的大小 360x500,但是,train_dataset_mod1 和 train_dataset_mod2 的大小错误 5000x500???

最佳答案

您不应该在拟合函数中转置矩阵,或者如果必须这样做,则必须在变换函数中转置矩阵:

pca.fit(train_dataset_mod1)
pca2.fit(train_dataset_mod2)
mod1_features_test = pca.transform(test_dataset_mod1)
mod2_features_test = pca2.transform(test_dataset_mod2)

或:

pca.fit(train_dataset_mod1.transpose())
pca2.fit(train_dataset_mod2.transpose())
mod1_features_test = pca.transform(test_dataset_mod1.transpose())
mod2_features_test = pca2.transform(test_dataset_mod2.transpose())

关于python - 将 PCA 应用于测试数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44314156/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com