المطلوب الخامس:
عمل اقتران داخل الصف اسمه fit
يبقي الداتا في الصف (بدون ارجاع return)
يأخد متغيرين: مصفوفة خصائصX و مصفوفة اجابات Y
اول خطوة: عمل مصفوفة _w بحجم X و Y معا و ملئها اصفارا (استخدم مكتبة numpy)
ثاني خطوة: عمل مصفوفة فارغة لحفظ الفارق بين التقدير و الجواب الصحيح _errors
- الكود:
-
"""Fit training data.
Parameters
----------
X : {array-like}, shape = [n_samples, n_features]
Training vectors, where n_samples
is the number of samples and
n_features is the number of features.
y : array-like, shape = [n_samples]
Target values.
Returns
-------
self : object
"""
self.w_ = np.zeros(1 + X.shape[1])
self.errors_ = []# place holder
ثالثا، يجب عمل لفتين loop:
الاولى خارجية على المتغير n_iter
و تقوم بتصفير متغير اسمه error (لاحظ غياب الشرطة)
و ندخل في دورة داخلية و بعدها نضيف ناتج الدورة الداخلية الى مصفوفة _errors
المصفوفة الداخلية على متغيرين X , y:
نحسب الفارق بين الاجابة الصحيحة و ناتج predict و نضربها ب eta و نسمي الناتج update
نضيف قيم update مضروبة ب المتغير الى _w (باستثناء الخانة الاولى)
نضيف قيمة update الى _w (الخانة الاولى فقط)
نحدث قيمة errors
- الكود:
-
for _ in range(self.n_iter): # first loop
errors = 0
for xi, target in zip(X, y): #second loop
update = self.eta * (target - self.predict(xi)) # place holder
# self.w_[1:] += update * xi
self.w_[0] += update
errors += int(update != 0.0)
self.errors_.append(errors)
return self