2013-11-15 7 views
6

प्रदर्शन करने से पहले और बाद में डेटा का आयाम मैं पाइथन और विज्ञान-सीखने का उपयोग कर kaggle.com's digit recognizer competition का प्रयास कर रहा हूं।पीसीए

प्रशिक्षण डेटा से लेबल हटाने के बाद, मैं इस प्रकार की सूची में सीएसवी में प्रत्येक पंक्ति जोड़ें:

for row in csv: 
    train_data.append(np.array(np.int64(row))) 

मैं परीक्षण डाटा के लिए भी ऐसा ही।

मैं पूर्व प्रक्रिया आदेश आयाम कमी प्रदर्शन करने में पीसीए के साथ इस डेटा (और सुविधा निष्कर्षण?):

def preprocess(train_data, test_data, pca_components=100): 
    # convert to matrix 
    train_data = np.mat(train_data) 

    # reduce both train and test data 
    pca = decomposition.PCA(n_components=pca_components).fit(train_data) 
    X_train = pca.transform(train_data) 
    X_test = pca.transform(test_data) 

    return (X_train, X_test) 

मैं तो एक KNN वर्गीकारक बना सकते हैं और X_train डेटा के साथ फिट और का उपयोग कर भविष्यवाणी करने X_test डेटा।

इस विधि का उपयोग करके मुझे लगभग 97% सटीकता मिल सकती है।

मेरा प्रश्न से पहले डेटा के आयामी स्वरूप के बारे में है और बाद पीसीए

किया जाता है train_data और X_train के आयाम क्या हैं?

घटकों की संख्या आउटपुट की आयाम को कैसे प्रभावित करती है? क्या ये एक ही चीज हैं?

उत्तर

11

PCA एल्गोरिदम डेटा के कॉन्वर्सिस मैट्रिक्स के eigenvectors पाता है। Eigenvectors क्या हैं? कोई नहीं जानता, और कोई परवाह नहीं करता (बस मजाक कर रहा है!)। महत्वपूर्ण बात यह है कि पहला ईजिनवेक्टर एक वेक्टर है जो दिशा के समानांतर होता है जिसके साथ डेटा का सबसे बड़ा भिन्नता (सहजता से: फैलता है) होता है। दूसरा दूसरा अधिकतम प्रसार के मामले में दूसरी सबसे अच्छी दिशा को दर्शाता है, और इसी तरह। एक और महत्वपूर्ण तथ्य यह है कि ये वेक्टर एक दूसरे के लिए ऑर्थोगोनल हैं, इसलिए वे basis बनाते हैं।

pca_components पैरामीटर एल्गोरिथ्म कितने सबसे अच्छा आधार वैक्टर आप कर रहे हैं में रुचि रखते बताता है तो, अगर आप 100 पारित मतलब है कि यह आप 100 आधार वैक्टर का वर्णन प्राप्त करना चाहते हैं (सांख्यिकीविद् कहेंगे: समझाने)। के सबसे आपके डेटा का अंतर।

transform समारोह रूपांतरण (srsly ?;)) के आधार पर चुना पीसीए घटकों (इस उदाहरण में द्वारा गठित करने के लिए मूल आधार से डेटा - पहली सबसे अच्छा100 वैक्टर)। आप इसे घुमाए जाने वाले बिंदुओं के बादल के रूप में देख सकते हैं और इसके कुछ आयामों को अनदेखा कर सकते हैं। टिप्पणियों में Jaime द्वारा सही ढंग से इंगित किया गया है, यह नए आधार पर projecting the data के बराबर है।

3 डी मामले के लिए, यदि आप पहले 2 ईजीनवेक्टर का आधार प्राप्त करना चाहते थे, तो फिर, 3 डी पॉइंट क्लाउड पहले घुमाया जाएगा, इसलिए सबसे भिन्नता समन्वय अक्षों के समानांतर होगी। फिर, धुरी जहां भिन्नता सबसे छोटी है, आपको 2 डी डेटा के साथ छोड़ दिया जा रहा है।

तो, सीधे अपने प्रश्न का उत्तर देने के लिए: हाँ, वांछित पीसीए घटकों की संख्या आउटपुट डेटा (परिवर्तन के बाद) की आयामता है।

संबंधित मुद्दे