Tren ve test verisi değişkenleri neden büyük harf (Python'da) kullanılarak tanımlanıyor?


15

Umarım bu soru bu sitedeki en uygun sorudur ...

Python'da genellikle sınıf adı ilk harfi büyük harf kullanılarak tanımlanır, örneğin

class Vehicle:
    ...

Bununla birlikte, makine öğrenme alanında, çoğu kez tren ve test verisi olarak tanımlanan Xve Y- değil xve y. Örneğin, şimdi bu öğreticiyi Keras'ta okuyorum , ancak değişkenlerini Xve Yolarak kullanıyor :

from sklearn import datasets

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

Bunlar neden büyük harfler olarak tanımlanıyor? Makine öğrenimi alanı arasında bu değişkenleri tanımlamak için büyük harf kullanmanın daha iyi olduğuna dair herhangi bir kural (en azından Python'da) var mı?

Ya da insanlar makine öğreniminde büyük ve küçük harf değişkenlerini ayırt ediyor olabilir mi?

Aslında aynı öğretici daha sonra bu değişkenleri aşağıdaki gibi ayırt eder:

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)

Eminim çoğumuz bu soru vardı ama lol sormak için çok aptal hissettim. Teşekkürler :)
Ankit Bindal

Yanıtlar:


20

X (ve bazen Y) değişkenleri matrislerdir.

Bazı matematik notasyonlarında, vektör değişken adlarını küçük harf ve matris değişken adlarını büyük harf olarak yazmak yaygın bir uygulamadır. Genellikle bunlar kalın harflerle yazılmıştır veya başka ek açıklamalara sahiptir, ancak bu kodlamaya iyi bir şekilde dönüşmez. Her iki durumda da uygulamanın bu notasyondan aktarıldığına inanıyorum.

Kodda, hedef değişken değerlerin tek bir sütunu olduğunda, yazıldığından da fark edebilirsiniz y, böyleceX, y

Tabii ki, bunun Python'da özel bir anlamsal anlamı yoktur ve konvansiyonu görmezden gelebilirsiniz. Bununla birlikte, bu bir kongre haline geldiğinden, kodunuzu paylaşırsanız sürdürmeye değer olabilir.


8

Bunun Python ile değil, matematikle ilgisi olduğunu düşünüyorum. X bir matristir ve y bir vektördür (çoğu zaman). Genellikle matrisler için büyük harfler ve vektörler için küçük harfler kullanılır.

Bu yüzden sıklıkla böyle bir şey görürsünüz ( sklearn örneklerinden ):

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

veya bu (aynı örnekten):

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)

Burada X_red, bir mxn matrisidir (büyük harf) ve x_min, n uzunluğunda bir vektördür (küçük harf).


Ah bu mantıklı. Bunu unuttum. Peki Ybir vektör olmasına rağmen neden büyük harf? ( Y.shapedöner (1797,), FYI)
Blaszard

1
@Blaszard: Bu durumda birinin sözleşmeyi takip etmeyi başaramadığını düşünüyorum. MNIST ve benzer çok sınıflı sınıflandırıcılar ile, hedef değişkenin bir sınıf kimlikleri listesi (bir vektör) ve bir sıcak kodlamalar listesi (bir matris) arasında form değiştirebilmesi nedeniyle ek bir karmaşıklık vardır.
Neil Slater

@NeilSlater Ah bu mantıklı. Takip ettiğiniz için teşekkürler.
Blaszard
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.