1 parâmetros importantes
train_test_split
Funçã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_state
Parâmetros: Fornece o gerador de números aleatórios para usar
- 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. - 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:
- Documentação oficial do RandomState
- O significado do parâmetro random_state no modelo python sklearn
-
- 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.
- Uma instância numpy.random.RandomState
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)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)
train_test_split(y, shuffle=False)
[[0, 1, 2], [3, 4]]
3 nota
- 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.
- 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.
- 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).
- 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: