gpt4 book ai didi

python - Python 中的分层 K 折

转载 作者:太空宇宙 更新时间:2023-11-04 02:46:42 28 4
gpt4 key购买 nike

我正在尝试在 python 中执行分层 K 折验证,并且我在文档中阅读了以下内容:

enter image description here

我不太清楚这是什么意思。有人可以向我解释一下 cross_val_score 到底什么时候使用 StratifiedKFold 策略吗?

最佳答案

执行交叉验证时,您将训练集拆分为多个验证集。 StratifiedKFold 确保您的每个验证集都包含相同比例的原始训练集标签。

例如,假设您要针对垃圾邮件和非垃圾邮件训练分类器。您的训练集包含 50k 个样本和 10k 个垃圾邮件样本。如果您执行 5 折交叉验证,您将把您的训练集分成 5 个验证,每个验证的大小为 10k。通过分层,每个验证集的选择方式都将保持非垃圾邮件与垃圾邮件的 4:1 分布。

编辑:很抱歉我误解了您最初的问题。要扩展下面用户@unutbu 的评论,您需要确认您使用的分类器是基类 ClassifierMixin 的子类。您可以使用 Method Resolution Order 来做到这一点。

假设您正在使用分类器 KNeighborsClassifier:

>>> from sklearn.neighbors import KNeighborsClassifier
>>> clf = KNeighborsClassifier()
>>> type(clf)
<class 'sklearn.neighbors.classification.KNeighborsClassifier'>
>>> type(clf).mro()
[<class 'sklearn.neighbors.classification.KNeighborsClassifier'>, ..., <class 'sklearn.base.ClassifierMixin'>, <type 'object'>]

请注意,解析顺序中倒数第二个类是 ClassifierMixin

关于python - Python 中的分层 K 折,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44935999/

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