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

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

شاطر | 
 

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

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


المساهمات : 48
تاريخ التسجيل : 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


المساهمات : 48
تاريخ التسجيل : 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


المساهمات : 48
تاريخ التسجيل : 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


المساهمات : 48
تاريخ التسجيل : 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 = percptron() # 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)
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو http://arabic-ds.yoo7.com
Admin_Zakaria
Admin


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

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

المطلوب الخامس:
عمل اقتران داخل الصف اسمه fit
يبقي الداتا في الصف (بدون ارجاع return)
يأخد متغيرين: مصفوفة خصائصX  و مصفوفة اجابات Y

اول خطوة: عمل مصفوفة _w بحجم X و Y معا و ملئها اصفارا (استخدم مكتبة numpy)
ثاني خطوة: عمل مصفوفة فارغة لحفظ الفارق بين التقدير و الجواب الصحيح _errors

ثالثا، يجب عمل لفتين loop:
الاولى خارجية على المتغير n_iter
و تقوم بتصفير متغير اسمه error (لاحظ غياب الشرطة)
و ندخل في دورة داخلية و بعدها نضيف ناتج الدورة الداخلية الى مصفوفة _errors

المصفوفة الداخلية على متغيرين X , y:
نحسب الفارق بين الاجابة الصحيحة و ناتج predict و نضربها ب eta و نسمي الناتج update
نضيف قيم update مضروبة ب المتغير الى _w (باستثناء الخانة الاولى)
نضيف قيمة update الى _w (الخانة الاولى فقط)
نحدث قيمة errors
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو http://arabic-ds.yoo7.com
 
تمرين حول استخدام بايثون لكتابة برنامج perceptron
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1

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