Explicação detalhada dos parâmetros train_test_split do Sklearn

1 parâmetros importantes

train_test_splitFunção:
Divide um array ou matriz em conjuntos de treinamento e teste

sklearn.model_selection.train_test_split
(*arrays, test_size=None, 
train_size=None, random_state=None, 
shuffle=True, stratify=None)
***参数***
# *arrays:sequence of indexables with same length / shape[0]
# 具有相同行数的可索引的序列(可以是lists|numpy arrays|scipy-sparse matrices|pandas dataframes)
# test_size:float or int, default=None
# 测试集大小(如果是float:0-1之间|如果是整数,代表测试集的样本数量|如果为None,就看train_size,如果train_size也没有,默认设置为0.25)
# train_sizefloat or int, default=None
# 训练集大小(如果是float:0-1之间|如果是整数,代表测试集的样本数量|如果为None,就看test_size)
# random_state,int, RandomState instance or None, default=None
# 随机数:在对数据分割之前设置数据的打断方式,在多个函数调用之间传递一个可重复输出的int
# shuffle,bool, default=True
# 是否在数据分割前打乱数据,If shuffle=False then stratify must be None.
# stratify:array-like, default=None
# 分层,不经常用,如果不是“无”,则以分层方式拆分数据,并将其用作类标签。阅读《用户指南》中的更多内容。

random_stateParâmetros: Fornece o gerador de números aleatórios para usar

  1. Nenhum (padrão)
    usa a instância de estado aleatório global de numpy.random. Chamar a função várias vezes reutilizará a mesma instância e produzirá resultados diferentes.
  2. Um inteiro
    Use um novo gerador de números aleatórios propagado pelo inteiro fornecido Um inteiro
    Use um novo gerador de números aleatórios propagado pelo inteiro fornecido. **Usar um int produzirá o mesmo resultado em diferentes chamadas. **No entanto, vale a pena verificar se seus resultados são estáveis ​​em muitas sementes aleatórias diferentes. As sementes aleatórias inteiras populares são 0 e 42. Valores inteiros devem estar no intervalo [0, 2^32-1].

O gerador de números aleatórios usado pelo Sklearn é o gerador de números pseudo-aleatórios Mersenne Twister
Link de referência:

insira a descrição da imagem aqui

    1. Uma instância numpy.random.RandomState
      usando o estado aleatório fornecido, afetando apenas outros usuários da mesma instância de estado aleatório. Chamar uma função várias vezes reutilizará a mesma instância e produzirá resultados diferentes.

valor de retorno

# splitting:list, length=2 * len(arrays)
# 包含训练-测试的列表

2 exemplos

import numpy as np
from sklearn.model_selection import train_test_split
X, y = np.arange(10).reshape((5, 2)), range(5)

insira a descrição da imagem aqui

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)

insira a descrição da imagem aqui

train_test_split(y, shuffle=False)
[[0, 1, 2], [3, 4]]

3 nota

  1. Quando shuffle=True e random_state é um inteiro, os subconjuntos divididos são subconjuntos fora de ordem.Se o valor de random_state permanecer inalterado, o conjunto de dados obtido para cada execução permanecerá inalterado.
  2. Quando shuffle=True e random_state=None, os subconjuntos divididos são subconjuntos fora de ordem e o conjunto de dados de cada execução muda.
  3. Quando shuffle=False, não importa se o random_state é um valor fixo ou não, ele não afetará o resultado da divisão, e a divisão resulta em subconjuntos sequenciais (não muda a cada vez).
  4. Para garantir que os dados sejam perturbados e a divisão de cada experimento seja consistente, é necessário apenas definir random_state como um número inteiro (0-42) e o valor padrão na função shuffle é True (nota: a diferença na seleção random_state afetará a precisão do modelo )

Link de aprendizado:

Acho que você gosta

Origin blog.csdn.net/weixin_45913084/article/details/130062441
Recomendado
Clasificación