分位数回归预测
Quantile regression prediction
我已经使用 statsmodels.formula.api.quantreg 在测试集上进行预测。 运行使用此方法时出现意外错误:
AttributeError Traceback (most recent call last)
<ipython-input-34-12e0d345b0fc> in <module>
----> 1 test['ypredL'] = model1.predict( test ).values
2 test['FVC'] = model2.predict( test ).values
3 test['ypredH'] = model3.predict( test ).values
4 test['Confidence'] = np.abs(test['ypredH'] - test['ypredL']) / 2
~\anaconda3\envs\knk\lib\site-packages\statsmodels\base\model.py in predict(self, exog, transform, *args, **kwargs)
1081 '\n\nThe original error message returned by patsy is:\n'
1082 '{0}'.format(str(str(exc))))
-> 1083 raise exc.__class__(msg)
1084 if orig_exog_len > len(exog) and not is_dict:
1085 import warnings
AttributeError: predict requires that you use a DataFrame when predicting from a model
that was created using the formula api.
The original error message returned by patsy is:
'DataFrame' object has no attribute 'dtype'
有趣的是,相同的预测在训练集上 运行 并且运行得非常好!这是训练部分的代码:
model1 = quantreg('FVC ~ Weeks+Percent+Age+Sex+SmokingStatus',
train).fit(q = 0.25)
model2 = quantreg('FVC ~ Weeks+Percent+Age+Sex+SmokingStatus',
train).fit(q = 0.5)
model3 = quantreg('FVC ~ Weeks+Percent+Age+Sex+SmokingStatus',
train).fit(q = 0.75)
train['y_predL'] = model1.predict(train).values
train['y_pred'] = model2.predict(train).values
train['y_predH'] = model3.predict(train).values
输出:
错误'DataFrame' object has no attribute 'dtype'是对的,但是很难理解。所以,它真正的意思是训练集和测试集之间的 dtypes 一定存在冲突。
题中训练集Weeks和测试集
dtype不匹配
Train-Weeks的dtype是int,Test-Weeks的dtype是str.
我已经使用 statsmodels.formula.api.quantreg 在测试集上进行预测。 运行使用此方法时出现意外错误:
AttributeError Traceback (most recent call last)
<ipython-input-34-12e0d345b0fc> in <module>
----> 1 test['ypredL'] = model1.predict( test ).values
2 test['FVC'] = model2.predict( test ).values
3 test['ypredH'] = model3.predict( test ).values
4 test['Confidence'] = np.abs(test['ypredH'] - test['ypredL']) / 2
~\anaconda3\envs\knk\lib\site-packages\statsmodels\base\model.py in predict(self, exog, transform, *args, **kwargs)
1081 '\n\nThe original error message returned by patsy is:\n'
1082 '{0}'.format(str(str(exc))))
-> 1083 raise exc.__class__(msg)
1084 if orig_exog_len > len(exog) and not is_dict:
1085 import warnings
AttributeError: predict requires that you use a DataFrame when predicting from a model
that was created using the formula api.
The original error message returned by patsy is:
'DataFrame' object has no attribute 'dtype'
有趣的是,相同的预测在训练集上 运行 并且运行得非常好!这是训练部分的代码:
model1 = quantreg('FVC ~ Weeks+Percent+Age+Sex+SmokingStatus',
train).fit(q = 0.25)
model2 = quantreg('FVC ~ Weeks+Percent+Age+Sex+SmokingStatus',
train).fit(q = 0.5)
model3 = quantreg('FVC ~ Weeks+Percent+Age+Sex+SmokingStatus',
train).fit(q = 0.75)
train['y_predL'] = model1.predict(train).values
train['y_pred'] = model2.predict(train).values
train['y_predH'] = model3.predict(train).values
输出:
错误'DataFrame' object has no attribute 'dtype'是对的,但是很难理解。所以,它真正的意思是训练集和测试集之间的 dtypes 一定存在冲突。 题中训练集Weeks和测试集
dtype不匹配 Train-Weeks的dtype是int,Test-Weeks的dtype是str.