gpt4 book ai didi

python - Scikit 使用 CalibratedClassifierCV 校准分类器的正确方法

转载 作者:行者123 更新时间:2023-12-05 02:19:32 27 4
gpt4 key购买 nike

Scikit 有 CalibratedClassifierCV ,这允许我们在特定的 X、y 对上校准我们的模型。它还明确指出,用于拟合分类器和用于对其进行校准的数据必须是不相交的。

如果它们一定是不相交的,用下面的训练分类器是否合理?

model = CalibratedClassifierCV(my_classifier)
model.fit(X_train, y_train)

我担心使用相同的训练集会违反disjoint data 规则。另一种方法可能是有一个验证集

my_classifier.fit(X_train, y_train)
model = CalibratedClassifierCV(my_classifier, cv='prefit')
model.fit(X_valid, y_valid)

它的缺点是留下较少的训练数据。另外,如果 CalibratedClassifierCV应该只适用于适合不同训练集的模型,为什么它的默认选项是 cv=3,它也适用于基本估计器?交叉验证是否自行处理不相交规则?

问题:CalibratedClassifierCV 的正确使用方法是什么?

最佳答案

我已经在 CrossValidated 中回答了这个问题完全相同的问题。无论如何我都会把它留在这里,因为我不清楚这个问题是属于这里还是属于 CrossVal。

--- 原答案---

CalibratedClassifierCV docs 中提到了两件事暗示它可以使用的方式:

base_estimator: If cv=prefit, the classifier must have been fit already on data.

cv: If “prefit” is passed, it is assumed that base_estimator has been fitted already and all data is used for calibration.

我可能显然解释错了,但看起来您可以通过两种方式使用 CCCV(CalibratedClassifierCV 的缩写):

第一:

  • 您照常训练您的模型,your_model.fit(X_train, y_train)
  • 然后,您创建 CCCV 实例,your_cccv = CalibratedClassifierCV(your_model, cv='prefit')。请注意,您设置了 cv 以标记您的模型已经拟合。
  • 最后,您调用 your_cccv.fit(X_validation, y_validation)。此验证数据仅用于校准目的。

第二点:

  • 您有一个新的、未经训练的模型。
  • 然后创建 your_cccv=CalibratedClassifierCV(your_untrained_model, cv=3)。注意 cv 现在是折叠数。
  • 最后,您调用 cccv_instance.fit(X, y)。因为您的模型未经训练,所以 X 和 y 必须用于训练和校准。确保数据“不相交”的方法是交叉验证:对于任何给定的折叠,CCCV 会将 X 和 y 拆分到您的训练和校准数据中,因此它们不会重叠。

TLDR:方法一允许您控制用于训练和校准的内容。方法二使用交叉验证来尝试充分利用您的数据来实现这两个目的。

关于python - Scikit 使用 CalibratedClassifierCV 校准分类器的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42390518/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com