Python 有没有一种方法可以使用XGBoostTregressor获得预测的概率?
我已经建立了一个XGBoostTregressor模型,使用大约200个分类特征预测一个连续时间变量 但是我想得到实际的预测和预测的概率作为输出。有没有办法从XGBoostTregressor模型中得到这一点Python 有没有一种方法可以使用XGBoostTregressor获得预测的概率?,python,machine-learning,xgboost,Python,Machine Learning,Xgboost,我已经建立了一个XGBoostTregressor模型,使用大约200个分类特征预测一个连续时间变量 但是我想得到实际的预测和预测的概率作为输出。有没有办法从XGBoostTregressor模型中得到这一点 所以我想要和p(Y | X)作为输出。知道怎么做吗?在回归中没有概率,在回归中,你只会得到一个预测值,这就是为什么它被称为回归,所以对于任何回归者,预测的概率都是不可能的。它只是分类而已 如前所述,没有与回归相关的概率 但是,您可能可以在该回归中添加一个参数,以查看您的回归是否可信 但是需
所以我想要和p(Y | X)作为输出。知道怎么做吗?在回归中没有概率,在回归中,你只会得到一个预测值,这就是为什么它被称为回归,所以对于任何回归者,预测的概率都是不可能的。它只是分类而已 如前所述,没有与回归相关的概率 但是,您可能可以在该回归中添加一个参数,以查看您的回归是否可信 但是需要注意的一点是,沿数据的方差可能不同。 假设你研究的是一种基于时间的现象。具体地说,在烘箱中,温度(y)在(x)时间之后(例如,以秒为单位)。当x=0s时,温度为20°C,你开始加热它,想知道它的变化,以便预测x秒后的温度。20秒后和5分钟后的差异可能相同,也可能完全不同。这就是所谓的 如果要使用置信区间,可能需要确保考虑了异方差,因此所有数据的置信区间都是相同的 您可以尝试获取已知输出的分布,比较该曲线上的预测,并检查pvalue。但这只会给你一个衡量获得输出的现实程度的指标,而不考虑输入。如果您知道您的输入/输出在特定的时间间隔内,这可能会起作用
- 编辑
我会这样做的。显然,输出是你真正的输出。
将numpy作为np导入 将matplotlib.pyplot作为plt导入 从scipy导入集成 从scipy.interpolate导入interp1d N=1000#样本数量 平均值=0 标准=1 输出=np.随机.正常(loc=平均值,标度=标准值,尺寸=N) #我们想要得到一个规范化的直方图(因为这是PDF,如果我们集成的话) #它必须等于1) nbins=N/10 n=int(n/n英寸) p、 x=np.直方图(输出,箱=n,赋范=True) plt.hist(输出,箱=n,规范=真) x=x[:-1]+(x[1]-x[0])/2#将存储单元边转换为中心 #现在我们要插入: #f=立方线(x=x,y=p,bc_type='not-a-knot') f=interp1d(x=x,y=p,种类='二次型',填充值='外推') x=np.linspace(-2.9*std,2.9*std,10000) 平面图(x,f(x)) plt.show() #检查: 面积=integrate.quad(f,x[0],x[-1]) 打印(面积)#(应接近1)
它并不完美,但它是我当时想到的最好的。我相信有更好的方法。若你们的数据遵循正常规律,它就变得微不足道了。你们可以看看参数
…output\u margin=True
,在回归的情况下这会给你们带来什么?我不知道,但想知道它会给出什么!我对xgboost并不太熟悉,因为xgboost一定做过类似于CDF的事情,对吧?可能类似于预测时间为100分钟+/-5分钟的概率是多少。我想了很多,但“预测时间为100分钟+/-5分钟的概率是多少。”这是不可能的,但如果你的预测时间为100分钟,你会发现基于CDF的概率值。或者你可以根据平均值和标准差找到预测的置信区间。谢谢你的输入,我只有分类输入变量。是否仍有可能做到这一点?您能否提供您正在使用的数据样本?我想看看能做些什么。我真的不能给出一个样本数据,我不允许分享它。但这是关于不同产品的数据。“产品名称”、“产品类别”、“设计国家”等。目标变量是发布产品所需的时间。我明白了,那么置信区间可能不是很好。但是,您仍然可以从输出(发布时间)创建概率密度函数(PDF),并将预期值与此PDF进行比较。如果你的数据是现实的代表,那么你可以知道它有多现实。请注意,PDF需要与实际数据的绘图进行比较,以检查它的性能。这听起来很有趣。关于如何从我的xgb模型的输出中构造这样一个PDF,您有什么建议吗?是否有可能构造一个依赖于我所有输入变量的PDF?这样我就可以从不同的分布中提取不同输入的估计值。