【发布时间】:2019-07-26 19:12:25
【问题描述】:
我有一个数据框df,其中包含一个名为“事件”的列,其中有一个 24x24x40 的 numpy 数组。我想:
- 提取这个 numpy 数组;
- 将其展平为 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 数组的行是否可以按预期重新整形和绘制。
任何想法将不胜感激!
亲切的问候!
【问题讨论】:
标签: pandas dataframe scikit-learn pca