pandas - 用于神经网络的正确数据形状的 3D 张量
问题描述
我从神经网络开始,我的数据格式有一些问题。我有一个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:检查输入时出错:预期的 dense_4_input 具有 3 个维度,但得到了形状为 (52, 4) 的数组”
我相信这是因为它应该是(52,4,595)
,对吧?所以,我有点困惑,我怎样才能正确指定这个input_format或者可能为适当的数据格式重塑我的数据?
我正在使用pandas
,keras
和.tensorflow
jupyter notebook
解决方案
您必须将数据重塑为 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)
推荐阅读
- testing - test.before 钩子覆盖 feature.beforeEach 钩子。逻辑不好?
- android - Wear OS 应用程序仅在调试时与手机通信
- uwp - 哪些真实世界的 UWP 应用使用 AppServices?
- reactjs - 是否可以更改 material-ui TextField 组件的排版样式以使用标题变体?
- r - 使用 rowSum 在 dplyr 中使用正则表达式进行条件突变
- python - Python:如何删除 .ipynb / Jupyter Notebook 的 .html 导出的“In []”和“Out []”?
- python - 将二维数组另存为 txt 文件
- pip - pip 19.3.1 TypeError:“模块”对象不可调用
- r - 在R中应用正则表达式保留逗号
- php - 无法将数据库中的字符串解码为 JSON