我是靠谱客的博主 强健犀牛,最近开发中收集的这篇文章主要介绍Sklearn中不同的数据抽样验证方式1. 普通交叉随机抽样验证:train_test_split():2. K折交叉抽样验证:KFold():3. 分层K折抽样验证:StratifiedKFold():4. 分层随机抽样验证:StratifiedShuffleSplit(): 指标验证方式:,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 这里记录以下import语句的前4个抽样方法:

from sklearn.model_selection import (train_test_split,
									KFold, 
									StratifiedKFold,
                                    StratifiedShuffleSplit,
                                    ShuffleSplit,
                                    GroupShuffleSplit,
                                    GroupKFold, 
                                    TimeSeriesSplit)

1. 普通交叉随机抽样验证:train_test_split():

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)

2. K折交叉抽样验证:KFold():

 如下为,4折交叉验证,这4份都是互不相交的,等比例的。

参数含义:
1.n_split: 将数据集切分成n_split等份。
2.shuffle: 在切分n_split等份之前是否打乱。
3.4.random_state: 随机种子。当shuffle=True才有用,设置一样的random_state可以保持抽样到的数据一样。

kf = KFold(n_splits=2)
for train_index, test_index in kf.split(X):
	#得到的train_index, test_index是索引
	X_train, X_test = X[train_index], X[test_index]
	y_train, y_test = y[train_index], y[test_index]

在这里插入图片描述

3. 分层K折抽样验证:StratifiedKFold():

 StratifiedKFold分层采样,用于交叉验证:与KFold最大的差异在于,StratifiedKFold方法是根据标签中不同类别占比来进行拆分数据的,可以使各个分组中各类别比例与原始样本中各类别的比例保持一致。
在这里插入图片描述
参数含义:
1.n_split: 将每个类别切分成n_split等份。
2.shuffle: 在切分n_split等份之前是否打乱。
3.4.random_state: 随机种子。当shuffle=True才有用,设置一样的random_state可以保持抽样到的数据一样。

skf = StratifiedKFold(n_splits=2)
for train_index, test_index in skf.split(X, y):
	#得到的train_index, test_index是索引
	X_train, X_test = X[train_index], X[test_index]
	y_train, y_test = y[train_index], y[test_index]

4. 分层随机抽样验证:StratifiedShuffleSplit():

 StratifiedKFold和ShuffleSplit的最大不同就是,StratifiedKFold进行n_split划分,每次的划分数据都不会重复,而ShuffleSplit的会有重复的;
 分层抽样StratifiedKFold和ShuffleSplit都可以使各个分组中各类别比例与原始样本中各类别的比例保持一致。
在这里插入图片描述
参数含义:
1.n_split: 进行n_split次抽样。
2.test_size: 设置每次抽样中各类别的测试集所占比例。
3.train_size: 与test_size互补。
4.random_state: 随机种子,设置一样的random_state可以保持抽样到的数据一样。

sss = StratifiedShuffleSplit(n_splits=5, test_size=0.5, random_state=0)
for train_index, test_index in sss.split(X, y):
	#得到的train_index, test_index是索引
	X_train, X_test = X[train_index], X[test_index]
	y_train, y_test = y[train_index], y[test_index]



指标验证方式:

 上面的验证方式可以通过每次在for循环里进行训练集来训练,测试集来测试各种指标。
 还可用这种方式:cross_val_score()

参数含义:
1.x
2.y
3.scoring:指定测试指标,链接: https://scikit-learn.org/stable/modules/model_evaluation.html#scoring-parameter
4.cv:默认是5折交叉验证。如果是int, 则为分层K折抽样StratifiedKFold()。也可是一个已经切分好的数据集的索引。
也可传入一个split对象。
5.等等还有一些参数…具体看手册


from sklearn.model_selection import cross_val_score

clf = svm.SVC(kernel='linear', C=1)
cv = KFold(n_splits=3)
scores = cross_val_score(clf, iris.data, iris.target, cv=cv, scoring='recall_micro') 
#因为不是2分类问题,不能直接用recall,可以用'micro', 'macro', 'weighted'这3种
#'micro':通过先计算总体的TP,FN和FP的数量,再计算recall
#'macro':分布计算每个类别的recall,然后做平均(各类别recall的权重相同)
#weighted:分布计算每个类别的recall,在计算均值时乘以各类别数据所占的权重





Reference: https://scikit-learn.org/stable/modules/classes.html

最后

以上就是强健犀牛为你收集整理的Sklearn中不同的数据抽样验证方式1. 普通交叉随机抽样验证:train_test_split():2. K折交叉抽样验证:KFold():3. 分层K折抽样验证:StratifiedKFold():4. 分层随机抽样验证:StratifiedShuffleSplit(): 指标验证方式:的全部内容,希望文章能够帮你解决Sklearn中不同的数据抽样验证方式1. 普通交叉随机抽样验证:train_test_split():2. K折交叉抽样验证:KFold():3. 分层K折抽样验证:StratifiedKFold():4. 分层随机抽样验证:StratifiedShuffleSplit(): 指标验证方式:所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部