sklearn之数据划分

Posted lyl0618

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sklearn之数据划分相关的知识,希望对你有一定的参考价值。

 

1、train_test_split

将数组或矩阵拆分为随机训练和测试子集

用法:

sklearn.model_selection.train_test_split(*arrays, **options)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)

参数:

* 具有相同长度/形状的可索引数组的序列[0]
允许的输入是列表,numpy数组,稀疏矩阵或熊猫数据框。

test_size 浮点数,整数或无,可选(默认值:无)
如果为float,则应在0.0到1.0之间,并且代表要包含在测试拆分中的数据集的比例。如果为int,则表示测试样本的绝对数量。如果为None,则将值设置为火车尺寸的补码。如果train_size也是,则将其设置为0.25。

train_size 浮点数,整数或无(默认值:无)
如果为float,则应在0.0到1.0之间,并表示要包含在火车分割中的数据集的比例。如果为int,则表示火车样本的绝对数量。如果为“无”,则该值将自动设置为测试大小的补码。

random_state int,RandomState实例或无,可选(默认值:无)
如果为int,则random_state是随机数生成器使用的种子;否则为false。如果是RandomState实例,则random_state是随机数生成器;如果为None,则随机数生成器是所使用的RandomState实例np.random。

shuffle 布尔值,可选(默认= True)
拆分前是否对数据进行混洗。如果shuffle = False,则分层必须为None。

分层状排列或无(默认=无)
如果不是None,则将数据用作类标签以分层方式拆分。

2、cross_val_score

通过交叉验证评估分数

用法:

sklearn.model_selection.cross_val_score(estimator,X,y = None,groups = None,scoring = None,cv = None,n_jobs = None,verbose = 0,fit_params = None,pre_dispatch =2 * n_jobs,error_score = nan )
cross_val_score(lasso, X, y, cv=3)

交叉验证的基本思想是:

将数据集进行一系列分割,生成一组不同的训练测试集,然后分别训练模型并计算测试准确率,最后对结果进行平均处理。这样来有效降低测试准确率的差异。

我们在这之前还是需要train_test_split进行数据集划分

参数:

estimator 实现“拟合”的估计器估计器对象
用于拟合数据的对象。

X 
要拟合的数据。可以是例如列表或数组。

y 类似于数组,可选,默认值:无
在监督学习的情况下要尝试预测的目标变量。

groups组阵列状,具有形状(N_SAMPLES次,),可选
将数据集拆分为训练/测试集时使用的样本的标签分组。仅与“ Group” cv 实例(例如GroupKFold)结合使用。

scoring 评分字符串,可调用或无,可选,默认:无
字符串(请参阅模型评估文档)或带有签名的计分器可调用对象/函数, 它们应仅返回单个值。scorer(estimator, X, y)

与类似,cross_validate 但只允许使用一个指标。

如果为None,则使用估算器的默认计分器(如果有)。

cv int,交叉验证生成器或可迭代的,可选的
确定交叉验证拆分策略。简历的可能输入是:

无,要使用默认的5倍交叉验证,

整数,用于指定的折叠次数(Stratified)KFold,

简历分配器,

可迭代的屈服(训练,测试)拆分为索引数组。

对于整数/无输入,如果估计器是分类器,并且y是二进制或多类,StratifiedKFold则使用该估计器。在所有其他情况下,KFold均使用。

有关可以在此处使用的各种交叉验证策略的信息,请参阅用户指南。

在版本0.22中更改:cv如果“无”从3倍更改为5倍,则为默认值。

n_jobs int或None(可选)(默认为None)
用于执行计算的CPU数量。 None除非joblib.parallel_backend上下文中,否则表示1 。 -1表示使用所有处理器。有关 更多详细信息,请参见词汇表。

verbose详细整数,可选
详细程度。

fit_params dict,可选
传递给估算器的fit方法的参数。

pre_dispatch int或字符串,可选
控制在并行执行期间调度的作业数。当调度的作业超过CPU的处理能力时,减少此数目可能有助于避免内存消耗激增。该参数可以是:

无,在这种情况下,将立即创建并产生所有作业。使用它进行轻量级和快速运行的作业,以避免因按需生成作业而造成延迟

一个整数,给出所产生的总作业的确切数量

字符串,根据n_jobs给出表达式,如2 * n_jobs

error_score 提高或数字
如果估算器拟合出现错误,则分配给分数的值。如果设置为“ raise”,则会引发错误。如果给出数值,则引发FitFailedWarning。此参数不会影响重新安装步骤,这将始终引发错误。

 

3、KFold 

K折交叉验证器

提供训练/测试索引以将数据拆分为训练/测试集。将数据集拆分为k个连续的折叠(默认情况下不进行混洗)。

然后将每个折叠用作一次验证,而剩下的k-1个折叠形成训练集。相当于无放回抽样。

用法:

sklearn.model_selection.KFold(n_splits = 5,shuffle = False,random_state = None )
KFold(n_splits=2, random_state=None, shuffle=False)

返回交叉验证器中的拆分迭代次数

get_n_splits(self[, X, y, groups])

 

参数:

n_splits int,默认= 5
折数。必须至少为2。

shuffle 布尔值,可选
在拆分成批次之前是否对数据进行混洗。

random_state int,RandomState实例或无,可选,默认=无
如果为int,则random_state是随机数生成器使用的种子;否则为false。如果是RandomState实例,则random_state是随机数生成器;如果为None,则随机数生成器是所使用的RandomState实例np.random。仅当shuffle为True 时使用。如果shuffle为False,则应将其保留为None 。

 

以上是关于sklearn之数据划分的主要内容,如果未能解决你的问题,请参考以下文章

『Sklearn』数据划分方法

sklearn数据集划分

python sklearn 机器学习sklearn.model_selection 介绍

PyTorch+sklearn划分训练集/验证集

sklearn可视化不同数据划分方法的差异:KFold, ShuffleSplit,StratifiedKFold, GroupKFold, StratifiedShuffleSplit.......

初识人工智能:机器学习:sklearn数据集