الطريقة predict
الدرس 8 من 19 في دورة مقدمة في تعلم الآلة على Coddy.
التحدي
متوسطقم بملء طريقة predict.
يجب أن تأخذ الطريقة قائمة من نقاط X الجديدة.
لكل نقطة جديدة، احسب المسافة بين هذه النقطة وجميع النقاط الأخرى المخزنة في self.points. استخرج تسميات (labels) أقرب self.k نقاط.
أوجد التسمية الأكثر تكراراً (الأغلبية) من بين النقاط الأقرب، وستكون هذه هي الفئة المتوقعة.
على سبيل المثال، إليك نقاطنا وتسمياتنا:
| points | (1, 5) | (5, 0) | (3, 2) | (8, 1) | (4, 4) | (7, 7) |
| labels | A | B | A | B | C | A |
إليك نقطة جديدة (3, 3)
المسافة بين هذه النقطة وجميع النقاط الأخرى هي:
| points | (1, 5) | (5, 0) | (3, 2) | (8, 1) | (4, 4) | (7, 7) |
| distance from (3, 3) | 8 | 13 | 1 | 29 | 2 | 32 |
| labels | A | B | A | B | C | A |
الآن إذا كانت k = 3، فنحن بحاجة إلى العثور على أقرب 3 نقاط لنقطتنا الجديدة. هذه هي الأقرب: (3, 2)، و (1, 5)، و (4, 4). التسميات المقابلة لهذه النقاط هي: A، و A، و C. لدينا اثنان من A وواحد من C. بما أن A هي الأغلبية، فسيتم تصنيف النقطة الجديدة على أنها A.
يجب أن تعيد طريقة predict قائمة بالتسميات التي تم تصنيفها للنقاط الجديدة.
للعثور على تسمية الأغلبية في قائمة التسميات، استخدم: max(set(labels), key = labels.count)
جرّب بنفسك
class KNN:
def __init__(self, k):
self.points = None
self.labels = None
self.k = k
def distance(self, point_a, point_b):
# Write your code here
return (sum([(point_a[i] - point_b[i])**2 for i in range(len(point_a))]))**0.5
def fit(self, X_train, y_train):
# Write your code here
self.points = X_train
self.labels = y_train
def predict(self, X_test):
passجميع دروس مقدمة في تعلم الآلة
تدرّب بنفسك: مترجم Python عبر الإنترنت