我正在尝试在python中执行Stratified K Fold Validation,我在文档中阅读了以下内容:
我不确定这意味着什么。当cross_val_score确实使用StratifiedKFold策略时,有人可以向我解释一下吗?
答案 0 :(得分:2)
当您执行交叉折叠验证时,您将训练集分成多个验证集。 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
。