Por que as variáveis ​​dos dados de treinamento e teste são definidas usando a letra maiúscula (em Python)?
Espero que esta pergunta seja a mais adequada neste site ...
Em Python, geralmente o nome da classe é definido usando a letra maiúscula como seu primeiro caractere, por exemplo
No entanto, no campo de aprendizado de máquina, muitas vezes os dados de treinamento e teste são definidos como Xe Y- não xe y. Por exemplo, agora estou lendo este tutorial no Keras , mas ele usa as Xe Ycomo suas variáveis:
Por que estes são definidos como letras maiúsculas? Existe alguma convenção (pelo menos em Python) no campo de aprendizado de máquina de que é melhor usar a letra maiúscula para definir essas variáveis?
Ou talvez as pessoas distinguam as variáveis ​​maiúsculas e minúsculas no aprendizado de máquina?
De fato, o mesmo tutorial posteriormente distingue essas variáveis ​​da seguinte maneira:
train_X, test_X, train_y, test_y = train_test_split(X, Y, train_size=0.7, random_state=0)
Tenho certeza que a maioria de nós fez essa pergunta, mas me senti muito boba para perguntar lol. Obrigado :)
— Ankit Bindal 14/03
As variáveis ​​X (e algumas vezes Y) são matrizes.
Em algumas notações matemáticas, é prática comum escrever nomes de variáveis ​​de vetor como minúsculas e nomes de variáveis ​​de matriz como maiúsculas. Geralmente, eles estão em negrito ou têm outras anotações, mas isso não se traduz bem no código. De qualquer maneira, acredito que a prática foi transferida dessa notação.
Você também pode observar no código, quando a variável de destino é uma única coluna de valores, ela é gravada y, então você temX, y
Obviamente, isso não tem significado semântico especial no Python e você é livre para ignorar a convenção. No entanto, como se tornou uma convenção, pode valer a pena mantê-lo se você compartilhar seu código.
Eu acho que isso não tem nada a ver com Python, mas com matemática. X é uma matriz e y é um vetor (na maioria das vezes). Normalmente, letras maiúsculas são usadas para matrizes e letras minúsculas são usadas para vetores.
É por isso que você costuma ver algo assim ( nos exemplos do sklearn ):
ou que (do mesmo exemplo):
x_min, x_max = np.min(X_red, axis=0), np.max(X_red, axis=0)
X_red = (X_red - x_min) / (x_max - x_min)
Aqui X_red é uma matriz mxn (maiúscula) e x_min é um vetor (minúscula) de comprimento n.
Ah, isso faz sentido. Eu esqueci sobre isto. Mas então por que Ytambém é maiúsculo, apesar de ser um vetor? ( Y.shaperetornos (1797,), FYI)
— Blaszard 15/03
@Blaszard: Espero que nesse caso alguém tenha falhado em seguir a convenção. Com o MNIST e classificadores multi-classe semelhantes, há uma complicação adicional, pois a variável de destino pode mudar de forma entre uma lista de IDs de classe (um vetor) e uma lista de codificações one-hot (uma matriz).