K折验证

"""K折验证"""

#K validation

import numpy as np

k = 4
num_val_samples = len(train_data) // k
num_epochs = 100
all_scores = []

for i in range(k):
    print("processing fold #", i)
    val_data = train_data[i * num_val_samples:(i + 1) * num_val_samples]
    val_targets = train_targets[i * num_val_samples : (i + 1) * num_val_samples]

    partial_train_data = np.concatenate([
            train_data[: i * num_val_samples], train_data[(i+1) * num_val_samples :]], axis = 0)

    partial_train_targets = np.concatenate([
            train_targets[: i * num_val_samples], train_targets[ (i + 1) * num_val_samples :]], axis = 0)

    model = build_model()
    model.fit(partial_train_data, partial_train_targets,
              epochs = num_epochs, batch_size = 1, verbose = 0)
    val_mse, val_mae = model.evaluate(val_data, val_targets, verbose = 0)
    all_scores.append(val_mae)

all_scores

np.mean(all_scores)

"""保存每折验证的结果"""

#save k-viladation results
num_epochs = 500
all_mae_histories=  []
for i in range(k):
    print("processing fold #", i)
    val_data = train_data[i * num_val_samples : (i + 1) * num_val_samples]
    val_targets = train_targets[i * num_val_samples : (i + 1) * num_val_samples]

    partial_train_data = np.concatenate(
            [train_data[: i * num_val_samples], train_data[(i + 1) * num_val_samples :]], axis = 0)
    partial_train_targets = np.concatenate([train_targets[: i * num_val_samples], train_targets[(i + 1) * num_val_samples :]], axis = 0)

    model = build_model()
    history = model.fit(partial_train_data, partial_train_targets,
                        validation_data = (val_data, val_targets),
                        epochs = num_epochs, batch_size = 1, verbose = 0)
    mae_history = history.history[‘val_mean_absolute_error‘]
    all_mae_histories.append(mae_history)

原文地址:https://www.cnblogs.com/wbloger/p/10217535.html

时间: 2024-11-06 03:37:26

K折验证的相关文章

K 折验证

为了在调节网络参数(比如训练的轮数)的同时对网络进行评估,你可以将数据划分为训练集和验证集.但由于数据点很少,验证集会非常小(比如大约100 个样本).因此,验证分数可能会有很大波动,这取决于你所选择的验证集和训练集.也就是说,验证集的划分方式可能会造成验证分数上有很大的方差,这样就无法对模型进行可靠的评估.    在这种情况下,最佳做法是使用 K 折交叉验证.这种方法将可用数据划分为 K个分区(K 通常取 4 或 5),实例化 K 个相同的模型,将每个模型在 K-1 个分区上训练,并在剩下的一

留出法、K折交叉验证、留一法进行数据集划分

from sklearn import datasets from sklearn import model_selection #引入sklearn库中手写数字的数据集 digits = datasets.load_digits() #留出法 X_train, X_test, y_train, y_test = model_selection.train_test_split(digits.data, digits.target, test_size = 0.2, shuffle = True

cross_val_score 交叉验证与 K折交叉验证,嗯都是抄来的,自己作个参考

因为sklearn cross_val_score 交叉验证,这个函数没有洗牌功能,添加K 折交叉验证,可以用来选择模型,也可以用来选择特征 sklearn.model_selection.cross_val_score(estimator, X, y=None, groups=None, scoring=None, cv=None, n_jobs=1, verbose=0, fit_params=None, pre_dispatch='2*n_jobs') 这里的cv 可以用下面的kf 关于s

K折交叉验证

交叉验证的思想 交叉验证主要用于防止模型过于复杂而引起的过拟合,是一种评价训练数据的数据集泛化能力的统计方法.其基本思想是将原始数据进行划分,分成训练集和测试集,训练集用来对模型进行训练,测试集用来测试训练得到的模型,以此来作为模型的评价指标. 简单的交叉验证 将原始数据D按比例划分,比如7:3,从D中随机选择70%的数据作为训练集train_data,剩余的作为测试集test_data(绿色部分).如下图所示,这里的数据都只利用了一次,并没有充分利用,对于小数据集,需要充分利用其数据的信息来训

小白学习之pytorch框架(6)-模型选择(K折交叉验证)、欠拟合、过拟合(权重衰减法(=L2范数正则化)、丢弃法)、正向传播、反向传播

下面要说的基本都是<动手学深度学习>这本花书上的内容,图也采用的书上的 首先说的是训练误差(模型在训练数据集上表现出的误差)和泛化误差(模型在任意一个测试数据集样本上表现出的误差的期望) 模型选择 验证数据集(validation data set),又叫验证集(validation set),指用于模型选择的在train set和test set之外预留的一小部分数据集 若训练数据不够时,预留验证集也是一种luxury.常采用的方法为K折交叉验证.原理为:把train set分割成k个不重合

R语言——K折交叉验证之随机均分数据集

今天,在阅读吴喜之教授的<复杂数据统计方法>时,遇到了把一个数据集按照某个因子分成若干子集,再把若干子集随机平均分成n份的问题,吴教授的方法也比较好理解,但是我还是觉得有点繁琐,因此自己编写了一个函数,此后遇到这种问题只需要运行一下函数就可以了. 这里采用R中自带的iris数据集, > str(iris) 'data.frame': 150 obs. of 5 variables: $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4

KFold,StratifiedKFold k折交叉切分

python风控评分卡建模和风控常识(博客主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_campaign=commission&utm_source=cp-400000000398149&utm_medium=share 原文链接 https://blog.csdn.net/wqh_jingsong/article/details/77896449 Stratifie

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 s

Sklearn-CrossValidation 交叉验证

1. 交叉验证概述 进行模型验证的一个重要目的是要选出一个最合适的模型,对于监督学习而言,我们希望模型对于未知数据的泛化能力强,所以就需要模型验证这一过程来体现不同的模型对于未知数据的表现效果. 最先我们用训练准确度(用全部数据进行训练和测试)来衡量模型的表现,这种方法会导致模型过拟合:为了解决这一问题,我们将所有数据分成训练集和测试集两部分,我们用训练集进行模型训练,得到的模型再用测试集来衡量模型的预测表现能力,这种度量方式叫测试准确度,这种方式可以有效避免过拟合. 测试准确度的一个缺点是其样