ट्रेन और परीक्षण डेटा के चर को राजधानी पत्र (पायथन में) का उपयोग करके क्यों परिभाषित किया गया है?


15

मुझे उम्मीद है कि यह प्रश्न इस साइट में सबसे उपयुक्त है ...

पाइथन में, आमतौर पर वर्ग नाम को उदाहरण के लिए पहले अक्षर के रूप में कैपिटल अक्षर का उपयोग करके परिभाषित किया जाता है

class Vehicle:
    ...

हालांकि, मशीन लर्निंग क्षेत्र में, अक्सर ट्रेन और परीक्षण डेटा को परिभाषित किया जाता है Xऔर Y- xऔर नहीं y। उदाहरण के लिए, मैं अब केरस पर इस ट्यूटोरियल को पढ़ रहा हूं , लेकिन यह इसके चर के रूप में Xऔर इसका उपयोग करता है Y:

from sklearn import datasets

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

इन्हें क्यों बड़े अक्षरों में परिभाषित किया गया है? क्या मशीन सीखने के क्षेत्र में कोई सम्मेलन (कम से कम पायथन में) है कि इन चरों को परिभाषित करने के लिए बड़े अक्षर का उपयोग करना बेहतर है?

या हो सकता है कि लोग मशीन लर्निंग में अपर बनाम लोअर केस वेरिएबल को अलग करते हैं?

वास्तव में एक ही ट्यूटोरियल बाद में इन चरों को निम्नलिखित की तरह अलग करता है:

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)

मुझे यकीन है कि हम में से अधिकांश के पास यह सवाल था, लेकिन मुझे पूछने के लिए बहुत मूर्खतापूर्ण महसूस हुआ। धन्यवाद :)
अंकित बिंदल

जवाबों:


20

X (और कभी-कभी Y) वैरिएबल मैट्रिसेस होते हैं।

कुछ गणित संकेतन में, वेक्टर चर नामों को निचले मामले के रूप में और मैट्रिक्स चर नामों को ऊपरी मामले के रूप में लिखना आम बात है। अक्सर ये बोल्ड होते हैं या अन्य एनोटेशन होते हैं, लेकिन यह कोड को अच्छी तरह से अनुवाद नहीं करता है। किसी भी तरह से, मेरा मानना ​​है कि अभ्यास इस संकेतन से स्थानांतरित हो गया है।

आप कोड में भी देख सकते हैं, जब लक्ष्य चर मानों का एक एकल स्तंभ है, यह लिखा है y, इसलिए आपके पास हैX, y

बेशक, इसका पायथन में कोई विशेष अर्थ नहीं है और आप इस सम्मेलन की अनदेखी करने के लिए स्वतंत्र हैं। हालाँकि, क्योंकि यह एक कन्वेंशन बन गया है, यदि आप अपना कोड साझा करते हैं तो यह बनाए रखने के लायक हो सकता है।


8

मुझे लगता है कि इसका पायथन के साथ गणित के साथ कोई लेना-देना नहीं है। 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 करें)
ब्लॅज़र्ड

1
@ बेलजार्ड: मुझे उम्मीद है कि इस मामले में कोई इस सम्मेलन का पालन करने में विफल रहा है। एमएनआईएसटी और इसी तरह के मल्टी-क्लास क्लासिफायर के साथ एक अतिरिक्त जटिलता है कि लक्ष्य चर वर्ग आईडी (एक वेक्टर) की सूची और एक-हॉट एनकोडिंग (एक मैट्रिक्स) की सूची के बीच रूप बदल सकता है।
नील स्लेटर

@NeilSlater आह कि समझ में आता है। फॉलो अप के लिए धन्यवाद।
ब्लास्ज़ार्ड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.