代码如下:


from sklearn.model_selection import train_test_split,cross_val_score,cross_validate # 交叉验证所需的函数
from sklearn.model_selection import KFold,LeaveOneOut,LeavePOut,ShuffleSplit # 交叉验证所需的子集划分方法
from sklearn.model_selection import StratifiedKFold,StratifiedShuffleSplit # 分层分割
from sklearn.model_selection import GroupKFold,LeaveOneGroupOut,LeavePGroupsOut,GroupShuffleSplit # 分组分割
from sklearn.model_selection import TimeSeriesSplit # 时间序列分割
from sklearn import datasets  # 自带数据集
from sklearn import svm  # SVM算法
from sklearn import preprocessing  # 预处理模块
from sklearn.metrics import recall_score  # 模型度量# 代码来自:
# https://blog.csdn.net/luanpeng825485697/article/details/79836262iris = datasets.load_iris()  # 加载数据集
print('样本集大小:',iris.data.shape,iris.target.shape)# ===================================数据集随机划分,训练模型==========================
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.4, random_state=0)
# 交叉验证划分训练集和验证集.test_size为测试集所占的比例print('训练集大小:',X_train.shape,y_train.shape)  # 训练集样本大小
print('测试集大小:',X_test.shape,y_test.shape)  # 测试集样本大小
clf = svm.SVC(kernel='linear', C=1).fit(X_train, y_train) # 使用训练集训练模型print('准确率:',clf.score(X_test, y_test))#测试完了顺便计算下score
# 上述代码中的测试指的是验证的意思。#  如果涉及到归一化,则在测试集上也要使用训练集模型提取的归一化函数。
scaler = preprocessing.StandardScaler().fit(X_train)  # 通过训练集获得归一化函数模型。(也就是先减几,再除以几的函数)。在训练集和测试集上都使用这个归一化函数
X_train_transformed = scaler.transform(X_train)
clf = svm.SVC(kernel='linear', C=1).fit(X_train_transformed, y_train) # 使用训练集训练模型X_test_transformed = scaler.transform(X_test)
print(clf.score(X_test_transformed, y_test))  # 计算验证集的度量值(准确度)
# X_test_transformed是输入的验证数据
# y_test是验证数据集的标签print("---------------------------K折交叉验证、留一交叉验证、留p交叉验证、随机排列交叉验证---------------------------")
# k折划分子集
kf = KFold(n_splits=3)
for train, test in kf.split(iris.data):print("k折划分:%s %s" % (train.shape, test.shape))breakprint("---------------------------留一划分子集---------------------------")
loo = LeaveOneOut()
for train, test in loo.split(iris.data):print("留一划分:%s %s" % (train.shape, test.shape))breakprint("---------------------------留p划分子集---------------------------")
lpo = LeavePOut(p=5)
for train, test in lpo.split(iris.data):print("留p划分:%s %s" % (train.shape, test.shape))breakprint("---------------------------随机排列划分子集????---------------------------")
ss = ShuffleSplit(n_splits=3, test_size=0.25,random_state=0)
for train_index, test_index in ss.split(iris.data):print("随机排列划分:%s %s" % (train.shape, test.shape))breakprint("---------------------------分层K折交叉验证、分层随机交叉验证---------------------------") skf = StratifiedKFold(n_splits=3)  #各个类别的比例大致和完整数据集中相同
for train, test in skf.split(iris.data, iris.target):print("分层K折划分:%s %s" % (train.shape, test.shape))breakprint("---------------------------分层K折交叉验证、分层随机交叉验证(shuffle洗牌版本)---------------------------")
skf = StratifiedShuffleSplit(n_splits=3)  # 划分中每个类的比例和完整数据集中的相同
for train, test in skf.split(iris.data, iris.target):print("分层随机划分:%s %s" % (train.shape, test.shape))breakprint("##############################组 k-fold交叉验证、留一组交叉验证、留 P 组交叉验证、Group Shuffle Split##############################")
X = [0.1, 0.2, 2.2, 2.4, 2.3, 4.55, 5.8, 8.8, 9, 10]#10个数据
y = ["a", "b", "b", "b", "c", "c", "c", "d", "d", "d"]
groups = [1, 1, 1, 2, 2, 2, 3, 3, 3, 3]#这个groups的含义是:
#n_splits这里表示分成3份,其中两份归train,一份数据归test,train和test不能在同一组(也就是每条数据对应的group数值必须不一样)
# 但是有的时候n_splits的变化并不会生效。
print("-----------k折分组------------")
gkf = GroupKFold(n_splits=3)  # 训练集和测试集属于不同的组
# 分割的时候n_splits≤groups中的取值种数
for train, test in gkf.split(X, y, groups=groups):print("组 k-fold分割:%s %s" % (train, test))print("train=",train)print("test=",test)print("-----------留一分组------------")
logo = LeaveOneGroupOut()
for train, test in logo.split(X, y, groups=groups):print("留一组分割:%s %s" % (train, test))print("-----------留p分组------------")
lpgo = LeavePGroupsOut(n_groups=2)
for train, test in lpgo.split(X, y, groups=groups):print("留 P 组分割:%s %s" % (train, test))print("-----------随机分组------------")
gss = GroupShuffleSplit(n_splits=4, test_size=0.5, random_state=0)
for train, test in gss.split(X, y, groups=groups):print("随机分割:%s %s" % (train, test))# # print("##############################时间序列分割##############################")
# #整个数据集按时间顺序切3刀,得到4份,最后一份留作验证
# tscv = TimeSeriesSplit(n_splits=3)
# #      TimeSeriesSplit(max_train_size=None, n_splits=3)
# for train, test in tscv.split(iris.data):
#     print("时间序列分割:%s %s" % (train, test))

