2016-11-24 14 views
6

मेरी समझ में, मैंने सोचा कि पीसीए केवल निरंतर सुविधाओं के लिए किया जा सकता है।पीसीए स्पष्ट सुविधाओं के लिए?

When to use One Hot Encoding vs LabelEncoder vs DictVectorizor?

इसमें कहा गया है एक गर्म पीसीए के बाद एन्कोडिंग एक बहुत अच्छा तरीका है, जो मूल रूप से पीसीए मतलब यह है कि: लेकिन नीचे दिए गए लिंक में एक पोस्ट के माध्यम से आया onehot एन्कोडिंग और लेबल एन्कोडिंग के बीच के अंतर को समझने की कोशिश करते हुए स्पष्ट सुविधाओं के लिए लागू किया गया है। इसलिए उलझन में, कृपया मुझे उसी पर सुझाव दें।

उत्तर

9

मैं दूसरों से असहमत हूं।

जबकि आप बाइनरी डेटा (जैसे एक-गर्म एन्कोडेड डेटा) पर पीसीए का उपयोग कर सकते हैं जिसका मतलब यह नहीं है कि यह एक अच्छी बात है, या यह बहुत अच्छी तरह से काम करेगी।

पीसीए निरंतर चर के लिए desinged है। यह भिन्नता को कम करने की कोशिश करता है (= वर्ग विचलन)। जब आपके पास द्विआधारी चर होते हैं तो वर्ग विचलन की अवधारणा टूट जाती है।

तो हाँ, आप पीसीए का उपयोग कर सकते हैं। और हाँ, आपको आउटपुट मिलता है। यह एक कम-स्क्वायर आउटपुट भी है - ऐसा नहीं है कि पीसीए इस तरह के डेटा पर सीगफॉल्ट करेगा। यह काम करता है, लेकिन यह बहुत कम सार्थक है जो आप चाहते हैं; और माना जाता है कि उदाहरण से कम अर्थपूर्ण लगातार पैटर्न खनन।

0

पीसीए dimensionality reduction method है जो सुविधाओं के किसी भी सेट को लागू किया जा सकता है।

from sklearn.preprocessing import OneHotEncoder 
enc = OneHotEncoder() 
X = enc.fit_transform([[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]]).toarray() 

print(X) 

> array([[ 1., 0., 1., 0., 0., 0., 0., 0., 1.], 
     [ 0., 1., 0., 1., 0., 1., 0., 0., 0.], 
     [ 1., 0., 0., 0., 1., 0., 1., 0., 0.], 
     [ 0., 1., 1., 0., 0., 0., 0., 1., 0.]]) 


from sklearn.decomposition import PCA 
pca = PCA(n_components=3) 
X_pca = pca.fit_transform(X) 

print(X_pca) 

> array([[-0.70710678, 0.79056942, 0.70710678], 
     [ 1.14412281, -0.79056942, 0.43701602], 
     [-1.14412281, -0.79056942, -0.43701602], 
     [ 0.70710678, 0.79056942, -0.70710678]]) 
+0

धन्यवाद "डेटा विश्लेषण सही मैट्रिक्स diagonalize को मिल रहा है।" क्या आप कृपया मुझे बता सकते हैं कि अपने कोड में एक गर्म एन्कोडर के परिणामों को कैसे घुसपैठ करना है। – vikky

+0

अगर मुझे सही ढंग से याद किया जाता है, तो पीसीए एल्गोरिदम eigenvectors और eigenvalues ​​के लिए हल करके सुविधाओं को एक अलग स्थान पर प्रोजेक्ट करता है। फिर यह शीर्ष एन (इस मामले में 3) सबसे बड़ी eigenvalues ​​देखता है और उन eigenvector घटकों लेता है। विचार कम सुविधाओं में सबसे उपयोगी डेटा एन्कोड करना है। – AlexG

+0

धन्यवाद youuuuuuu – vikky

2

असल में, पीसीए पाता है और सेट सुविधा पर कम जानकारीपूर्ण (डुप्लिकेट) जानकारी को खत्म करने और सुविधा अंतरिक्ष के आयाम को कम: यहाँ OneHotEncoded (अर्थात स्पष्ट) डेटा का उपयोग कर एक उदाहरण है। दूसरे शब्दों में, एक एन-आयामी हाइपरस्पेस की कल्पना करें, पीसीए को ऐसे एम (एम < एन) विशेषताएं मिलती हैं जो डेटा सबसे अधिक भिन्न होती हैं। इस तरह डेटा को एम-आयामी फीचर वैक्टर के रूप में प्रदर्शित किया जा सकता है। गणितीय रूप से, यह किसी प्रकार की ईजिन-मान & एक फीचर स्पेस की ईजिन वैक्टर गणना है।

तो, यह महत्वपूर्ण नहीं है कि विशेषताएं निरंतर हैं या नहीं।

पीसीए का उपयोग कई अनुप्रयोगों पर व्यापक रूप से किया जाता है। शोर, कम जानकारीपूर्ण डेटा जो वर्गीकरण/मान्यता से पहले कुछ सेंसर या हार्डवेयर से आता है, को खत्म करने के लिए।

1

एमसीए स्पष्ट डेटा आयाम में कमी के लिए एक ज्ञात तकनीक है। आर में एमसीए का उपयोग करने के लिए बहुत सारे पैकेज हैं और मिश्रित संदर्भों में पीसीए के साथ मिश्रण भी करते हैं। पाइथन में भी एक एमसीए लाइब्रेरी मौजूद है। एमसीए समान गणित कि पीसीए, वास्तव में फ्रेंच सांख्यिकीविद् कहा करते थे लागू होते हैं, विस्तृत विवरण के लिए

http://gastonsanchez.com/visually-enforced/how-to/2012/10/13/MCA-in-R/

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