python - 机器学习的多维输入
问题描述
我有一个 csv 文件,其中包含以下形式的数据:
Timestamp,Signal_1,Signal_2,Signal_3,Signal_4,Signal_5
2021-04-13 11:03:13+02:00,3,3,3,12,12
2021-04-13 11:03:14+02:00,3,3,3,12,12
现在我想创建一个 NN 来进行时间序列预测,所以为了做到这一点,我想将内容转换为 numpy 数组,以便分配训练/测试集。输入和输出应该是 5 维的(应该预测所有信号组)。目前我的代码如下所示:
import pandas
from matplotlib import pyplot
from sklearn.model_selection import train_test_split
from numpy import genfromtxt
filename = 'test.csv'
data = pandas.read_csv(filename , header=0, index_col=0)
my_data = genfromtxt('test.csv', delimiter=',')
print(data.shape)
print(type(my_data))
v, w, x, y, z = my_data
我知道缺少测试和培训部分的实际分配,但即使在这个阶段我也得到了错误ValueError: too many values to unpack (expected 5)
解决方案
不确定您要解压缩哪个位(看起来您尝试使用 pandas 导入一个版本,而使用 numpy 导入一个版本),但错误是因为您的my_data.shape
= (3, 6)
,因为标题和时间戳列不被 解释np.genfromtxt
,这会导致too many values to unpack
错误在v, w, x, y, z = my_data
array([[nan, nan, nan, nan, nan, nan],
[nan, 3., 3., 3., 12., 12.],
[nan, 3., 3., 3., 12., 12.]])
对于 numpymy_data
数组,您可以索引以删除第一行和第一列并转置以使其正确向上:
v, w, x, y, z = my_data[1:, 1:].T
这将为您提供一维数组:
>> v
array([3., 3.])
>> w
array([3., 3.])
>> x
array([3., 3.])
>> y
array([12., 12.])
>> z
array([12., 12.])
注意顺便说一句,如果您尝试使用您的 pandas 数据框做同样的事情data
,即v, w, x, y, z = data
,您实际上会得到分配的列标题字符串,而不是列本身。在这种情况下,您需要:
v, w, x, y, z = data.values.T
如果您也想要时间戳,使用 pandas 导入可能更容易,因为它更容易处理混合数据,只需重置索引或index_col
从您的read_csv
调用中删除:
data = pandas.read_csv(filename, header=0)
u, v, w, x, y, z = df.values.T
这会给你你的时间戳u
。
推荐阅读
- python - 什么 Python 语法规则允许句点和方法调用之间有空格?
- javascript - Slack API 在不更改用户文本的情况下向用户消息添加附件
- mysql - MySQL 为 WebDAV 请求生成睡眠查询
- javascript - 如何使用jquery在控制台中将ul li值转换为数组格式
- jquery - 引导选项卡:将 NGL 查看器加载到选项卡中
- powershell - 检测 if-else 输出 PowerShell
- python-3.x - 加载存储为 .npz 的字典失败
- java - 从 loadPaths 到类的 ColdFusion Javacast 数组中的错误
- java - Eclipse Maven 构建/插件问题
- xslt - XSLT 2.0 在定界符内标记定界符