zoukankan      html  css  js  c++  java
  • 交叉验证

    直接使用交叉验证评估超参数

    将数据拆分成n份,其中一份作为测试集,剩余的作为训练集,每一份逐次作为测试集,最终得到n个模型,和n个评分,

    from sklearn.datasets import load_iris
    from sklearn.model_selection import cross_val_score
    from sklearn.svm import SVC
    
    iris = load_iris()
    svc = SVC(kernel='linear')
    cross_val_score(svc, iris.data, iris.target, cv=3)
    
    Out[6]: array([1.  , 1.  , 0.98])
    

    这只能得到一个分数,并不会得到一个模型,如果对这3个分数取均值,意义为超参数kernel='linear' 训练出来的模型的分数,它是一种评估超参数优劣的方法,
    相对于Train-Test的拆分方法的优点在于这个分数是在整体数据上测试得到,而且又避免了直接使用全部数据训练,再用一部分评估造成评估分数失真的问题。

    在网格搜索中应用CV

    在GridSearch中使用cv, cv的作用还是用来评估超参数的最终得分,而非评估模型的最终得分,所以GridSearch最终输出的结果是每一组超参数的分数,用不用CV输出结果都是
    每一组超参数的分数,而不会输出一个模型,只有当设置refit=True时,GridSearch会用最优的参数重新训练一个模型作为其属性best_estimator_

    留出法+CV

    留出一份数据集作为测试,剩下的数据集作为CV分割,模型最终以测试集的评估为准,使用GridSearch得出最优的参数,再用整个训练集训练,再用测试集评估。

  • 相关阅读:
    比赛排名机制
    Python 异常(Exception)
    Python 异常(Exception)
    Sobel算子及C++实现
    一题多解(一) —— list(Python)判空(以及 is 与 == 的区别)
    常用软件的常用快捷键
    常用软件的常用快捷键
    从队列、二叉树到优先队列
    Jenkins(二)
    AssertValid函数学习
  • 原文地址:https://www.cnblogs.com/oaks/p/14325925.html
Copyright © 2011-2022 走看看