2013-03-12 25 views
19

Belirli bir veri kümesinin en yüksek varyansıyla boyutları tanımlamak için pca kullanmalıyım. Bunu yapmak için scikit-learn'in pca'sını kullanıyorum, fakat pca yönteminin çıktısından, verilerimin en yüksek varyansa sahip bileşenleri neler olduğunu tanımlayamıyorum. Bu boyutları ortadan kaldırmak istemediğimi, sadece onları tanımladığımı unutmayın.Boyutları scikit-learn PCA kullanarak en yüksek varyansla bulma PCA

Verilerim, her biri 4 boyuta sahip 150 satırlık veri içeren bir matris olarak düzenlenmiştir. Ben aşağıdaki gibi yapıyorum:

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

Ben pca.explained_variance_ratio_, bu en yüksekten en düşüğe sıralı varyans oranları bir dizi verir yazdırmak, ancak onlar karşılık verilerden hangi boyut bana söylemez (matrisimde sütunların sırasını değiştirmeyi denedim ve ortaya çıkan varyans oran dizisi aynıydı).

pca.components_ yazdırma bana ait ... scikit belgelerine göre anlam anlayamıyorum bazı değerlere sahip bir 4x4 matris (I PCA için argüman olarak bileşenlerin asıl sayısını sol) verir, bunlar olmalı Maksimum varyansa sahip bileşenler (belki özvektörler?), ancak bu değerlerin hangi boyutlara başvurduğuna dair bir işaret yoktur.

Verilerin dönüştürülmesi ya yardımcı olmaz çünkü boyutlar aslında hangisinin orijinal olduğunu bilmediğim şekilde değiştirilir.

Bu bilgiyi scikit'in pca ile elde etmenin herhangi bir yolu var mı? Teşekkürler

+1

components_'' '' ilk satırında maksimum varyans yönü ise, dokümantasyon devletler olarak. Bunun hakkında net olmayan bir şey olduğundan emin değilim. '' Explan_variance_ratio_'' içindeki girdiler '' component_'' satırlarına karşılık gelir. Ne demek "bu değerlerin hangi ölçüye başvurduğunu gösteren bir işaret yok" mu? –

+2

Peki, benim sorunum, verilerimde 4 boyutum olduğunu ve sadece 2 boyutun en yüksek varyansı olan boyutu korumak istediğimi, eğer PCA'yı uygularsam, verilerinimin hangi boyutlarının korunacağını nasıl anlarım? n_components = 2. Örneğin, verilerimin ikinci boyutu ve dördüncü boyutunun en yüksek varyansa sahip olduğunu varsayalım, ancak bunu bilmiyorum. PCA'yı uygulamak istiyorum ve bu bilgileri sonuçlardan almak için bir yolum var. Yine, verileri dönüştürmem gerekmiyor! –

cevap

17

Geri dönen pca.explained_variance_ratio_, temel bileşenlerden gelen varyanslardır. Verilerinizin kaç boyut (bileşen) ile daha iyi dönüştürülebileceğini bulmak için bunları kullanabilirsiniz. Bunun için bir eşik kullanabilirsiniz (örneğin, diğerlerinin yanı sıra kaç varyansın 0,5'ten büyük olduğunu siz sayıyorsunuz). Bundan sonra, verileri, kullanılan eşik değerinden daha yüksek ana bileşenlere eşit olan boyutların (bileşenler) sayısını kullanarak PCA ile dönüştürebilirsiniz. Bu boyutlara indirgenen veriler, orijinal verilerin boyutlarındaki verilerden farklıdır.

bu bağlantıdan kodunu kontrol edebilirsiniz:

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

+2

Yardımcı olur, ancak sorunumu çözmüyor. Verilerimi PCA ile değiştirdiğimde ve örneğin n_components = 2'yi seçtiğimde orijinal verilerimin hangi boyutlarının ortadan kaldırılacağını bilmem gerekiyor. Bu durumda, 2 boyut ortadan kaldırılacak, ancak hangi boyutların benim sorunum olduğunun bilinmesi. –

+13

PCA, boyutları ortadan kaldırmaz ve diğerlerini orijinal verilerden uzak tutar. Verilerinizi orijinal olanlardan tamamen farklı olan bir dizi boyutta dönüştürür. – mad

+4

Evet, haklısın. Tekrar PCA okuyordum ve söylediğim şey yüzünden anlamsız bir şey ifade etmiyor. Eh, cevabını kabul ediyorum! Teşekkürler. –

İlgili konular