Python 之 sklearn 交叉验证 数据拆分

本文K折验证拟采用的是
Python 中 sklearn 包中的 StratifiedKFold 方法。

方法思想详见:http://scikit-learn.org/stable/modules/cross_validation.html

StratifiedKFold is
a variation of k-fold which returns stratified folds:
each set contains approximately the same percentage of samples of each target class as the complete set.

【译】

StratifiedKFold 是一种将数据集中每一类样本的数据成分,按均等方式拆分的方法。

其它划分方法详见:http://scikit-learn.org/stable/modules/cross_validation.html

闲言少叙,直接上代码。

【屌丝源码】

import numpy
import h5py
import sklearn
from sklearn import cluster,cross_validation
from sklearn.cluster import AgglomerativeClustering
from sklearn.cross_validation import StratifiedKFold

## 生成一个随机矩阵并保存
#arr = numpy.random.random([200,400])
#labvec = []
#for i in numpy.arange(0,200):
#    j = i%10
#    arr[i,j*20:j*20+20] = arr[i,j*20:j*20+20]+10
#    labvec.append(j)
#arr = arr.T
#file = h5py.File('arr.mat','w')
#file.create_dataset('arr', data = arr)
#file.close()
#file = h5py.File('labvec.mat','w')
#file.create_dataset('labvec', data = labvec)
#file.close()
# 读方式打开文件
myfile=h5py.File('arr.mat','r')
arr = myfile['arr'][:]
myfile.close()
arr = arr.T
myfile=h5py.File('labvec.mat','r')
labvec = myfile['labvec'][:]
myfile.close()
skf = StratifiedKFold(labvec, 4)
train_set = []
test_set = []
for train, test in skf:
    train_set.append(train)
    test_set.append(test)

详见:http://scikit-learn.org/stable/modules/cross_validation.html

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-16 17:35:29

Python 之 sklearn 交叉验证 数据拆分的相关文章

Python初探——sklearn库中数据预处理函数fit_transform()和transform()的区别

敲<Python机器学习及实践>上的code的时候,对于数据预处理中涉及到的fit_transform()函数和transform()函数之间的区别很模糊,查阅了很多资料,这里整理一下: # 从sklearn.preprocessing导入StandardScaler from sklearn.preprocessing import StandardScaler # 标准化数据,保证每个维度的特征数据方差为1,均值为0,使得预测结果不会被某些维度过大的特征值而主导 ss = Standard

sklearn交叉验证-【老鱼学sklearn】

交叉验证(Cross validation),有时亦称循环估计, 是一种统计学上将数据样本切割成较小子集的实用方法.于是可以先在一个子集上做分析, 而其它子集则用来做后续对此分析的确认及验证. 一开始的子集被称为训练集.而其它的子集则被称为验证集或测试集.交叉验证是一种评估统计分析.机器学习算法对独立于训练数据的数据集的泛化能力(generalize). 我们以分类花的例子来看下: # 加载iris数据集 from sklearn.datasets import load_iris from s

sklearn交叉验证2-【老鱼学sklearn】

过拟合 过拟合相当于一个人只会读书,却不知如何利用知识进行变通. 相当于他把考试题目背得滚瓜烂熟,但一旦环境稍微有些变化,就死得很惨. 从图形上看,类似下图的最右图: 从数学公式上来看,这个曲线应该是阶数太高的函数,因为一般任意的曲线都能由高阶函数来拟合,它拟合得太好了,因此丧失了泛化的能力. 用Learning curve 检视过拟合 首先加载digits数据集,其包含的是手写体的数字,从0到9: # 加载数据 digits = load_digits() X = digits.data y

机器学习-CrossValidation交叉验证详解

版权声明:本文为原创文章,转载请注明来源. 1.原理 1.1 概念 交叉验证(Cross-validation)主要用于模型训练或建模应用中,如分类预测.PCR.PLS回归建模等.在给定的样本空间中,拿出大部分样本作为训练集来训练模型,剩余的小部分样本使用刚建立的模型进行预测,并求这小部分样本的预测误差或者预测精度,同时记录它们的加和平均值.这个过程迭代K次,即K折交叉.其中,把每个样本的预测误差平方加和,称为PRESS(predicted Error Sum of Squares). 1.2

交叉验证概述

交叉验证 交叉验证(Cross-validation)主要用于建模应用中,例如PCR .PLS 回归建模中.在给定的建模样本中,拿出大部分样本进行建模型,留小部分样本用刚建立的模型进行预报,并求这小部分样本的预报误差,记录它们的平方加和. 中文名 交叉验证 外文名 Cross validation 实    质 建模应用中 特    点 PCR .PLS 回归建模中 目录 1 概念 2 基本思想 3 目的 4 常见的交叉验证形式 ? Holdout 验证 ? K-fold cross-valid

交叉验证 Cross-validation

对交叉验证这个问题,一直以来,不明白是怎么回事.近期看材料,涉及到了这个问题,写的通俗易懂,有种恍然大悟的感觉.下面,我写下对这个问题的理解. 现在假设这里有一堆数据,作为统计er的任务就是从这些数据中提取有用的信息.如何提取信息呢,我们的法宝就是–模型.模型在统计当中是极其重要的,学统计就是跟各种各样的模型混个脸熟.在模型的基础上,我们利用数据对模型的参数进行估计,从而通过参数化后的模型来描述数据的内在关系,了解数据内在的关系(pattern)非常必要,有助于对未来进行预测. 那么对于手里的数

Python下的数据处理和机器学习,对数据在线及本地获取、解析、预处理和训练、预测、交叉验证、可视化

http://blog.csdn.net/pipisorry/article/details/44833603 在[1]: %matplotlib inline 抓取的数据 一个简单的HTTP请求 在[2]: import requests print requests.get("http://example.com").text <!doctype html> <html> <head> <title>Example Domain<

基于sklearn和keras的数据切分与交叉验证

在训练深度学习模型的时候,通常将数据集切分为训练集和验证集.Keras提供了两种评估模型性能的方法: 使用自动切分的验证集 使用手动切分的验证集 一.自动切分 在Keras中,可以从数据集中切分出一部分作为验证集,并且在每次迭代(epoch)时在验证集中评估模型的性能. 具体地,调用model.fit()训练模型时,可通过validation_split参数来指定从数据集中切分出验证集的比例. # MLP with automatic validation set from keras.mode

机器学习基础:(Python)训练集测试集分割与交叉验证

在上一篇关于Python中的线性回归的文章之后,我想再写一篇关于训练测试分割和交叉验证的文章.在数据科学和数据分析领域中,这两个概念经常被用作防止或最小化过度拟合的工具.我会解释当使用统计模型时,通常将模型拟合在训练集上,以便对未被训练的数据进行预测. 在统计学和机器学习领域中,我们通常把数据分成两个子集:训练数据和测试数据,并且把模型拟合到训练数据上,以便对测试数据进行预测.当做到这一点时,可能会发生两种情况:模型的过度拟合或欠拟合.我们不希望出现这两种情况,因为这会影响模型的可预测性.我们有