منتدى علم البيانات

يدور هذا المنتدى حول شؤون تخصص علم البيانات Data Science و يتشارك فيه الاعضاء بخبراتهم و قدراتهم لدعم المجال بين المهتمين العرب
 
الرئيسيةالرئيسية  اليوميةاليومية  س .و .جس .و .ج  بحـثبحـث  الأعضاءالأعضاء  المجموعاتالمجموعات  التسجيلالتسجيل  دخول  

شاطر | 
 

 تمرين حول استخدام بايثون لكتابة برنامج perceptron

اذهب الى الأسفل 
كاتب الموضوعرسالة
Admin_Zakaria
Admin


المساهمات : 51
تاريخ التسجيل : 12/04/2018

مُساهمةموضوع: تمرين حول استخدام بايثون لكتابة برنامج perceptron   الخميس مايو 17, 2018 5:32 pm

يعتبر برنامج perceptron من البرامج البسيطة التي تطبق تعليم الالة. حيث يقوم بعمل تصحيح مدخلات النموذج (الخطي) اعتمادا على الفارق بين القراءة المتوقعة و القراءة الفعلية حسب المعادلة التالية

delta w = eta (y - y^) x_i

و في هذا التمرين سنقوم بكتابة برنامج Class عبر بيثون:
المطلوب الاول رفع مكتبة numpy و تسميتها np
















الكود:
import numpy as np
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو http://arabic-ds.yoo7.com
Admin_Zakaria
Admin


المساهمات : 51
تاريخ التسجيل : 12/04/2018

مُساهمةموضوع: رد: تمرين حول استخدام بايثون لكتابة برنامج perceptron   الخميس يونيو 07, 2018 11:05 pm

المطلوب الثاني: قم بعمل هيكل لصف الاقترانات Class
اسم الصف Perceptron
الصف يحمل التوثيق التالي لمكونهاته باستخدام صيغة Doc string

Perceptron classifier.
Parameters
------------
eta : float
Learning rate (between 0.0 and 1.0)
n_iter : int
Passes over the training dataset.
Attributes
-----------
w_ : 1d-array
Weights after fitting.
errors_ : list
Number of misclassifications in every epoch



الكود:

class Perceptron(object):#start
"""
Perceptron classifier.
Parameters
------------
eta : float
Learning rate (between 0.0 and 1.0)
n_iter : int
Passes over the training dataset.
Attributes
-----------
w_ : 1d-array
Weights after fitting.
errors_ : list
Number of misclassifications in every epoch.
"""



عدل سابقا من قبل Admin_Zakaria في السبت يونيو 09, 2018 11:21 pm عدل 1 مرات
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو http://arabic-ds.yoo7.com
Admin_Zakaria
Admin


المساهمات : 51
تاريخ التسجيل : 12/04/2018

مُساهمةموضوع: رد: تمرين حول استخدام بايثون لكتابة برنامج perceptron   السبت يونيو 09, 2018 11:15 pm

المطلوب الثالث:
عرف اقتران يقوم بتحديد قيم المتغيرين eta = 0.01 و n_iter = 10 عند طلب الصف او يقبل منك تحديد قيمه.

الكود:


def __init__(self, eta=0.01, n_iter=10):# start
self.eta = eta
self.n_iter = n_iter

لاحظ وظيفة الاقتران:self يقوم باعلام الحاسوب بوجود هذا الاقتران و هو امر من المعتاد ان يتم في الخفاء في لغات اخرى. اما بايثون فيجب وضعه بشكل صريح. الان مثلا يمكننا تشغيل اوامر مثل

الكود:

a = perceptron() # no parameter/default parameter
b= perceptron(1, 2) # given parameter

و يمكنك فهم الفارق بينهم


الكود:

print(a.eta)
print(b.eta)

الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو http://arabic-ds.yoo7.com
Admin_Zakaria
Admin


المساهمات : 51
تاريخ التسجيل : 12/04/2018

مُساهمةموضوع: رد: تمرين حول استخدام بايثون لكتابة برنامج perceptron   الأحد يونيو 10, 2018 8:48 pm

المطلوب الرابع: قم بعمل اقتران لتدريب لعمل التنبؤ و سمية predict
هذا الاقتران سوف يرجع قيمة value-returning
هذا الاقتران يأخذ متغير واحد و لو كان اكبر من صفر يجعله واحد صحيح و لو كان اقل من صفر يكون 1-
اقتراح: استخدام وظيفة where في numpy




الكود:


def predict(self, X): #start
"""Return class label after unit step"""
return np.where(self.net_input(X) >= 0.0, 1, -1)

يمكنك تجريب دقة عملك كالتالي:

الكود:

a = perceptron() # initialize
a.predict(-1.5)
z1 = (1, 2, 3, -1)
z2 = [1, 2, 3, -1]
z3 = np.array([1, 2, 3, -1])
a.predict(z1)
a.predict(z2)
a.predict(z3)


عدل سابقا من قبل Admin_Zakaria في الأربعاء يونيو 27, 2018 1:11 am عدل 1 مرات
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو http://arabic-ds.yoo7.com
Admin_Zakaria
Admin


المساهمات : 51
تاريخ التسجيل : 12/04/2018

مُساهمةموضوع: رد: تمرين حول استخدام بايثون لكتابة برنامج perceptron   الثلاثاء يونيو 12, 2018 6:36 am

المطلوب الخامس:
عمل اقتران داخل الصف اسمه 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

الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو http://arabic-ds.yoo7.com
 
تمرين حول استخدام بايثون لكتابة برنامج perceptron
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
منتدى علم البيانات :: مصادر التعلم :: ادوات و لغات البرمجة المستخدمة في علم البيانات-
انتقل الى: