我从神经网络开始,我的数据格式有问题。我有一个pandas
DataFrame
,其中有130
行,4
列,每个数据点都是595
个项目的数组。
| Col 1 | Col 2 | Col 3 | Col 4 |
Row 1 | [x1, ..., x595] | [x1, ..., x595] | [x1, ..., x595] | [x1, ..., x595] |
Row 2 | [x1, ..., x595] | [x1, ..., x595] | [x1, ..., x595] | [x1, ..., x595] |
Row 3 | [x1, ..., x595] | [x1, ..., x595] | [x1, ..., x595] | [x1, ..., x595] |
我使用 train_test_split 创建了 X_train , X_test , y_train 和 y_test 。但是,当我检查 X_train 的形状时,它会返回(52,4),并且我无法为我的NN创建模型,因为它不接受此形状。这是错误:
“ ValueError:检查输入时出错:预期density_4_input具有 3维,但数组的形状为(52,4)“
我相信是因为它应该是(52,4,595)
,对吧?因此,我有些困惑,如何正确指定此 input_format ,或者可能将数据重塑为合适的数据格式?
我正在使用pandas
,keras
,tensorflow
和jupyter notebook
。
答案 0 :(得分:1)
您必须将数据重塑为3d numpy数组。
假设我们有一个数据帧,其中每个单元格都是您所描述的numpy数组
import pandas as pd
import numpy as np
data=pd.DataFrame(np.zeros((130,4))).astype('object')
for i in range(130):
for k in range(4):
#print(i,k)
data.iloc[i,k]=np.zeros(595)
然后我们可以将数据框重塑为3d numpy数组,方法是:
dataar=data.values
dataar=np.stack((np.vstack(dataar[:,0]),np.vstack(dataar[:,1]),np.vstack(dataar[:,2]),np.vstack(dataar[:,3])))
dataar=dataar.reshape(130,4,595)
dataar.shape
# (130, 4, 595)