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

تطبيق K-nearest neighbors (KNN) لمهمة تصنيف "Classification" باستخدام مكتبة Sklearn

Meezo ML

السؤال

Recommended Posts

  • 1

نستخدم K Neighbors Classifier
هي طريقة تستخدم في التصنيف حيث يتم تصنيف القيم عن طريق أقرب الجيران لها فمثلا لو كان لدينا مثال للتصنيف الثنائي 0 أو 1 وكان هذا المثال قريب إليه 5 أمثله تصنيفها 1 و4 أمثله تصنيفها 0 فسيكون تصنيف المثال 1 لأن عدد الجيران التي تصنيفها 1 هي الأكثر طبعا يكون ذلك بعد عملية اختيار الجيران التسعه الاقرب مثلا
يتم استخدام عبر الموديول:

neighbors.KNeighborsClassifier

#استدعاء المكتبات:

from sklearn.neighbors import KNeighborsClassifier

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

KNNC=KNeighborsClassifier(n_neighbors=5, weights='uniform',algorithm=’auto’,p=2,n_jobs=None)

الوسيط الأول n_neighbors عدد الجيران المستخدم في عملية التصنيف أي يتم اختيار أقرب خمس جيران مثلا ثم يتم الحكم بينهم
الوسيط الثاني weights هذا الوسيط يحدد الأساس الذي سيسير عليه KNeighborsClassifier حيث يأخذ ثلاث قيم هي  ‘uniform’ حيث تعني أن الجار القريب أو البعيد لهم نفس التأثير أي لا يفرق أحدهما في عملية التصنيف  أما  ‘distance’ هنا يتم اعتماد المسافه كعامل تقييم أي الاقرب مسافه إلى المثال الذي يتم التنبؤ بقيمته بتالي سوف يكون تأثير الجار ذو المسافة الأقل أكبر من الجار ذو المسافة الأبعد  أما القيمه الثالثه فيمكن إعطاءه داله من بناء المبرمج لتدخل في عملية التقييم 
الوسيط الثالث algorithm نوع الخوارزميه الذي يستخدمها KNeighborsClassifier لحساب أقرب جار وهي ‘auto’, ‘ball_tree’, ‘kd_tree’, ‘brute’ ولكن ينصح باعتماد auto لكي يتم اختيار أفضل خوارزميه
الوسيط الرابع p  الطاقة لمقياس مينكوفسكي حيث عندما تساوي 1 يكون حساب المسافه عن طريق قانون منهاتن للمسافات وعندما تساوي 2 يتم الحساب عن طريق المسافة الإقليديه وفي الحاله الافتراضيه يتم استخدام مينكوفسكي
الوسيط الخامس  n_jobs عدد المعالجات التي تعمل بالتوازي وبتالي كلما زاد العدد زاد التسريع ,يوضع -1 للدلاله على عمل كامل المعالجات
طبعا قمت بشرح الشكل العام للموديل ولكن عن طريقة استخدامه سهل جدا فقط بعد أن تقوم بتقسيم الداتا إلى X_train, y_train,X_test, y_test  تسطيع كتابة الأتي لعملية التدريب.
#الشكل العام للموديل:

KNNC=KNeighborsClassifier(n_neighbors=4, weights='uniform',algorithm=’auto’,p=2,n_jobs=None)
KNNC.fit(X_train, y_train)

حيث الدالة fit يوجد ضمنها جميع العمليات الداخلية لعملية التدريب  
يوجد دالة أخرى تستخدم لغرض التنبؤ  بالتصنيف كالاتي
#حساب قيم التصنيف:

y_pred = KNNC.predict(X_test)

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

print('Train Score is : ' , KNNC.score(X_train, y_train))
print('Test Score is : ' , KNNC.score(X_test, y_test))

مثال:

# استيراد المكتبات
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import confusion_matrix
import seaborn as sns
import matplotlib.pyplot as plt

#تحميل البيانات
data = load_breast_cancer().data
labels = load_breast_cancer().target

# تقسيم البيانات
X_train, X_test, y_train, y_test = train_test_split(data, labels, test_size=0.2, random_state=2021, shuffle =True)
# KNeighborsClassifier تطبيق 
KNNC = KNeighborsClassifier(n_neighbors= 10,weights ='uniform',algorithm='auto') 
KNNC.fit(X_train, y_train)

# عرض النتائج
print('Train Score is : ' , KNNC.score(X_train, y_train))
print('Test Score is : ' , KNNC.score(X_test, y_test)) 
Train Score is :  0.9428571428571428
Test Score is :  0.9210526315789473

 

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...