منتدى علم البيانات
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.
منتدى علم البيانات

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

 

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

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



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

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

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

delta w = eta (y - y^) x_i

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
















الكود:
import numpy as np
الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://arabic-ds.yoo7.com
Admin_Zakaria
Admin



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

تمرين حول استخدام بايثون لكتابة برنامج perceptron Empty
مُساهمةموضوع: رد: تمرين حول استخدام بايثون لكتابة برنامج perceptron   تمرين حول استخدام بايثون لكتابة برنامج perceptron Emptyالخميس يونيو 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 مرات
الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://arabic-ds.yoo7.com
Admin_Zakaria
Admin



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

تمرين حول استخدام بايثون لكتابة برنامج perceptron Empty
مُساهمةموضوع: رد: تمرين حول استخدام بايثون لكتابة برنامج perceptron   تمرين حول استخدام بايثون لكتابة برنامج perceptron Emptyالسبت يونيو 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)

الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://arabic-ds.yoo7.com
Admin_Zakaria
Admin



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

تمرين حول استخدام بايثون لكتابة برنامج perceptron Empty
مُساهمةموضوع: رد: تمرين حول استخدام بايثون لكتابة برنامج perceptron   تمرين حول استخدام بايثون لكتابة برنامج perceptron Emptyالأحد يونيو 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 مرات
الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://arabic-ds.yoo7.com
Admin_Zakaria
Admin



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

تمرين حول استخدام بايثون لكتابة برنامج perceptron Empty
مُساهمةموضوع: رد: تمرين حول استخدام بايثون لكتابة برنامج perceptron   تمرين حول استخدام بايثون لكتابة برنامج perceptron Emptyالثلاثاء يونيو 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

الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://arabic-ds.yoo7.com
 
تمرين حول استخدام بايثون لكتابة برنامج perceptron
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1
 مواضيع مماثلة
-
» تمرين بسيط حول استخدام بيثون في التعامل مع البيانات
» كيفية تنزيل برنامج R على حاسوبك
» مدخل الى استخدام لغة R
» استخدام انظمة حفظ البرامج
» استخدام Markdown في عمل تقارير تفاعلية من خلال R

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