PCA
PCA تحلیل اجزای اصل الگوریتمی از داده ها است برای تبدیل ستون های یک مجموعه داده به مجموعه ای جدید از ویژگی ها به نام Principal Components در واقع PCA یک تکنیک انتخاب ویژگی نیست، بلکه یک تکنیک ترکیبی ویژگی و یا یکپارچه سازی ویژگی های موجود در داده ها است.
PCA آن ویژگی ها را خلاصه می کند تا ویژگی های کمتری را تعریف کند تا داده ها را به خوبی توضیح دهد. از این گذشته، افزونگی یا همبستگی را که می تواند در هنگام توضیح داده ها با استفاده از تعداد زیاد متغیرها وجود داشته باشد حذف نموده و فهرستی از متغیرهای همبسته ایجاد می نماید.
عملاً PCA به دو دلیل استفاده می شود:1-کاهش ابعاد داده ها 2-تجسم کلاس های داده ها، PCA در صورتی به سطح بالاتری از کاهش بعد دست می یابد که بین متغیرهای موجود در مجموعه داده ها همبستگی زیادی وجود داشته باشد.
به دست آوردن PCA در پایتون:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
2-بارگذاری داده ها:
مجموعه داده های breast_cancer sklearn.datasets را بارگذاری کنید. مجموعه داده ها دارای ۵۶۹ مورد داده با ۳۰ ویژگی ورودی است. با توجه به ۳۰ ویژگی ورودی، تجسم این داده ها غیرممکن است.
from sklearn.datasets import load_breast_cancer
data=load_breast_cancer()
data.keys()
print(data[‘target_names’])
print(data[‘feature_names’])
3-گرفتن PCA
مجموعه داده ها را قبل از PCA استاندارد یا نرمال کنید( این امر به آن دلیل است که پیشبینهای اصلی ممکن است مقیاسهای گوناگونی داشته باشند).
وارد کردن PCA از sklearn.decomposition
تعداد اجزای اصلی را انتخاب کنید.
#ساخت یک دیتا فریم با استفاده از کتابخانه پانداس
df1=pd.DataFrame(data[‘data’],columns=data[‘feature_names’])
#مقیاس داده ها
scaling=StandardScaler()
# Use fit and transform method
scaling.fit(df1)
Scaled_data=scaling.transform(df1)
#تعداد ابعاد را به 3 کاهش میدهیم
principal=PCA(n_components=3)
principal.fit(Scaled_data)
x=principal.transform(Scaled_data)
#بررسی ابعاد داده ها پس ازPCA
print(x.shape)
output=(569, 3)
4-تجسم:
یک گراف 2 بعدی
plt.figure(figsize=(10,10))
plt.scatter(x[:,0],x[:,1],c=data[‘target’],cmap=’plasma’)
plt.xlabel(‘pc1’)
plt.ylabel(‘pc2’)
تجسم:یک گراف 3 بعدی
# واردات کتابخانه های مربوطه برای گراف 3بعدی
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure(figsize=(10,10))
# انتخاب طرح 3بعدی برای ایجاد یک گراف 3بعدی
axis = fig.add_subplot(111, projection=’3d’)
# x[:,0]is pc1,x[:,1] is pc2 while x[:,2] is pc3
axis.scatter(x[:,0],x[:,1],x[:,2], c=data[‘target’],cmap=’plasma’)
axis.set_xlabel(“PC1”, fontsize=10)
axis.set_ylabel(“PC2”, fontsize=10)
axis.set_zlabel(“PC3”, fontsize=10)
برای مثال در معماری:
در داده های معماری نیز ویژگی های فراوانی وجود دارد، از ویژگی های کیفی تا کمی، در بناهای تاریخی ویژگی ابعادپنجره ها، رنگ شیشه ها، ارتباط فضاها و غیره می تواند در یک پایگاه داده ذخیره شده و در هنگام پردازش توسط PCA کاهش بعد شود تا داده ها نسبت به هم یکپارچه تر عمل نمایند.