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

تطبيق K-nearest neighbors (KNN) لمهمة توقع "Regression " باستخدام مكتبة Sklearn

Meezo ML

السؤال

Recommended Posts

  • 1

هي طريقة تستخدم في التوقع حيث يتم التنبؤ بالقيم عن طريق أقرب الجيران لها فمثلا لو كان لدينا مثال للتوقع وكان هذا المثال قريب للقيمة 1 أكثر من القيمة 2 فإن قيمة المثال سوف تكون 1 لأنها أقرب إليه.
يتم استخدام عبر الموديول:

neighbors.KNeighborsRegressor

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

from sklearn.neighbors import KNeighborsRegressor

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

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

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

KNeighborsRegressorModel=KNeighborsRegressor(n_neighbors=5, weights='uniform',
                                             algorithm=’auto’,
                                             p=2,n_jobs=-1)
KNeighborsRegressorModel.fit(X_train, y_train)

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

y_pred = KNeighborsRegressorModel.predict(X_test)

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

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

حيث قمنا بطباعة قيمتها لكي نرى كفاءة الموديل على بيانات الاختبار  والتدريب وهل هو يعاني من الضبط الزائد  overfit أو الضبط الناقص underfit.
مثال:

from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsRegressor
# تحميل الداتا
BostonData = load_boston()
data = BostonData.data
labels = BostonData.target
# تقسيم البيانات
X_train, X_test, y_train, y_test = train_test_split(data, labels, test_size=0.2, shuffle =True, random_state=2021)
# KNeighborsRegressor تطبيق 
KNeighborsRegressorModel = KNeighborsRegressor(n_neighbors = 8, weights='uniform',algorithm = 'auto')   
KNeighborsRegressorModel.fit(X_train, y_train)
# عرض النتائج
print('Train Score is : ' , KNeighborsRegressorModel.score(X_train, y_train))
print('Test Score is : ' , KNeighborsRegressorModel.score(X_test, y_test))

 

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...