اذهب إلى المحتوى
  • 0

اختزال الأبعاد باستخدام خوارزمية PCA في مكتبة Sklearn

Meezo ML

السؤال

Recommended Posts

  • 1

PCA
هي طريقة تستخدم لتقليل الأبعاد أي تقليل عدد الفيتشرز بهدف تسريع عملية معالجة البيانات.
لا يقوم PCA بتقليل المساحه في الهارد وأنما يقلل المساحة في الذاكره العشوائية أثناء عملية التدريب.
وغالباً ماتستخدم مع التعليم بدون إشراف إلا أنه يتم استخدامها أحياناً مع التعليم بإشراف لكنها تؤثر على كفاءة النموذج بشكل سلبي فهي لاتأخذ قيم ال target بعين الاعتبار.
يتم استخدامه عبر الموديول sklearn.decomposition
#استدعاء المكتبات:

from sklearn.decomposition import PCA

في البداية قمنا باستدعاء المكتبة التي يوجد فيها هذا الموديل
#الشكل العام للموديل:

PCAM=PCA(n_components=None, copy=True,svd_solver='auto', iterated_power='auto', random_state=None)

الوسيط الأول n_components هو عدد حقيقي أو صحيح يشير إلى عدد المكونات التي سيتم الإبقاء عليها المقصود بالمكونات أقل عدد أمثلة وعدد الفيتشرز وإذا أخذ None يتم الاحتفاظ بجميع المكونات.
الوسيط الثاني copy قيمة بوليانية إذا كان false فإنه سوف يتم العمل على نسخة من البيانات الأصلية أي تعديل على البيانات سوف يكون دائم أما إذا كان True تؤخذ نسخة من البيانات.
الوسيط الثالث svd_solver  يمثل طريقة الحل  يأخذ  ‘auto’, ‘full’, ‘arpack’, ‘randomized’ وكل قيمة لها طريقتها في اختيار الأبعاد لذلك ينصح بوضع ‘auto’ لكي تكون عملية الاختيار تلقائية.
الوسيط الرابع iterated_power  عدد التكرارات المسموحة عندما يكون svd_solver=randomized.
ويمكن وضعها auto لكي يتم التحديد بشكل تلقائي.
الوسيط الخامس random_state للتحكم بآلية التقسيم.
طبعا قمت بشرح الشكل العام للموديل ولكن عن طريقة استخدامة سهل جدا فقط بعد أن تقوم بتقسيم الداتا إلى X_train,X_test  نستطيع كتابة الأتي لعملية التدريب.
#الشكل العام للموديل:

PCAM=PCA(n_components=None, copy=True, whiten=False,svd_solver='auto', tol=0.0001,
                          iterated_power='auto', random_state=None)
PCAM.fit(X_train)

حيث الدالة fit يوجد ضمنها جميع العمليات الداخلية لعملية التدريب
نستطيع حساب دقة الموديل أو كفاءته  على التدريب والاختبار عن طريق التابع score وحساب عدد المكونات  وفق الشكل
#حساب الكفاءة على التدريب والاختبار وعدد المكونات:

print('Train Score is : ' , PCAM.score(X_train))
print('Test Score is : ' , PCAM.score(X_test))
print('No. of components is : ' , PCAM.components_)

الان للحصول على X الجديدة نستخدم transform
#الحصول على الدخل الجديد:

X =PCAM.transform(X)

يوجد دالة تقوم بالعمليتن معا التدريب والتحويل fit_transform.

#استدعاء المكتبات
from sklearn.decomposition import PCA

#الشكل العام للموديل
PCAM=PCA(n_components=None, copy=True, whiten=False,svd_solver='auto', tol=0.0001,
                          iterated_power='auto', random_state=None)
PCAM.fit(X_train)

#حساب الكفاءه على التدريب والاختبار وعدد المكونات
print('Train Score is : ' , PCAM.score(X_train))
print('Test Score is : ' , PCAM.score(X_test))
print('No. of components is : ' , PCAM.components_)

#الحصول على القيم  
X_new =PCAM.transform(X_train)

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...