使用管道的查询点预测分布的标准偏差



我正在尝试使用管道执行一个简单的回归任务,以分配用于回归的多项式的次数(度数= 3)。所以我定义:

pipe = make_pipeline(PolynomialFeatures(3), BayesianRidge())

然后配件:

pipe.fit(X_train, y_train)

最后是预测位:

y_pred = pipe.predict(X_test)

sklearn 的 BayesianRidge() 有一个用于其预测方法的return_std参数,当设置为 True 时,它返回查询点预测分布的标准偏差。

无论如何,我可以使用管道获得此标准偏差数组吗?

您需要从他们的github存储库安装最新版本的scikit-learn。接下来,您只需要使用部分来自函数工具。我使用了类似于贝叶斯岭回归文档中提到的示例。

from sklearn import linear_model
from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import make_pipeline
from functools import partial
clf = linear_model.BayesianRidge()
#Make the pipeline
pipe = make_pipeline(PolynomialFeatures(3), clf)
#Patch the predict function of the classifier using partial
clf.predict = partial(clf.predict,return_std=True )
#Fit the pipeline
pipe.fit([[0,0], [1, 1], [2, 2]], [0, 1, 2])
#Retrieve the prediction and standard deviation
y_pred, y_std = pipe.predict([[1,2]])
#Output : (array([ 1.547614]), array([ 0.25034696]))

注意:显然这是 sklearn 管道模块中的一个错误,如此处所述。它现在在最新版本中已修复。

参考:

  • 部分在 Python 中的工作原理

相关内容

  • 没有找到相关文章

最新更新