conformal tights 是一个python包
特征:
sklearn元估计器:向任何scikit-learn回归器添加分位数和区间的共形预测
darts预测:向任何scikit-learn回归器添加共形校准的概率预测
保形校准:准确的分位数和可靠的覆盖的区间
相干分位数:分位数单调增加而不是相互交叉
紧密分位数:选择提供所需覆盖范围的最低分散度
数据高效:仅需要少量校准示例即可拟合
pandas支持:可选择预测Dataframe并接收dataframe输出
预测分位数
conformal tights导出一个称为元估计器ConformalCoherenrQuantileRegressor,可以使用它来为任何scikit-learn回归器配备predict_quantiles预测共形校准分位数的方法。
获取数据:
X, y = fetch_openml("ames_housing", version=1, return_X_y=True, as_frame=True, parser="auto")
从OPENML数据库中下载数据集,OPENML是一个在线服务,提供了大量的数据集,共数据科学家和机器学习研究人员使用。
ames_housing:数据集的名称,是一个关于房价的中等规模数据集,常用于回归任务
version=1:数据集的版本号,OPENML中的数据集可能会随着时间的推移而更新
创建回归器,在训练集上拟合,然后基于测试集预测
# Create a regressor, equip it with conformal prediction, and fit on the train set
my_regressor = XGBRegressor(objective="reg:absoluteerror")
conformal_predictor = ConformalCoherentQuantileRegressor(estimator=my_regressor)
conformal_predictor.fit(X_train, y_train)# Predict with the underlying regressor
ŷ_test = conformal_predictor.predict(X_test)
使用一致性预测器预测分位数
ŷ_test_quantiles = conformal_predictor.predict_quantiles(X_test, quantiles=(0.025, 0.05, 0.1, 0.9, 0.95, 0.975)
)
print(ŷ_test_quantiles)
使用一致性预测器来预测测试集的多个分位数,quantiles参数指定了一组分位数,分别是0.025(2.5%)、0.05(5%)、0.1(10%)、0.9(90%)、0.95(95%)和0.975(97.5%)。这些分位数对应于预测分布的不同位置。
返回的部分结果:
可视化测试集上的预测分位数:
预测间隔
除了分位数预测外,还可以用predict_interval预测共形校准的预测区间,与分位数相比,这些侧重于可靠的覆盖范围而不是分位数精度
ŷ_test_interval = conformal_predictor.predict_interval(X_test, coverage=0.95)
使用一致性预测器来预测测试集上每个样本的房价区间,并且制定了期望的覆盖率(coverage为0.95)
conformal_predictor.predict_interval
方法计算了对于给定测试数据集X_test
中每个样本的95%预测区间。这个区间是一个范围,表达了预测值的不确定性,95%的覆盖率意味着我们期望95%的实际观测值会落在这个区间内。
计算出来的预测区间被存储在ŷ_test_interval变量中,这个变量通常是一个二维的dataframe或numpy数组,其中每一行对应于x_test中内的一个样本,每一列对应于区间的下界和上界。
coverage = ((ŷ_test_interval.iloc[:, 0] <= y_test) & (y_test <= ŷ_test_interval.iloc[:, 1])).mean()
ŷ_test_interval.iloc[:, 0]:预测区间的下界
ŷ_test_interval.iloc[:, 1]:预测区间的上界
y_test:测试集的实际目标
&用来判断测试集的实际目标值是否同时大于等于预测区间的下界且小于等于预测区间的上界
mean():计算平均值的方法,计算所有测试样本中落在预测区间内的比例。
预测时间序列
conformal tights还导出一个名为darts预测器,dartsforecaster它使用ConformalCoherentQuantileRegressor来进行共形校准的概率时间序列预测。
X.pd_dataframe()的输出结果为:
接上
在测试集上可视化预测及其预测区间: