У меня есть фрейм данных, df
, который содержит столбец с именем 'event', в котором есть массив 24x24x40.Я хочу:
- извлечь этот массив Numpy;
- объединить его в вектор 1x23040;
- добавить эту запись в виде столбца в новый массив или массив данных;
- выполнить 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 записей!
Я не знаком с фреймами данных, поэтому может случиться так, что я перебираю фрейм данных неправильно.Тем не менее, я проверил, что строки результирующего массива NumPy в X
в Примере 2 могут быть изменены и построены в соответствии с ожиданиями.
Любые мысли приветствуются!
С уважением!