Python - sklearn 拆分数据集为训练和测试子集 sklearn.model_selection.train_test_split()
功能:
将数组或矩阵拆分为随机的训练子集和测试子集 。
输入和输出:
输入:
-
arrays
: 具有相同长度的可索引序列,x-y的映射(sequence of indexables with same length / shape[0])。 -
test_size
(optional ) : float, int or None, (default=None)- 如果为float,则应介于
0.0
和1.0
之间,并表示要包含在测试拆分中的数据集的比例。 - 如果是int,则表示测试样本的绝对数量。
- 如果为None,则将该值设置为
train_size
的补码。如果train_size
也是None,则将其设置为0.25。
- 如果为float,则应介于
-
train_size
: float, int, or None, (default=None)- 如果为float,则应介于
0.0
和1.0
之间,并表示要包含在列车拆分中的数据集的比例。 - 如果是int,则表示测试集大小的绝对数量。
- 如果为None,则该值自动设置为
test_size
的补码。
- 如果为float,则应介于
-
random_state
(optional) : int, RandomState instance or None, (default=None)- 如果是int,则
random_state
是随机数生成器使用的种子。 - 如果是RandomState instance,则
random_state
是随机数生成器。 - 如果为None,则随机数生成器是由其使用的RandomState实例
np.random
。
- 如果是int,则
-
shuffle
(optional) : bool类型,(default = True)是否在拆分之前对数据打乱。如果
shuffle
=False
,则stratify
必须为None
。 -
stratify
: array-like or None (default=None)如果不是
None
,则数据以分层方式拆分,使用此作为类标签。
输出:
-
splitting
: list类型, length=2 * len(arrays)包含划分好的训练子集和测试子集的列表。
示例:
初始化输入:
>>> import numpy as np
>>> from sklearn.model_selection import train_test_split
>>> X, y = np.arange(10).reshape((5, 2)), range(5)
>>> X
array([[0, 1],
[2, 3],
[4, 5],
[6, 7],
[8, 9]])
>>> list(y)
[0, 1, 2, 3, 4]
划分训练集和测试集 (shuffle = default = True
):
>>> X_train, X_test, y_train, y_test = train_test_split(
... X, y, test_size=0.33, random_state=42)
...
>>> X_train
array([[4, 5],
[0, 1],
[6, 7]])
>>> y_train
[2, 0, 3]
>>> X_test
array([[2, 3],
[8, 9]])
>>> y_test
[1, 4]
shuffle=False
的划分方式
>>> train_test_split(y, shuffle=False)
[[0, 1, 2], [3, 4]]