Mengapa variabel data kereta dan uji didefinisikan menggunakan huruf kapital (dengan Python)?

14

Saya harap pertanyaan ini adalah yang paling cocok di situs ini ...

Dalam Python, biasanya nama kelas didefinisikan menggunakan huruf kapital sebagai karakter pertama, misalnya

class Vehicle:
    ...

Namun, dalam bidang pembelajaran mesin, sering kali melatih dan menguji data didefinisikan sebagai Xdan Y- bukan xdan y. Sebagai contoh, saya sekarang membaca tutorial ini di Keras , tetapi ia menggunakan Xdan Ysebagai variabel-variabelnya:

from sklearn import datasets

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

Mengapa ini didefinisikan sebagai huruf kapital? Apakah ada konvensi (setidaknya dalam Python) di antara bidang pembelajaran mesin bahwa lebih baik menggunakan huruf kapital untuk mendefinisikan variabel-variabel ini?

Atau mungkin orang membedakan variabel huruf besar dan kecil dalam pembelajaran mesin?

Bahkan tutorial yang sama kemudian membedakan variabel-variabel ini seperti yang berikut:

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
sumber
Saya yakin sebagian besar dari kita memiliki pertanyaan ini tetapi merasa terlalu bodoh untuk bertanya lol. Terima kasih :)
Ankit Bindal

Jawaban:

19

Variabel X (dan kadang-kadang Y) adalah matriks.

Dalam beberapa notasi matematika, adalah praktik umum untuk menulis nama variabel vektor sebagai huruf kecil dan nama variabel matriks sebagai huruf besar. Seringkali ini dicetak tebal atau memiliki anotasi lain, tetapi itu tidak diterjemahkan dengan baik ke kode. Either way, saya percaya bahwa latihan telah ditransfer dari notasi ini.

Anda juga dapat melihat dalam kode, ketika variabel target adalah satu kolom nilai, itu ditulis y, jadi Anda milikiX, y

Tentu saja, ini tidak memiliki makna semantik khusus dalam Python dan Anda bebas untuk mengabaikan konvensi. Namun, karena sudah menjadi konvensi, mungkin perlu dipertahankan jika Anda membagikan kode Anda.

Neil Slater
sumber
8

Saya pikir ini tidak ada hubungannya dengan Python tetapi dengan matematika. X adalah matriks dan y adalah vektor (sebagian besar waktu). Biasanya huruf besar digunakan untuk matriks dan huruf kecil digunakan untuk vektor.

Itu sebabnya Anda sering melihat sesuatu seperti ini ( dari contoh sklearn ):

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

atau itu (dari contoh yang sama):

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)

Di sini X_red adalah matriks mxn (huruf besar) dan x_min adalah vektor (huruf kecil) dengan panjang n.

stmax
sumber
Ah itu masuk akal. Saya lupa tentang itu. Tapi mengapa Yjuga huruf besar meskipun vektor? ( Y.shapepengembalian (1797,), FYI)
Blaszard
1
@Laszard: Saya berharap dalam hal ini seseorang gagal mengikuti konvensi. Dengan MNIST dan pengklasifikasi multi-kelas serupa ada komplikasi tambahan di mana variabel target dapat mengubah bentuk antara daftar id kelas (vektor) dan daftar pengkodean satu-panas (matriks).
Neil Slater
@NeilSlater Ah itu masuk akal. Terima kasih atas tindak lanjutnya.
Blaszard