最近,我开始学习滑雪,并无意中发现了层次感
ShuffleSplit函数尽管我理解它的概念和它的意义,但我不太理解它需要运行的参数,比如n_split。根据sklearn的文档,它被写成
n_splits : int,默认的10次重新洗牌和分裂迭代。
我最好的猜测是,它告诉StratifieShufflesplit函数,数据中有starta的数目。
发布于 2018-06-09 08:09:50
n_splits
是几乎每个交叉验证器的参数。通常,它确定要创建多少不同的验证(和培训)集。如果使用StratifiedShuffleSplit
,则不表示地层的数量--这是从数据集中分类目标的基本相对频率中隐含的。
参见下面引用的官方文档(完整链接这里)
StratifiedShuffleSplit StratifiedShuffleSplit是ShuffleSplit的一个变体,它返回分层分裂,即通过为每个目标类保留与完整集合中相同的百分比来创建分割。
发布于 2020-01-13 15:30:47
对于StratifiedShuffleSplit,“n_split”指定了按“test_size”中提到的比例从每个层中采样数据的次数。
示例:这是一个包含4个层的数据集的示例,每个层包含3个记录。n_split=3和test_size=0.3给出了:
测试数据来自每一层记录,总体上有30%的数据集记录,即每12个层中有4个记录。
---Example dataset---
df
ProductName Quantities
0 Mobile 20
1 Mobile 15
2 Mobile 12
3 PC 10
4 PC 8
5 PC 9
6 Tablet 5
7 Tablet 3
8 Tablet 4
9 RasPi 2
10 RasPi 1
11 RasPi 3
from sklearn.model_selection import StratifiedShuffleSplit
split = StratifiedShuffleSplit(n_splits=3,test_size=0.3,random_state=42)
for train_index,test_index in split.split(df,df['ProductName']):
split_train = df.loc[train_index]
split_test = df.loc[test_index]
print("train:")
print(split_train)
print("test:")
print(split_test)
---split_1---
train:
ProductName Quantities
5 PC 9
8 Tablet 4
0 Mobile 20
9 RasPi 2
10 RasPi 1
4 PC 8
1 Mobile 15
7 Tablet 3
test:
ProductName Quantities
2 Mobile 12
3 PC 10
11 RasPi 3
6 Tablet 5
---split_2---
train:
ProductName Quantities
7 Tablet 3
3 PC 10
2 Mobile 12
8 Tablet 4
9 RasPi 2
11 RasPi 3
1 Mobile 15
5 PC 9
test:
ProductName Quantities
4 PC 8
0 Mobile 20
6 Tablet 5
10 RasPi 1
---split_3---
train:
ProductName Quantities
2 Mobile 12
9 RasPi 2
11 RasPi 3
3 PC 10
0 Mobile 20
6 Tablet 5
8 Tablet 4
4 PC 8
test:
ProductName Quantities
5 PC 9
7 Tablet 3
1 Mobile 15
10 RasPi 1
https://stackoverflow.com/questions/50772949
复制相似问题