¿Por qué las variables de tren y datos de prueba se definen usando la letra mayúscula (en Python)?

15

Espero que esta pregunta sea la más adecuada en este sitio ...

En Python, por lo general, el nombre de la clase se define utilizando la letra mayúscula como primer carácter, por ejemplo

class Vehicle:
    ...

Sin embargo, en el campo del aprendizaje automático, a menudo los datos de entrenamiento y prueba se definen como Xy Y- no xy y. Por ejemplo, ahora estoy leyendo este tutorial sobre Keras , pero usa el Xy Ycomo sus variables:

from sklearn import datasets

mnist = datasets.load_digits()
X = mnist.data
Y = mnist.target

¿Por qué se definen como letras mayúsculas? ¿Existe alguna convención (al menos en Python) entre el campo de aprendizaje automático de que es mejor usar la letra mayúscula para definir estas variables?

¿O tal vez las personas distinguen las variables mayúsculas y minúsculas en el aprendizaje automático?

De hecho, el mismo tutorial luego distingue estas variables como las siguientes:

from sklearn.cross_validation import train_test_split

train_X, test_X, train_y, test_y = train_test_split(X, Y, train_size=0.7, random_state=0)
Blaszard
fuente
Estoy seguro de que la mayoría de nosotros tenía esta pregunta, pero me sentí demasiado tonto para preguntar jajaja. Gracias :)
Ankit Bindal

Respuestas:

20

Las variables X (y a veces Y) son matrices.

En alguna notación matemática, es una práctica común escribir nombres de variables vectoriales como minúsculas y nombres de variables matriciales como mayúsculas. A menudo, estos están en negrita o tienen otra anotación, pero eso no se traduce bien en código. De cualquier manera, creo que la práctica se ha transferido de esta notación.

También puede observar en el código, cuando la variable de destino es una sola columna de valores, se escribe y, por lo que tieneX, y

Por supuesto, esto no tiene un significado semántico especial en Python y eres libre de ignorar la convención. Sin embargo, debido a que se ha convertido en una convención, puede valer la pena mantenerlo si comparte su código.

Neil Slater
fuente
8

Creo que esto no tiene nada que ver con Python sino con las matemáticas. X es una matriz e y es un vector (la mayoría de las veces). Por lo general, las letras mayúsculas se usan para matrices y las letras minúsculas se usan para vectores.

Es por eso que a menudo ves algo como esto ( de ejemplos de sklearn ):

digits = datasets.load_digits(n_class=10)
X = digits.data
y = digits.target

o eso (del mismo ejemplo):

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)

Aquí X_red es una matriz mxn (mayúscula) y x_min es un vector (minúscula) de longitud n.

stmax
fuente
Ah eso tiene sentido. Me habia olvidado de eso. Pero entonces, ¿por qué Ytambién es mayúscula a pesar de que es un vector? ( Y.shapevuelve (1797,), para su información)
Blaszard
1
@Blaszard: espero que en ese caso alguien no haya seguido la convención. Con MNIST y clasificadores de clases múltiples similares, existe una complicación adicional en el sentido de que la variable objetivo puede cambiar de forma entre una lista de identificadores de clase (un vector) y una lista de codificaciones únicas (una matriz).
Neil Slater
@NeilSlater Ah, eso tiene sentido. Gracias por el seguimiento.
Blaszard