Makine Öğrenmesi - Genel Konular

Temel Bileşen Analizi (PCA)

Yayın tarihi :13-Oca-22
Bölüm kodlarını ve/veya veri setlerini indir.

Temel Bileşen Analizi (Principal Component Analysis) (PCA), mevcut veri seti değişken sayısını daha az sayıya düşürme işlemi diyebiliriz. Yani elimizde örnek olarak 5000 sütunluk (sayısal değerli elemanlardan oluşan) bir veri seti olsun, bu veri setinin sütun sayısını sütundaki elemanların temsil ettiği değer oranını değiştirmeden bir veya iki sütuna indirme yapabiliriz.

Kullanabilmek için kütüphanesinin içe aktarılması gerekmektedir.

from sklearn.decomposition import PCA

Söz dizimi: PCA(n_components=None, copy=True, whiten=False, svd_solver='auto', tol=0.0, iterated_power='auto', random_state=None)

  • n_components, çıktıdaki sütun sayısını temsil eder.
  • copy, veri seti değerlerinin kopyalanmasını temsil eder. Değeri "True" ise dönüşüm (sığdırma veya daraltma) işlemlerinde "fit_transoform(X)" kullanılırken, "False" olması durumunda "fit(X).transoform(X)" kullanılmalıdır.

Örnek-1: İris veri setine PCA işlemi uygulayalım.

#Kütüphaneler import edildi
from sklearn.decomposition import PCA
import pandas as pd
import seaborn as sns
#Veri seti atama işlemleri
df=sns.load_dataset("iris")
df.head()

Çıktı:

PCA işlemi için yukarıda da bahsedildiği gibi sayısal değerler üzerinden işlem yapılabilir, o yüzden veri setinde bulunan ve kategorik değerde olan "species" sütununu veri setinden kaldırarak devam edelim.

df.drop("species",axis=1,inplace=True)
df.head()

Çıktı:

#tüm değişkenlerin dtype'ı sayısal değerde
df.info()

Çıktı:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 150 entries, 0 to 149
Data columns (total 4 columns):
 #   Column        Non-Null Count  Dtype  
---  ------        --------------  -----  
 0   sepal_length  150 non-null    float64
 1   sepal_width   150 non-null    float64
 2   petal_length  150 non-null    float64
 3   petal_width   150 non-null    float64
dtypes: float64(4)
memory usage: 4.8 KB

Veri setinde bulunan sayısal değerli değişkenler görüldüğü üzere 4 sütundan ("sepal_length", "sepal_width", "petal_length", "petal_width") oluşmaktadır. Bu sütunları PCA işlemi ile 3, 2 ve 1 sütuna indirelim. 

pca=PCA(n_components=3)
x=pca.fit_transform(df)
pd.DataFrame(x).head()

Çıktı:

#Veri seti 2 sütuna indirildi.
pca=PCA(n_components=2)
x=pca.fit_transform(df)
pd.DataFrame(x).head()

Çıktı:

#Veri seti 1 sütuna indirilidi
pca=PCA(n_components=1)
x=pca.fit_transform(df)
pd.DataFrame(x).head()

Çıktı:

Sonuç olarak; başlangıçta 4 sütunlu veri seti 3,2 ve 1 sütunlu veri seti haline dönüşmüş oldu. 4 sütun değeri çok büyük bir değer olmadığından dolayı etkisi fazla hissedilmeyecektir ama binlerce sütunluk bir veri seti üzerinde çalışma yapılması durumunda veri seti boyutunu çok büyük ölçüde küçültecek ve daha hızlı işlem yapılmasına olanak sağlayacaktır. 

Paylaş:

Yorum Yap (*Yorumunuza kod eklemek isterseniz Kod Parçacığı Ekle butonuna tıklayarak ekleyebilirsiniz.)

Yorumlar

Henüz hiç yorum yapılmamış, ilk yorum yapan sen ol.