我正在尝试在python中执行Stratified K Fold验证,我在文档中读到了以下内容:
我不太确定这是什么意思。有人能给我解释一下cross_val_score到底什么时候使用StratifiedKFold策略吗?
发布于 2017-07-05 21:16:31
当您执行交叉折叠验证时,您将训练集拆分为多个验证集。StratifiedKFold确保每个验证集都包含来自原始训练集的相等比例的标签。
例如,假设您正在训练垃圾邮件而不是垃圾邮件的分类器。您的训练集包含50k个样本和10k个垃圾邮件样本。如果执行5折交叉折叠验证,您将把训练集分成5个大小为10k样本的验证。通过分层,将以一种方式选择每个验证集,以保持非垃圾邮件与垃圾邮件之间的4:1分布。
编辑:很抱歉我误解了你最初的问题。要扩展user @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
。
https://stackoverflow.com/questions/44935999
复制