Nit*_*Das 5 python pandas statsmodels quantile-regression
我正在尝试使用 Python 中的分位数回归来预测我的目标变量。
我考虑用于训练和验证的数据来自2015年10月至2017年12月31日期间。
现在模型已经开发出来,我正在尝试预测 2018 年 1 月的值,这会引发以下错误:
ValueError:操作数无法与形状 (34,) (33,) 一起广播
mod = smf.quantreg('ASBCU_SUM~Month+Year+WeekofMonth+DayNum+isHoliday+PCOP_CS+PCOP_LS+PCOP_IFS+PCOP_LSS+PCOP_FSS+PCOP_FS+DayOfWeek_6+DayOfWeek_5+DayOfWeek_2+DayOfWeek_7+DayOfWeek_3+DayOfWeek_4',dfTrainingData)
res = mod.fit(q=0.8)
Run Code Online (Sandbox Code Playgroud)
如果我检查,错误来自 statmodels 内的分位数回归.py 文件。
diff = np.max(np.abs(beta - beta0))
Run Code Online (Sandbox Code Playgroud)
我已经浏览过有关堆栈溢出的类似帖子,建议检查目标变量的数据类型是否为数字。这是变量的数据类型:
ASBCU_SUM:int64
月份:类别
年份:类别
每月一周:类别
是假期:int64
DayNum:int32
PCOP_SUM:int64
PCOP_CS:int64
PCOP_LS:int64
PCOP_IFS:int64
PCOP_LSS:int64
PCOP_FS:int64
PCOP_FSS:int64
DayOfWeek_3:float64
DayOfWeek_2:float64
DayOfWeek_5:float64
DayOfWeek_7:float64
DayOfWeek_4:float64
DayOfWeek_6:float64
使用 2015-2017 年数据开发模型时数据类型相同。
我真的很感谢任何帮助..
我之前遇到过同样的错误。检查了@Josef的回复,我发现输入矩阵不是满秩的,修复了秩问题后,错误就修复了。例如,如果您运行以下代码:
import statsmodels.api as sm
import statsmodels.formula.api as smf
import pandas as pd
data = {'col_1': [3, 2, 1, 0], 'col_2': [0, 0, 0, 0],
'y': [1,2,3,4]}
data = pd.DataFrame.from_dict(data)
data.head()
model =smf.quantreg("y ~ col_1 + col_2", data).fit()
print(model.summary())
Run Code Online (Sandbox Code Playgroud)
就会出现这个bug:
diff = np.max(np.abs(beta - beta0))
ValueError: operands could not be broadcast together with shapes (3,)
(2,)
Run Code Online (Sandbox Code Playgroud)
如果删除导致非满排名问题的“col_2”,该错误将得到修复。
| 归档时间: |
|
| 查看次数: |
2360 次 |
| 最近记录: |