美文网首页
交叉验证

交叉验证

作者: dreampai | 来源:发表于2019-01-22 15:34 被阅读0次

交叉验证不会返回一个模型,在调用 cross_val_score 时,内部会构建多个模型,但交叉验证的目的只是评估给定算法在特定数据集上训练后的泛化性能好坏。

1、scikit-learn 中的交叉验证

cross_val_score 函数的参数:

  • 想要评估的模型
  • 训练数据
  • 真实标签

2、分层 k 折交叉验证和其他策略

利用 cv 参数来调节 cross_val_score 所使用的折数,可以提供一个交叉验证分离器作为 cv 参数,来对数据划分过程进行更精细的控制。

  • 分层 k 折:KFold
  • 留一法:LeaveOneOut
  • 打乱划分:ShuffleSplit/StratifiedShuffleSplit
  • 分组交叉:GroupKFold
from sklearn.model_selection import cross_val_score
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import KFold
from sklearn.model_selection import LeaveOneOut
from sklearn.model_selection import ShuffleSplit
from sklearn.model_selection import GroupKFold
from sklearn.datasets import make_blobs

import mglearn
import matplotlib.pyplot as plt

iris=load_iris()
print('Iris labels:\n{}'.format(iris.target))
logreg=LogisticRegression()
scores=cross_val_score(logreg,iris.data,iris.target,cv=5)

print('Cross-validation scores:{}'.format(scores))
print('Average cross-validation score:{:.2f}'.format(scores.mean()))

kfold=KFold(n_splits=3,shuffle=True,random_state=0)
print('Cross-validation scores:\n{}'.format(cross_val_score(logreg,iris.data,iris.target,cv=kfold)))


# 留一法交叉验证
loo=LeaveOneOut()
print(len(iris.data))
scores=cross_val_score(logreg,iris.data,iris.target,cv=loo)
print('Number of cv iterations:',len(scores))
print('Mean accuracy:{:.2f}'.format(scores.mean()))

# 打乱划分交叉验证
shuffle_split=ShuffleSplit(test_size=.5,train_size=.5,n_splits=10)
scores=cross_val_score(logreg,iris.data,iris.target,cv=shuffle_split)
print('Cross-validation scores:\n{}'.format(scores))

# 分组交叉验证
X,y=make_blobs(n_samples=12,random_state=0)
groups=[0,0,0,1,1,1,1,2,2,3,3,3,]
scores=cross_val_score(logreg,X,y,groups,cv=GroupKFold(n_splits=3))

相关文章

  • 深度学习知识点汇总-机器学习基础(15)

    2.15 交叉验证和k折交叉验证 交叉验证是为了提高模型的泛华能力。 方法主要有: 留一交叉验证 k折交叉验证 这...

  • 机器学习笔记(一)——交叉验证

    交叉验证问题 什么是交叉验证     交叉验证是在机器学习建立模型和验证模型参数时常用的办法。交叉验证,顾名思义,...

  • 嵌套交叉验证(Nested cross-validation)

    传统交叉验证和嵌套交叉验证的区别 在开始分享嵌套交叉验证前,首先以K-Fold为例,区分K-Fold交叉验证和嵌套...

  • 十一、交叉验证和网格搜索

    1交叉验证 1)评估方法一般有留出法,交叉验证法,自助法,这里我们介绍交叉验证法。2)k折交叉验证法:将数据集D划...

  • 算法笔记(20)交叉验证及Python代码实现

    常用交叉验证法包括K折叠交叉验证法(K-fold cross validation)、随机拆分交叉验证法(shuf...

  • 交叉验证

    1. 既有趣、又有益的交叉验证 validate your machine learning in a bette...

  • 交叉验证

    交叉验证 问题 我们在训练数据的时候通常把原数据分成 训练集以及测试集两份。当我们使用训练集训练出模型后再使用测试...

  • 交叉验证

    1、为什么要进行交叉验证? 目的:为了得到可靠稳定的模型 交叉验证是一种模型选择方法,其将样本的一部分用于训练,另...

  • 交叉验证

    为什么使用交叉验证? 在许多实际应用中数据是不充足的。交叉验证的基本思想:重复的使用数据。把给定的数据进行切分,将...

  • 交叉验证

    交叉验证 (Cross validation) 有时亦称循环估计, 是用来验证分类器的性能的一种统计分析方法。它用...

网友评论

      本文标题:交叉验证

      本文链接:https://www.haomeiwen.com/subject/eioljqtx.html