python - 时间序列数据的交叉验证:将用户定义的具有内部列表的元组列表转换为用于在 GridSearchCV 中应用的元组列表
问题描述
我有时间序列数据,想在 Python 中对我的 ML 模型进行前向交叉验证。为了创建拆分,我做了以下工作:
cv_split = [(list_of_lists[:i], list_of_lists[i:i+1]) for i in range(1, len(list_of_lists))]
(list_of_lists
例如:[[0,1,2],[3,4],[5,6,7,8,], ...]
每个列表代表特定年份的观察结果。
结果cv_split
是具有内部列表列表的元组列表,每个元组是:([[0,1,2],[3,4]], [[5,6,7,8]])
,
这是问题,因为 GridSearchCV 不接受这个。
我知道以下表格适合我的cv_split
工作:
([0,1,2,3,4], [5,6,7,8]) (list of tuples of lists)
.
那么我挣扎怎么([[0,1,2],[3,4]], [[5,6,7,8]])
来([0,1,2,3,4], [5,6,7,8])
?
这里更全面:
我现在有:
[([[0,1,2],[3,4]], [[5,6,7,8]])
([[0,1,2],[3,4],[5,6,7,8]],[[9,10]])
([[0,1,2],[3,4],[5,6,7,8],[9,10]],[[11,12,13]])
([[0,1,2],[3,4],[5,6,7,8],[9,10],[11,12,13]],[[14,15,16]])]
我需要以下表格:
[([0,1,2,3,4], [5,6,7,8])
([0,1,2,3,4,5,6,7,8],[9,10])
([0,1,2,3,4,5,6,7,8,9,10],[11,12,13])
([0,1,2,3,4,5,6,7,8,9,10,11,12,13],[14,15,16])]
我是 Python 的新手,如果能得到任何解释帮助,我会很高兴。
解决方案
以下是如何使用嵌套列表推导:
lst = ([[0,1,2],[3,4]], [[5,6,7,8]])
t = tuple([[a for b in l for a in b] for l in lst])
print(t)
输出:
([0, 1, 2, 3, 4], [5, 6, 7, 8])
更新:
lst = [([[0,1,2],[3,4]], [[5,6,7,8]]),
([[0,1,2],[3,4], [5,6,7,8]],[[9,10]]),
([[0,1,2],[3,4], [5,6,7,8], [9,10]],[[11,12,13]]),
([[0,1,2],[3,4], [5,6,7,8], [9,10], [11,12,13]],[[14,15,16]])]
ls = [tuple([[a for b in l for a in b] for l in tt]) for tt in lst]
推荐阅读
- python - 在 cursor.description 中避免 None?
- netsuite - Netsuite - 跟踪大量删除的记录
- google-cloud-platform - 谷歌云平台BigQuery从firebase云消息导入报错,是什么原因?
- android-studio - 如何在 Android Studio 中嵌入 android 模拟器?
- protractor - 量角器会话创建
- python - 在特定条件下执行字符串拆分
- gem5 - 如何在 gem5 中使用 CommMonitor
- python - 为什么内置函数类在尝试引用它时会抛出 NameError?
- python - 为什么python代码在所有情况下都会导致用户不正确?
- react-native - 如何获取 FlatList 中项目的偏移位置?