Sklearn PCA: Correct Dimensionality of PCs(SkLearning PCA:正确的PC维度)
本文介绍了SkLearning PCA:正确的PC维度的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个数据帧df
,它包含一个名为‘Event’的列,其中有一个24x24x40数值数组。我想:
- 提取此数字数组;
- 将其展平为1x23040向量;
- 将此条目作为列添加到新的Numpy数组或数据帧中;
- 对结果矩阵执行PCA。
但是,PCA生成的特征向量的维度为"条目数",而不是"数据中的维度数"。
为了说明我的问题,我演示了一个运行良好的最小示例:
示例1
from sklearn import datasets, decomposition
digits = datasets.load_digits()
X = digits.data
pca = decomposition.PCA()
X_pca = pca.fit_transform(X)
print (X.shape)
Result: (1797, 64)
print (X_pca.shape)
Result: (1797, 64)
每种情况都有1797个条目,特征向量为64维。
现在来看我的例子:
示例2
from sklearn import datasets, decomposition
import pandas as pd
hdf=pd.HDFStore('./afile.h5')
df=hdf.select('batch0')
print(df['event'][0].shape)
Result: (1, 24, 24, 40)
print(df['event'][0].shape.flatten())
Result: (23040,)
for index, row in df.iterrows():
entry = df['event'][index].flatten()
_list.append(entry)
X = np.asarray(_list)
pca = decomposition.PCA()
X_pca=pca.fit_transform(X)
print (X.shape)
Result: (201, 23040)
print (X_pca.shape)
Result:(201, 201)
这是一个维度的数据,201条条目!
我不熟悉数据帧,因此可能是我错误地迭代了数据帧。但是,我已经检查了示例2中X
中得到的NumPy数组的行是否可以按照预期进行整形和绘制。
如有任何想法,我们将不胜感激!
问候!
推荐答案
SkLearning的文档说明,未指定n_components
参数时保留的组件数为min(n_samples, n_features)
。
现在,转到您的示例:
在您的第一个示例中,数据样本的数量1797
小于维度的数量64
,因此它保持整个维度(因为您没有指定组件的数量)。然而,在您的第二个示例中,数据样本的数量远远少于特征的数量,因此,Sklearns的PCA将维度的数量减少到n_samples
。
这篇关于SkLearning PCA:正确的PC维度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:SkLearning PCA:正确的PC维度
基础教程推荐
猜你喜欢
- 在 Python 中,如果我在一个“with"中返回.块,文件还会关闭吗? 2022-01-01
- 筛选NumPy数组 2022-01-01
- Python kivy 入口点 inflateRest2 无法定位 libpng16-16.dll 2022-01-01
- 线程时出现 msgbox 错误,GUI 块 2022-01-01
- 如何让 python 脚本监听来自另一个脚本的输入 2022-01-01
- Dask.array.套用_沿_轴:由于额外的元素([1]),使用dask.array的每一行作为另一个函数的输入失败 2022-01-01
- 如何在海运重新绘制中自定义标题和y标签 2022-01-01
- 使用PyInstaller后在Windows中打开可执行文件时出错 2022-01-01
- 用于分类数据的跳跃记号标签 2022-01-01
- 何时使用 os.name、sys.platform 或 platform.system? 2022-01-01