train_test_split()的各参数详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了train_test_split()的各参数详解相关的知识,希望对你有一定的参考价值。

参考技术A from sklearn.model_selection import train_test_split

x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.3,random_state=0)

x:样本特征集

y:样本的标签集

test_size:样本占比,测试集占数据集的比重,如果是整数的话就是样本的数量

random_state:是随机数的种子。在同一份数据集上,相同的种子产生相同的结果,不同的种子产生不同的划分结果

x_train,y_train:构成了训练集

x_test,y_test:构成了测试集

我是一只不会南飞的燕!

sklearn 的 train_test_split 中的 random_state 参数

【中文标题】sklearn 的 train_test_split 中的 random_state 参数【英文标题】:random_state parameter in sklearn's train_test_split 【发布时间】:2019-03-25 07:42:01 【问题描述】:

不同的随机状态值对输出有什么不同?例如,如果我设置为 0,如果我设置为 100,它会对输出产生什么影响?

【问题讨论】:

【参考方案1】:

来自docs:

random_state 是随机数生成器使用的种子。

一般来说,种子用于创建可重现的输出。在train_test_split 的情况下,random_state 确定您的数据集如何拆分。 除非您想创建可重现的运行,否则可以跳过此参数。

例如,如果设置为 0,如果我设置为 100,会有什么区别 制作到输出?

对于特定种子,您将始终获得相同的训练/测试拆分。不同的种子将导致不同的训练/测试拆分。

【讨论】:

【参考方案2】:

将不同的整数传递给random_state 使用这些值和makes the resulting "random" train and test data reproducible 为NumPy 的伪随机数生成器提供种子。这意味着,如果您将函数数组 arandom_seed=0 一起传递,则使用该 0 种子值将始终产生相同的训练和测试数据。

当您传递一个整数时,该值最终会传递给scklearn.utils.check_random_state(),变为:

if isinstance(seed, (numbers.Integral, np.integer)):
    return np.random.RandomState(seed)

这又被 ShuffleSplit 之类的类用来调用随机排列:

rng = check_random_state(self.random_state)
for i in range(self.n_splits):
    # random partition
    permutation = rng.permutation(n_samples)
    ind_test = permutation[:n_test]
    ind_train = permutation[n_test:(n_test + n_train)]
    yield ind_train, ind_test

这是一个使用实际使用方法的示例:

>>> np.random.RandomState(0).permutation([1, 4, 9, 12, 15])
array([ 9,  1,  4, 12, 15])
>>> np.random.RandomState(0).permutation([1, 4, 9, 12, 15])
array([ 9,  1,  4, 12, 15])
>>> np.random.RandomState(0).permutation([1, 4, 9, 12, 15])
array([ 9,  1,  4, 12, 15])
>>> np.random.RandomState(100).permutation([1, 4, 9, 12, 15])
array([ 4,  9, 12, 15,  1])
>>> np.random.RandomState(100).permutation([1, 4, 9, 12, 15])
array([ 4,  9, 12, 15,  1])
>>> np.random.RandomState(100).permutation([1, 4, 9, 12, 15])
array([ 4,  9, 12, 15,  1])

【讨论】:

以上是关于train_test_split()的各参数详解的主要内容,如果未能解决你的问题,请参考以下文章

C#进阶系列——WebApi 接口参数不再困惑:传参详解

WebApi 接口参数不再困惑:传参详解

WebApi 接口参数不再困惑:传参详解

C#进阶系列——WebApi 接口参数不再困惑:传参详解

Java有参构造方法和无参构造方法详解

函数参数详解