Perché le variabili dei dati di treno e di prova sono definite usando la lettera maiuscola (in Python)?


15

Spero che questa domanda sia la più adatta in questo sito ...

In Python, di solito il nome della classe viene definito usando la lettera maiuscola come primo carattere, ad esempio

class Vehicle:
    ...

Tuttavia, nel campo dell'apprendimento automatico, spesso i dati di treno e test sono definiti come Xe Y- non xe y. Ad esempio, ora sto leggendo questo tutorial su Keras , ma usa le variabili Xe Ycome:

from sklearn import datasets

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

Perché questi sono definiti come lettere maiuscole? Esiste una convenzione (almeno in Python) nel campo dell'apprendimento automatico secondo cui è meglio usare la lettera maiuscola per definire queste variabili?

O forse le persone distinguono le variabili maiuscole e minuscole nell'apprendimento automatico?

In effetti lo stesso tutorial in seguito distingue queste variabili come le seguenti:

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)

Sono sicuro che molti di noi avevano questa domanda, ma si sono sentiti troppo sciocchi per chiedere a Lol. Grazie :)
Ankit Bindal

Risposte:


20

Le variabili X (e talvolta Y) sono matrici.

In alcune notazioni matematiche, è pratica comune scrivere nomi di variabili vettoriali come minuscole e nomi di variabili matrice come maiuscole. Spesso questi sono in grassetto o hanno altre annotazioni, ma ciò non si traduce bene in codice. Ad ogni modo, credo che la pratica sia passata da questa notazione.

Puoi anche notare nel codice, quando la variabile target è una singola colonna di valori, è scritta y, quindi haiX, y

Naturalmente, questo non ha alcun significato semantico speciale in Python e sei libero di ignorare la convenzione. Tuttavia, poiché è diventata una convenzione, può valere la pena mantenerla se condividi il tuo codice.


8

Penso che questo non abbia nulla a che fare con Python ma con la matematica. X è una matrice e y è un vettore (il più delle volte). Di solito le lettere maiuscole sono usate per le matrici e le lettere minuscole sono usate per i vettori.

Ecco perché spesso vedi qualcosa del genere ( dagli esempi di sklearn ):

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

o quello (dallo stesso esempio):

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)

Qui X_red è una matrice mxn (maiuscolo) e x_min è un vettore (minuscolo) di lunghezza n.


Ah, ha senso. Me ne sono dimenticato. Ma allora perché è Yanche maiuscolo nonostante sia un vettore? ( Y.shaperitorna (1797,), FYI)
Blaszard

1
@Blaszard: mi aspetto che in quel caso qualcuno non abbia seguito la convenzione. Con MNIST e simili classificatori multi-classe c'è un'ulteriore complicazione in quanto la variabile target può cambiare forma tra un elenco di ID di classe (un vettore) e un elenco di codifiche a una sola (una matrice).
Neil Slater,

@NeilSlater Ah, questo ha senso. Grazie per il follow-up.
Blaszard,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.