700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > K-Fold交叉验证 原理+python实现

K-Fold交叉验证 原理+python实现

时间:2022-04-14 01:15:38

相关推荐

K-Fold交叉验证 原理+python实现

K-交叉验证是指将原始数据分成K组(一般是均分),将每个子集数据分别做一次验证集,其余的K-1组子集数据作为训练集,这样会得到K个模型,用这K个模型最终的验证集的分类准确率的平均数作为此K-CV下分类器的性能指标。K一般大于等于2,实际操作时一般从3开始取,只有在原始数据集合数据量小的时候才会尝试取2.。而K-CV 的实验共需要建立 k 个models,并计算 k 次 test sets 的平均辨识率。在实作上,k 要够大才能使各回合中的 训练样本数够多,一般而言 k=10 (作为一个经验参数)算是相当足够了。

例如:假设将数据集D分为K个包(这里K = 6),每次将其中一个包作为验证集,其他K-1个包作为训练集

##一个简单的4折交叉验证from sklearn.model_selection import KFoldimport numpy as npimport matplotlib.pyplot as pltX = np.array([[1,2], [3,4], [1,3], [3,5]])Y = np.array([1, 2, 3, 4])KF = KFold(n_splits = 4) #建立4折交叉验证方法 查一下KFold函数的参数for train_index, test_index in KF.split(X):print("TRAIN", train_index, "TEST", test_index)X_train, X_test = X[train_index], X[test_index]Y_train, Y_test = Y[train_index], Y[test_index]print("对于数据X训练数据:", X_train)print("对于数据X测试数据:", X_test)print("对于数据Y训练数据:", Y_train)print("对于数据Y测试数据:", Y_test)

结果如下:

'''代码解释1、KFold(n_splits = 4) 2、KF.split(X)n_splits:表示划分几等份shuffle:在每次划分时,是否进行洗牌,①若为Falses时,其效果等同于random_state等于整数,每次划分的结果相同,②若为True时,每次划分的结果都不一样,表示经过洗牌,随机取样的random_state:随机种子数split():将数据集划分成训练集和测试集,返回索引生成器'''from sklearn.model_selection import KFoldkf = KFold(n_splits=5, random_state=43, shuffle=True)a=[[1,2],[3,4],[5,6],[7,8],[9,10]]b=[1,2,3,4,5]for i,j in kf.split(a,b):print(i,j)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。