2014-04-25 12 views
22

छोड़ दिया गया है, मैं आयामों के एक मैट्रिक्स पर एक पीसीए चलाने की कोशिश कर रहा हूं एम एक्स एन जहां एम सुविधाओं की संख्या है और एन नमूने की संख्या है।सुविधाओं में कमी के लिए विज्ञान-सीखने पीसीए का उपयोग कैसे करें और जानें कि कौन सी विशेषताओं को

मान लीजिए कि मैं अधिकतम भिन्नता वाले nf सुविधाओं को संरक्षित करना चाहता हूं। scikit-learn के साथ मैं इस तरह से यह करने के लिए कर रहा हूँ:

from sklearn.decomposition import PCA 

nf = 100 
pca = PCA(n_components=nf) 
# X is the matrix transposed (n samples on the rows, m features on the columns) 
pca.fit(X) 

X_new = pca.transform(X) 

अब, मैं एक नया मैट्रिक्स X_new एन एक्स एनएफ का एक आकार है कि मिलता है। क्या यह जानना संभव है कि कौन सी विशेषताओं को त्याग दिया गया है या बनाए रखा गया है?

धन्यवाद

+3

फ़ीचर खारिज नहीं कर रहे हैं वे छोटे आयाम का अनुमान और विभिन्न सुविधाओं के बीच दिलचस्प कनेक्शन प्रकट करने के लिए लगता है कि कर रहे हैं। –

+0

धन्यवाद टॉम, मैं सोच रहा था कि पीसीए का उपयोग फीचर चयन के लिए किया जा सकता है, लेकिन (अगर मैं गलत हूं तो सही) इसका उपयोग केवल मुख्य घटकों पर डेटा को पुन: सहेजने के लिए किया जाता है। जैसा कि आप इसे पढ़ते हैं, मुझे लगता है कि मैं सवाल बंद कर दूंगा। – gc5

+1

आपका आउटपुट मैट्रिक्स आकार '(एन, एनएफ) 'होना चाहिए, न कि' (एनएफ, एन) '। – eickenberg

उत्तर

24

फिटिंग के दौरान आपकी PCA ऑब्जेक्ट निर्धारित की गई विशेषताएं pca.components_ में हैं। pca.components_ द्वारा फैले एक के लिए वेक्टर स्पेस ऑर्थोगोनल को त्याग दिया जाता है।

कृपया ध्यान दें कि पीसीए आपकी पूर्व परिभाषित विशेषताओं (आपके द्वारा निर्दिष्ट कॉलम द्वारा एन्कोड किए गए) को "त्यागें" या "बनाए रखना" नहीं है। यह अधिकतम भिन्नता के ऑर्थोगोनल दिशानिर्देशों को खोजने के लिए उन सभी को (भारित रकम द्वारा) मिलाता है।

यदि यह व्यवहार नहीं है जिसे आप ढूंढ रहे हैं, तो पीसीए आयामी कमी कम करने का तरीका नहीं है। कुछ साधारण सामान्य फीचर चयन विधियों के लिए, आप sklearn.feature_selection

+1

मुझे अंततः समझ में आया कि पीसीए क्या करता है (उम्मीद है)। क्या कोई विशेषता किसी घटक के साथ सहसंबंधित होने पर गणना करने के लिए कोई पसंदीदा सहसंबंध कार्य है? इस तरह से मुझे लगता है कि मेरे डेटासेट में सबसे अधिक प्रतिनिधि आयाम ढूंढने में सक्षम होना चाहिए .. (अगर मैं गलत हूं तो मुझे सही करें) .. क्या मैं सिर्फ पियरसन या कोसाइन समानता का उपयोग कर सकता हूं? – gc5

+5

पीसीए को समझने के लिए अंगूठे;) - अपने प्रश्न का उत्तर देने में सक्षम होने के लिए, हमें * फीचर * और * आयाम * के अर्थ के बारे में बहुत स्पष्ट होना चाहिए। दोनों के साथ भ्रम की संभावना है। आपके द्वारा निर्दिष्ट विशेषताएं आपके मैट्रिक्स के कॉलम हैं। यह देखने के लिए कि क्या पीसीए घटक 0 सुविधा 'i' का उपयोग करता है, आप 'pca.components_ [0, i]' की तुलना 'pca.components_ [0]' से कर सकते हैं। इसलिए यदि मैं आपके प्रश्न को सही तरीके से समझता हूं, तो उत्तर दिया गया है कि किसी दिए गए पीसी को देखें और देखें कि आपकी कौन सी विशेषताओं में सबसे मजबूत वजन है। – eickenberg

+5

अस्वीकरण: यदि आप अपने मूल घटकों में वजन के अनुसार विशेषताओं का चयन करते हैं तो आप कुछ दिलचस्प प्राप्त कर सकते हैं या नहीं। एक बार फिर, पीसीए को कैनोलिक अक्षों द्वारा परिभाषित सुविधाओं को फेंकने के लिए नहीं बनाया गया है। यह सुनिश्चित करने के लिए कि आप क्या कर रहे हैं, 'sklearn.feature_selection.SelectKBest' का उपयोग करके 'sklearn.feature_selection.f_classif' या' sklearn.feature_selection.f_regression' का उपयोग करके 'k' सुविधाओं का चयन करने का प्रयास करें, इस पर निर्भर करता है कि आपका लक्ष्य संख्यात्मक या स्पष्ट है – eickenberg

2

प्रमुख घटकों पर प्रस्तावित सुविधाओं महत्वपूर्ण जानकारी रख सकेंगे (अधिकतम प्रसरण के साथ अक्ष) और ड्रॉप छोटे प्रसरण के साथ अक्ष। यह व्यवहार compression (छोड़ना नहीं है) की तरह है।

और X_proj, X_new के बेहतर नाम है, क्योंकि यह पर principal components

X का प्रक्षेपण आप X_rec रूप

X_rec = pca.inverse_transform(X_proj) # X_proj is originally X_new 

यहाँ फिर से संगठित कर सकते हैं, X_recX के करीब है, लेकिन less important पीसीए द्वारा सूचना गिरा दी गई थी। तो हम कह सकते हैं X_rec denoised है।

मेरी राय में, मैं कह सकता हूं कि the noise छोड़ दिया गया है।

0

पर एक नज़र डालें, ऊपर वर्णित उत्तर गलत है। Sklearn साइट स्पष्ट रूप से बताती है कि घटक_ सरणी क्रमबद्ध है। इसलिए इसका उपयोग महत्वपूर्ण विशेषताओं की पहचान के लिए नहीं किया जा सकता है।

components_: सरणी, [n_components, n_features] प्रधान सुविधा अंतरिक्ष में कुल्हाड़ियों, डेटा में अधिकतम अंतर के निर्देशों का प्रतिनिधित्व। घटकों को expl_variance_ द्वारा क्रमबद्ध किया जाता है।

http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html

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