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之数据划分的主要内容,如果未能解决你的问题,请参考以下文章
python sklearn 机器学习sklearn.model_selection 介绍
sklearn可视化不同数据划分方法的差异:KFold, ShuffleSplit,StratifiedKFold, GroupKFold, StratifiedShuffleSplit.......