ทำไมตัวแปรของข้อมูลรถไฟและการทดสอบถูกกำหนดโดยใช้อักษรตัวใหญ่ (เป็น Python)


15

ฉันหวังว่าคำถามนี้เหมาะสมที่สุดในเว็บไซต์นี้ ...

ใน Python โดยปกติชื่อคลาสจะถูกกำหนดโดยใช้อักษรตัวใหญ่เป็นอักขระตัวแรก

class Vehicle:
    ...

อย่างไรก็ตามในด้านการเรียนรู้เครื่องบ่อยครั้งการฝึกอบรมและการทดสอบข้อมูลที่จะถูกกำหนดเป็นXและY- ไม่ได้และx yตัวอย่างเช่นตอนนี้ฉันกำลังอ่านบทช่วยสอนนี้บน Kerasแต่มันใช้XและYเป็นตัวแปร:

from sklearn import datasets

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

ทำไมสิ่งเหล่านี้ถูกนิยามเป็นตัวพิมพ์ใหญ่? มีการประชุมใด (อย่างน้อยใน Python) ในสาขาการเรียนรู้ของเครื่องว่าควรใช้ตัวพิมพ์ใหญ่เพื่อกำหนดตัวแปรเหล่านี้หรือไม่?

หรือบางทีคนก็แยกแยะความแตกต่างระหว่างตัวแปรตัวพิมพ์เล็กและตัวพิมพ์เล็กในการเรียนรู้ของเครื่อง?

ในความเป็นจริงการสอนเดียวกันภายหลังแยกตัวแปรเหล่านี้ดังนี้:

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)

ฉันแน่ใจว่าพวกเราส่วนใหญ่มีคำถามนี้ แต่รู้สึกโง่เกินกว่าจะถามฮ่า ๆ ๆ ขอบคุณ :)
Ankit Bindal

คำตอบ:


20

ตัวแปร X (และบางครั้ง Y) เป็นเมทริกซ์

ในสัญกรณ์คณิตศาสตร์บางอย่างมันเป็นเรื่องธรรมดาที่จะเขียนชื่อตัวแปรเวกเตอร์เป็นตัวพิมพ์เล็กและชื่อตัวแปรเมทริกซ์เป็นตัวพิมพ์ใหญ่ บ่อยครั้งที่สิ่งเหล่านี้เป็นตัวหนาหรือมีคำอธิบายประกอบอื่น ๆ แต่ก็แปลได้ไม่ดีนัก ไม่ว่าจะด้วยวิธีใดฉันเชื่อว่าการฝึกฝนได้เปลี่ยนจากสัญลักษณ์นี้

คุณอาจสังเกตเห็นในรหัสเมื่อตัวแปรเป้าหมายเป็นคอลัมน์เดียวของค่ามันเขียนyดังนั้นคุณมีX, y

แน่นอนว่านี่ไม่มีความหมายพิเศษใน Python และคุณมีอิสระที่จะเพิกเฉยต่อการประชุม อย่างไรก็ตามเนื่องจากเป็นแบบแผนจึงอาจคุ้มค่าหากคุณแบ่งปันรหัสของคุณ


8

ฉันคิดว่านี่ไม่เกี่ยวกับ Python แต่กับคณิตศาสตร์ X คือเมทริกซ์และ y เป็นเวกเตอร์ (ส่วนใหญ่) โดยปกติตัวอักษรตัวพิมพ์ใหญ่จะใช้สำหรับเมทริกซ์และตัวอักษรตัวพิมพ์เล็กจะใช้สำหรับเวกเตอร์

นั่นเป็นเหตุผลที่คุณมักเห็นสิ่งนี้ ( จากตัวอย่างที่ผิดพลาด ):

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

หรือว่า (จากตัวอย่างเดียวกัน):

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)

นี่คือ X_red เมทริกซ์ mxn (ตัวพิมพ์ใหญ่) และ x_min เป็นเวกเตอร์ (ตัวพิมพ์เล็ก) ที่มีความยาว n


อานั่นทำให้รู้สึก ฉันลืมไปแล้ว แต่ทำไมYตัวพิมพ์ใหญ่ถึงยังเป็นเวกเตอร์ด้วย? ( Y.shapeส่งคืน(1797,)FYI)
Blaszard

1
@Blaszard: ฉันคาดว่าในกรณีที่มีคนล้มเหลวในการปฏิบัติตามการประชุม ด้วย MNIST และตัวแยกประเภทหลายคลาสที่คล้ายกันจะมีความซับซ้อนเพิ่มขึ้นซึ่งตัวแปรเป้าหมายสามารถเปลี่ยนรูปแบบระหว่างรายการของรหัสคลาส (เวกเตอร์) และรายการของการเข้ารหัสหนึ่งครั้งที่ร้อนแรง (เมทริกซ์)
Neil Slater

@ NeilSlater Ah ที่เหมาะสม ขอบคุณสำหรับการติดตาม
Blaszard
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.