sklearn中的验证相关推荐

  1. sklearn中的交叉验证(Cross-Validation)

    sklearn中的交叉验证(Cross-Validation) cross validation大概的意思是:对于原始数据我们要将其一部分分为traindata,一部分分为test data.trai ...

  2. TF-IDF 原理及sklearn中的tf-idf实例分析

    背景介绍 在一个大的文本语料库中,一些单词将出现很多次(例如 "the", "a", "is" 是英文),因此对文档的实际内容没有什么有意义 ...

  3. sklearn中的xgboost_xgboost来了

    一.xgboost前奏 1,介绍一下啥是xgboost XGBoost全称是eXtreme Gradient Boosting,即极限梯度提升算法.它由陈天奇所设计,致力于让提升树突破自身的计算极限, ...

  4. 一个例子来使用sklearn中的TfidfVectorizer

    TfidfVectorizer 作用 将文本进行向量化表示. 原理 这里的tf(term frequency)是词的频数,idf(inverse document frequency)是这个词的逆文档 ...

  5. Python之 sklearn:sklearn中的train_test_split函数的简介及使用方法之详细攻略

    Python之 sklearn:sklearn中的train_test_split函数的简介及使用方法之详细攻略 目录 sklearn中的train_test_split函数的简介 train_tes ...

  6. Sklearn中的CV与KFold详解

    关于交叉验证,我在之前的文章中已经进行了简单的介绍,而现在我们则通过几个更加详尽的例子.详细的介绍 CV %matplotlib inline import numpy as np from skle ...

  7. sklearn中的分类决策树

    决策树 决策树简介 决策树是一种使用if-then-else的决策规则的监督学习方法. 其三要素为,枝节点,叶节点与分支条件,同时为了减少过拟合还有剪枝方法 为了便于记忆,可以称其为一方法三要素 决策 ...

  8. sklearn中GBDT的一些参数、属性、方法的理解

    文章目录 GBDT 分类器 引入 重要参数 loss learning_rate subsample n_estimators criterion max_depth min_samples_leaf ...

  9. sklearn 中的线性回归、岭回归、Lasso回归参数配置及示例

    文章目录 线性回归 引入 重要参数 重要属性 重要方法 例子 岭回归 引入 重要参数 重要属性 重要方法 示例 Lasso 回归 引入 重要参数 重要属性 重要方法 示例 本文主要讲一些sklearn ...

最新文章

  1. libev源码解析——定时器原理
  2. 中科院在2017年高被引科学家遴选中表现优异
  3. 云栖专辑|阿里开发者们的第二个感悟:PG大V德哥的使命感与开放心态
  4. mysql修改数据库名字_mysql 数据库修改名字
  5. 拖尾因子大怎么调整_乳房松弛下垂怎么改善?怎么快速调整乳房松弛下垂?
  6. C#中将字符串内容写入到txt文件中
  7. Eclipe 新建maven web 项目
  8. 商城计价中心 - 从容应对复杂场景价格计算
  9. 【转】软件需求分析方法
  10. “管理”解读——浅谈国内IT服务管理产品标准建立的必要性(之一)
  11. 史上最惨锦鲤即将来袭!奖品堪比5年高考3年模拟!
  12. 人工智能的本源与展望:从亚里士多德到平行智能
  13. 未来的云计算基础设施长什么样?
  14. EXCEL图表技巧:选择合适图表最全指南,建议收藏
  15. taobao API open淘宝 错误码一览表
  16. 基于mfc实现画图软件
  17. html怎么给图片加动画效果,html5怎么添加图片动画效果
  18. 【译】网页像素追踪原理
  19. 竞价推广过程中最难的问题是什么?
  20. 多边形颜色填充-X扫描线算法

热门文章

  1. SQLite数据库的简单读写操作
  2. c#操作word表格
  3. 浅析C++ Compile-time Assertion技术
  4. Vue项目实战08 : vue之mixin理解与使用
  5. mysql安装连接测试c_Ubuntu 12.04下安装mysql并用C程序测试连接
  6. mysql select 查询选后5个_mysql 查询select语句汇总
  7. 微博 用户画像_“肖战”被抵制?Python爬虫揭秘肖战粉丝的人群画像
  8. VuePress 添加百度统计代码
  9. 如何设置顶部和底部固定,中间填满
  10. 判断true的正确做法