2013-03-12 12 views
19

का उपयोग करके उच्चतम भिन्नता वाले आयाम को ढूंढना मुझे डेटा के एक निश्चित सेट के उच्चतम भिन्नता वाले आयामों की पहचान करने के लिए पीसीए का उपयोग करने की आवश्यकता है। मैं इसे करने के लिए scikit-learn's pca का उपयोग कर रहा हूं, लेकिन मैं पीसीए विधि के आउटपुट से पहचान नहीं पा रहा हूं, उच्चतम भिन्नता वाले मेरे डेटा के घटक क्या हैं। ध्यान रखें कि मैं उन आयामों को खत्म नहीं करना चाहता हूं, केवल उन्हें पहचानें।विज्ञान-सीखने पीसीए

मेरा डेटा डेटा के 150 पंक्तियों के साथ एक मैट्रिक्स के रूप में व्यवस्थित किया गया है, प्रत्येक में 4 आयाम हैं। मैं इस प्रकार कर रहा हूँ:

pca = sklearn.decomposition.PCA() 
pca.fit(data_matrix) 

जब मैं प्रिंट pca.explained_variance_ratio_, यह विचरण अनुपात उच्चतम से न्यूनतम करने का आदेश दिया की एक सरणी आउटपुट, लेकिन यह मुझे नहीं बताता है डेटा से जो आयाम वे अनुरूप करने के लिए (मैंने अपने मैट्रिक्स पर कॉलम के क्रम को बदलने की कोशिश की है, और परिणामी भिन्नता अनुपात सरणी समान थी)।

मुद्रण pca.components_ मुझे एक 4x4 मैट्रिक्स (मैं पीसीए के लिए तर्क के रूप में घटकों के मूल संख्या छोड़ दिया) कुछ मूल्यों के साथ मैं की ... scikit के दस्तावेज़ के अनुसार अर्थ समझ में नहीं कर सकते हैं देता है, उन्हें होना चाहिए अधिकतम भिन्नता वाले घटक (eigenvectors शायद?), लेकिन उन मानों का आयाम का कोई संकेत नहीं है।

डेटा को ट्रांसफॉर्म करने से कोई मदद नहीं मिलती है, क्योंकि आयाम एक तरह से बदल जाते हैं, मैं वास्तव में नहीं जानता कि वे मूल रूप से कौन से थे।

क्या कोई तरीका है कि मैं इस जानकारी को विज्ञान के पीसीए के साथ प्राप्त कर सकता हूं? धन्यवाद

+1

components_'' '' की पहली पंक्ति में अधिकतम अंतर की दिशा है, प्रलेखन राज्यों के रूप में। मुझे पूरी तरह से यकीन नहीं है कि इसके बारे में अस्पष्ट क्या है। '' Index_'arianio_ratio_'' में प्रविष्टियां 'घटकों_'' की पंक्तियों से मेल खाती हैं। आपका मतलब क्या है" उन मानों का कोई संकेत नहीं है कि वे मान हैं "? –

+2

खैर, मेरी समस्या यह है कि मेरे डेटा में 4 आयाम हैं और मैं उच्च आयाम वाले 2 आयामों के साथ केवल आयाम रखना चाहता हूं, मुझे कैसे पता चलेगा कि मेरे डेटा के कौन से आयाम रखे गए होंगे यदि मैं पीसीए को लागू करता हूं n_components = 2। उदाहरण के लिए, मान लें कि मेरे डेटा के दूसरे आयाम और चौथे आयाम में उच्चतम भिन्नता है, लेकिन मुझे यह नहीं पता है। मैं पीसीए को लागू करना चाहता हूं और परिणामों से इस जानकारी को प्राप्त करने का कोई तरीका है। फिर, मुझे डेटा बदलने की जरूरत नहीं है! –

उत्तर

17

pca.explained_variance_ratio_ लौटा मुख्य घटक से भिन्नताएं हैं। आप उन्हें यह जानने के लिए उपयोग कर सकते हैं कि आपके डेटा को पीसीए द्वारा कितने आयामों (घटकों) को बेहतर रूप से परिवर्तित किया जा सकता है। आप इसके लिए थ्रेसहोल्ड का उपयोग कर सकते हैं (उदाहरण के लिए, आप गिनते हैं कि कितने भिन्नता 0.5 से अधिक हैं, दूसरों के बीच)। इसके बाद, आप आयाम (घटकों) की संख्या का उपयोग करके पीसीए द्वारा डेटा को बदल सकते हैं जो उपयोग किए गए थ्रेसहोल्ड से अधिक प्रमुख घटकों के बराबर हैं। इन आयामों में कम डेटा मूल डेटा में आयामों के डेटा से अलग है।

आप इस लिंक से कोड की जांच कर सकते हैं:

http://scikit-learn.org/dev/tutorial/statistical_inference/unsupervised_learning.html#principal-component-analysis-pca

+2

मदद करता है, लेकिन मेरी समस्या का समाधान नहीं करता है। मुझे यह जानने की ज़रूरत है कि जब मैं अपने डेटा को पीसीए के साथ बदलता हूं और उदाहरण के लिए n_components = 2 चुनता हूं तो मेरे मूल डेटा के कौन से आयाम समाप्त हो जाएंगे। इस मामले में, 2 आयामों को समाप्त किया जा रहा है, लेकिन यह जानना कि कौन से आयाम मेरी समस्या है। –

+13

पीसीए आयामों को खत्म नहीं करता है और दूसरों को मूल डेटा से रोकता है। यह आपके डेटा को कई आयामों में बदल देता है जिसका डेटा मूल से बिल्कुल अलग है। – mad

+4

हाँ, आप सही हैं। मैं फिर से पीसीए पढ़ रहा हूं, और जो मैंने कहा है उसके कारण मैं समझ नहीं पा रहा हूं। खैर, मैं आपका जवाब स्वीकार कर रहा हूँ! धन्यवाद। –

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