Auto-ARIMA运行报错ValueError:y应为一维数组,求解决方法
解决pm.auto_arima的ValueError问题
报错原因
pm.auto_arima要求输入的y参数是一维单变量时间序列,你传入的df2是包含11列的DataFrame(形状(90,11)),不符合函数的输入要求。
解决方法
1. 针对单列时间序列建模
如果你只需要对DataFrame中的某一列数据建模,直接提取该列(转为Series或一维数组)传入即可:
# 提取目标列(替换成你实际要建模的列名,比如'quarterly_data') y = df2['target_column'] # 运行auto_arima,m=4适配季度数据 model = pm.auto_arima(y, m=4)
注:pandas Series本身就是一维结构,直接传入即可,无需额外转成numpy数组。
2. 针对多列时间序列批量建模
如果需要对所有11列分别建模,可通过循环遍历每一列逐个处理:
# 用字典存储每列对应的模型 column_models = {} for col_name in df2.columns: # 提取当前列的时间序列 y = df2[col_name] # 拟合模型 column_models[col_name] = pm.auto_arima(y, m=4) # 可在此添加后续操作,比如生成预测结果
额外注意
如果目标列存在缺失值,建议先做缺失值填充(如向前填充、均值填充等),否则可能触发新的报错:
# 示例:向前填充缺失值 y = df2['target_column'].fillna(method='ffill')
内容的提问来源于stack exchange,提问作者Isabelle De Melo van Houten
相关产品推荐
相关产品推荐

