Python Jupyter中Pandas数组填充失败及PowerTransformer报错排查
解决PowerTransformer报错:Found array with 0 sample(s)
报错信息
ValueError: Found array with 0 sample(s) (shape=(0, 18)) while a minimum of 1 is required by PowerTransformer.
报错触发于以下代码调用:
backTest = getPortTimeSeries(y_withData_Test, X_test, daily_stock_prices_data, trained_model_pipeline)
已完成排查
- X_test整体形状为
(11332, 18),无空样本问题 - y_withData_Test从已填充的CSV文件读取,数据已完成填充处理
- 检查日期筛选逻辑
thisYearMask,未发现异常
下一步排查方向
- 检查
getPortTimeSeries内部对X_test的切片/过滤逻辑:尽管X_test整体有数据,但函数内部可能基于y_withData_Test或日期做了进一步筛选,导致部分子数据集为空。比如:- 确认函数中是否存在按y值过滤的代码(如筛选y为特定值的样本),该条件下可能无匹配样本
- 排查是否有按时间窗口分批处理的逻辑,某个窗口内的X数据被过滤后为空
- 验证
trained_model_pipeline中的PowerTransformer环节:确认流水线中PowerTransformer是否被应用在某个子数据集上(而非整个X_test),该子集可能为空 - 交叉验证y_withData_Test与X_test的样本匹配度:两者各自数据非空,但可能存在索引不匹配的情况,导致合并/对齐后出现空样本。可检查两者的索引是否一致,是否存在样本在一方存在但另一方缺失的情况
内容的提问来源于stack exchange,提问作者Dun
相关产品推荐
相关产品推荐

