اذهب إلى المحتوى

لوحة المتصدرين

  1. Ali Haidar Ahmad

    Ali Haidar Ahmad

    الأعضاء


    • نقاط

      9

    • المساهمات

      1068


  2. محمد أبو عواد

    محمد أبو عواد

    الأعضاء


    • نقاط

      3

    • المساهمات

      6234


  3. أكاديميّة حسوب

    • نقاط

      2

    • المساهمات

      5187


  4. سامح أشرف

    سامح أشرف

    الأعضاء


    • نقاط

      2

    • المساهمات

      2934


المحتوى الأكثر حصولًا على سمعة جيدة

المحتوى الأعلى تقييمًا في 06/14/21 في كل الموقع

  1. الآن عندما أختار اللغة العربية، يتم تحويل الشاشة من ( اليسار إلى اليمين ) إلى ( اليمين إلى اليسار ) * كيف أستطيع منع هذا الشيء في بعض الشاشات؟
    2 نقاط
  2. نستخدم K Neighbors Classifier هي طريقة تستخدم في التصنيف حيث يتم تصنيف القيم عن طريق أقرب الجيران لها فمثلا لو كان لدينا مثال للتصنيف الثنائي 0 أو 1 وكان هذا المثال قريب إليه 5 أمثله تصنيفها 1 و4 أمثله تصنيفها 0 فسيكون تصنيف المثال 1 لأن عدد الجيران التي تصنيفها 1 هي الأكثر طبعا يكون ذلك بعد عملية اختيار الجيران التسعه الاقرب مثلا يتم استخدام عبر الموديول: neighbors.KNeighborsClassifier #استدعاء المكتبات: from sklearn.neighbors import KNeighborsClassifier في البداية قمنا باستدعاء المكتبة التي يوجد فيها هذا الموديل #الشكل العام للموديل: KNNC=KNeighborsClassifier(n_neighbors=5, weights='uniform',algorithm=’auto’,p=2,n_jobs=None) الوسيط الأول n_neighbors عدد الجيران المستخدم في عملية التصنيف أي يتم اختيار أقرب خمس جيران مثلا ثم يتم الحكم بينهم الوسيط الثاني weights هذا الوسيط يحدد الأساس الذي سيسير عليه KNeighborsClassifier حيث يأخذ ثلاث قيم هي ‘uniform’ حيث تعني أن الجار القريب أو البعيد لهم نفس التأثير أي لا يفرق أحدهما في عملية التصنيف أما ‘distance’ هنا يتم اعتماد المسافه كعامل تقييم أي الاقرب مسافه إلى المثال الذي يتم التنبؤ بقيمته بتالي سوف يكون تأثير الجار ذو المسافة الأقل أكبر من الجار ذو المسافة الأبعد أما القيمه الثالثه فيمكن إعطاءه داله من بناء المبرمج لتدخل في عملية التقييم الوسيط الثالث algorithm نوع الخوارزميه الذي يستخدمها KNeighborsClassifier لحساب أقرب جار وهي ‘auto’, ‘ball_tree’, ‘kd_tree’, ‘brute’ ولكن ينصح باعتماد auto لكي يتم اختيار أفضل خوارزميه الوسيط الرابع p الطاقة لمقياس مينكوفسكي حيث عندما تساوي 1 يكون حساب المسافه عن طريق قانون منهاتن للمسافات وعندما تساوي 2 يتم الحساب عن طريق المسافة الإقليديه وفي الحاله الافتراضيه يتم استخدام مينكوفسكي الوسيط الخامس n_jobs عدد المعالجات التي تعمل بالتوازي وبتالي كلما زاد العدد زاد التسريع ,يوضع -1 للدلاله على عمل كامل المعالجات طبعا قمت بشرح الشكل العام للموديل ولكن عن طريقة استخدامه سهل جدا فقط بعد أن تقوم بتقسيم الداتا إلى X_train, y_train,X_test, y_test تسطيع كتابة الأتي لعملية التدريب. #الشكل العام للموديل: KNNC=KNeighborsClassifier(n_neighbors=4, weights='uniform',algorithm=’auto’,p=2,n_jobs=None) KNNC.fit(X_train, y_train) حيث الدالة fit يوجد ضمنها جميع العمليات الداخلية لعملية التدريب يوجد دالة أخرى تستخدم لغرض التنبؤ بالتصنيف كالاتي #حساب قيم التصنيف: y_pred = KNNC.predict(X_test) نستطيع حساب دقة الموديل أو كفاءته على التدريب والاختبار عن طريق التابع score ويكون وفق الشكل #حساب الكفاءه على التدريب والاختبار: print('Train Score is : ' , KNNC.score(X_train, y_train)) print('Test Score is : ' , KNNC.score(X_test, y_test)) مثال: # استيراد المكتبات from sklearn.datasets import load_breast_cancer from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier from sklearn.metrics import confusion_matrix import seaborn as sns import matplotlib.pyplot as plt #تحميل البيانات data = load_breast_cancer().data labels = load_breast_cancer().target # تقسيم البيانات X_train, X_test, y_train, y_test = train_test_split(data, labels, test_size=0.2, random_state=2021, shuffle =True) # KNeighborsClassifier تطبيق KNNC = KNeighborsClassifier(n_neighbors= 10,weights ='uniform',algorithm='auto') KNNC.fit(X_train, y_train) # عرض النتائج print('Train Score is : ' , KNNC.score(X_train, y_train)) print('Test Score is : ' , KNNC.score(X_test, y_test)) Train Score is : 0.9428571428571428 Test Score is : 0.9210526315789473
    2 نقاط
  3. يمكن رفع الصور بإستخدام jQuery من خلال عمل نموذج form يحتوي على الخاصية enctype بقيمة multipart/form-data وعمل عنصر input من نوع file في هذا النموذج وإعطائه القيمة multiple كالتالي: <h3>Ajax Image Uploader</h3> <form action="uploader.php" method="post" enctype="multipart/form-data" id="upload_form"> <input name="files" type="file" multiple /> <input name="submit" type="submit" value="Start"/> </form> كما ستحتاج إلى إضافة شريط التحميل من خلال عمل عنصر div وإعطائه بعض خصائص CSS كالتالي: <div id="progress-wrapper"> <div class="progressbar"></div><!-- شريط التحميل نفسه --> <div class="status">0%</div><!-- نسبة التحميل --> </div> <!-- في حالة حدوث خطأ أو مشكلة سيتم عرضها هنا --> <div id="output"><!-- error or success results --></div> #progress-wrapper { border: 1px solid #0099CC; padding: 1px; position: relative; border-radius: 3px; margin: 10px; text-align: left; background: #fff; } #progress-wrapper .progressbar{ height: 20px; border-radius: 3px; background-color: #f39ac7; width: 0; } #progress-wrapper .status{ top:3px; left:50%; position:absolute; display:inline-block; color: #000000; } ملاحظة: ليس عليك إتباع نفس طريقة التنظيم أو تنسيقات CSS فهي مجرد مثال وسأترك هذا الأمر لك لتقوم به. الأمر الأخير هو إرسال الصورة إلى الخادم من خلال عمل طلبات XMLHttpRequest بإستخدام ajax في jQuery كالتالي: $.ajax({ url : post_url, type: "POST", data : form_data, contentType: false, cache: false, processData:false, xhr: function(){ // upload Progress var xhr = $.ajaxSettings.xhr(); if (xhr.upload) { xhr.upload.addEventListener('progress', function(event) { var percent = 0; var position = event.loaded || event.position; // حجم ما تم إرساله var total = event.total; // حجم الملف الكلي // حساب النسبة المئوية لما تم إرساله if (event.lengthComputable) { percent = Math.ceil(position / total * 100); } // تحديث شريط التحميل $(progress_bar_id +" .progressbar").css("width", + percent +"%"); // تغير طول العنصر .progressbar $(progress_bar_id + " .status").text(percent +"%"); // كتابة نسبة التحميل }, true); } return xhr; }, mimeType:"multipart/form-data" }).done(function(res){ // بعد إتمام التحميل $(my_form_id)[0].reset(); // تفريغ النموذج لإرسال ملفات أخرى $(result_output).html(res); // كتابة نتسحة الإرسال إلى الخادم submit_btn.val("Upload").prop("disabled", false); //enable submit button once ajax is done }); الآن جزء الخادم في ملف uploader.php: <?php $img = $_FILES["image"]["name"] // تخزين اسم الملف الأصلي من العميل $tmp = $_FILES["image"]["tmp_name"] // اسم الملف المؤقت على الخادم $errorimg = $_FILES["image"]["error"] // في حالة وجود أي خطأ أثناء عملية الرفع فسيتم تخزينها في هذا المتغير ?> بعد ذلك يمكن نقل الملف إلى مجلد معين من خلال دالة move_uploaded_file إن أردت ويمكنك أيضًا التحقق من صيغة الملف extension الذي تم رفعه، والتأكد من حجم الملف .. إلخ لكن عليك الحذر من أي ملف يتم رفعه من قِبل المستخدم، فقد يحتوي على برمجيات ضارة قد تؤدي إلى إختراق الخادم أو حتى بيانات المستخدمين، لذلك أنصحك بإستخدام مكتبات جاهزة لرفع الملفات والتحقق منها مثل ما يفعل إطار العمل Laravel. أيضًا قد تحتاج إلى إضافة reCaptcha إلى نموذج الإرسال (أو اي وسيلة مشابهة) لكي تمنع محاولات حجب الخدمة عبر رفع عدد كبير من الملفات، وبالتالي جعل الموقع بطيء أو ملء مساحة التخزين الخاصة بالخادم.
    2 نقاط
  4. الإصدار 1.2.0

    21043 تنزيل

    انتشر مصطلح العمل الحر في الآونة الأخير انتشار النار في الهشيم، وسبب ذلك جائحة كوفيد-19 التي ضربت العالم فقلبت الموازين، فالآن وبعد إلزام الدول للشعوب بالبقاء في المنازل وفرض قيود على نمط الحياة وحتى أسلوب العمل من أجل الحد من انتشار الوباء، تعرّف أغلب الناس طوعًا أو كرهًا إلى أسلوب العمل المستقل والعمل عن بعد من المنزل، واضطر كثير منهم إلى دخول سوق الإنترنت ليقدموا خدماتهم بشكل مستقل بعد إنهاء عقودهم مع شركاتهم بسبب تقليل الشركات لنفقاتها، وحتى الذي استمروا في عملهم ووظيفتهم اضطروا إلى تبني أسلوب العمل من المنزل إذ رأينا الكثير من الشركات التي أغلقت مقراتها ونقلها إلى أسلوب العمل عن بعد وهنا وجد الموظفون أنفسهم أمام نمط عمل غريب لم يعتادوه من قبل! وبات الكثير يسأل عن كيفية الدخول إلى هذا سوق العمل الحر وكيفية تبني أسلوب العمل من المنزل ويسألنا عن تجاربنا ومن أين يبدؤون وماذا يفعلون، لذا وجب علينا تقديم المساعدة والإجابات الوافية ومدُّ يَد العون لتوفر مرجع شامل يهدي الوافدين إلى ويرشد السالكين على طريق العمل الحر ونمط العمل عن بعد من المنزل، فكان هذا الكتاب! يبدأ الكتاب في أول فصل له بشرح مفهوم ثقافة العمل الحر والعمل عن بعد من المنزل واختلافهما عن العمل التقليدي كما يعرض واقع العالم العربي من العمل المستقل، ثم ينتقل في الفصل الثاني إلى التحدث عن سوق العمل الحر وعرض مجالاته وكيفية الدخول إليه. ينتقل الكتاب بعدها في الفصول التالية إلى شرح المهارات الواجب على كل عامل مستقل أن يمتلكها حتى يصبح عاملًا مميزًا له مكانته المرموقة في السوق ليتهافت أصحاب المشاريع على تسليمه العمل كلما برز اسمه بين العاملين في السوق، فيعرِّج على التسويق الذاتي ثم ينتقل إلى شرح كيفية إدارة المشروع من الناحية الفنية والمالية والتعامل مع العملاء أصحاب المشاريع وكيفية حل أي خلافات قد تطرأ. لم ننسَ أهمية صحة العامل المستقل والعامل عن بعد من منزله، فخصَّصنا فصلين نتحدث في أولهما عن المواضيع المتعلقة بالصحة النفسية والجسدية على حد سواء، بالإضافة إلى عرض أهم التحديات التي قد تواجه العامل من المنزل مثل الإجازات وإدارة الوقت وكيفية التعامل معها. عرجَّنا بعد ذلك في الفصل الذي يليه على الأمور المتعلقة ببيئة العمل، تلك البيئة التي سيمضي العامل البعيد فيها جل وقته، فعرضنا كيفية بناء بيئة العمل المريحة المثلى وتنظيمها وكيفية فصل بيئة العمل عن بيئة المنزل والأهل الملاصقة لها. تحدثنا عن التعهيد الخارجي في فصل كامل وهو مفهوم قد يلزم العامل المستقل لاحقًا لتوسيع عمله أو إنجاز مهام خارج اختصاصه، ثم انتقلنا في الفصل الأخير إلى التحدث عن أهم منصات العمل الحر العربية بمختلف أنواعها وكيفية إنشاء حسابات عليها لتطبيق كل ما تعلمناه سابقًا في الكتاب ودخول السوق من أوسع مداخله. يمكنك قراءة فصول هذا الكتاب مباشرةً على شكل مقالات، الموسومة بوسم «دليل العامل المستقل»، وإليك العناوين: مدخل إلى ثقافة العمل الحر الدخول إلى سوق العمل الحر على الإنترنت كيفية التسويق الذاتي في العمل الحر الإدارة الفنية للمشروع للعامل المستقل فن التعامل مع العملاء في العمل المستقل العناية بالصحة الجسدية والنفسية للعامل المستقل العناية ببيئة عمل العامل المستقل الإدارة المالية في العمل الحر ما يلزم العامل المستقل معرفته عن التعهيد الخارجي تعرف على منصات العمل الحر والعمل عن بعد
    1 نقطة
  5. الإصدار 1.0.0

    13393 تنزيل

    مع الغياب شبه التام لأي مصادر مفيدة باللغة العربية عن مجالات الخصوصية والحماية والأمان الرقمي وتأمين الأجهزة الشخصية، جاء هذا الكتاب ليكون شارحًا لمفاهيم الحماية والأمان التي يحتاج إليها كل من يعيش في هذا العصر الرقمي ويستعمل مختلف الأجهزة الرقمية في شتى مجالات الحياة وذلك لتأمين نفسه وحماية بياناته التي يضعها في تلك الأجهزة. إنّ الأمان الرقمي موضوعٌ مهم للحديث عنه وليس شيئًا رفاهيًا أو تكميليًا، خصوصًا مع اطّراد عدد المستخدمين الجدد مع عدد انتهاكات واختراقات الأمان والخصوصية التي تحصل كلّ يوم. إنّ هذا الكتاب موجّهٌ بالدرجة الأولى إلى عموم من يستخدم الحواسيب والأجهزة الذكية ويهدف إلى توعيتهم بأهم المسائل المتعلقة بالأمان الرقمي، ولا يخلو من مواضيع ومعلومات مفيدة ومتقدمة حتّى للخبراء والمتخصصين في المجال، إذ أنّ هذا الكتاب ما هو إلّا محاولة لتحصين المستخدمين ولفت انتباههم إلى مجال الأمان الرقمي وطرق حماية أنفسهم في العالم الرقمي، ولا يعد الكتاب مرجعًا شاملًا لكلّ شيء في المجال. يبدأ الكتاب بعرض المفاهيم الأساسية التي يجب أن يمتلكها أيّ قارئ للكتاب، وهي مفاهيمٌ تعتمد عليها الكثير من الفصول الأخرى في الكتاب فلا غنى عنها بحالٍ من الأحوال، ثم ينتقل الكتاب إلى الحديث عن الوعي وأهميته، وقد قدّمنا موضوع الوعي على غيره لأنّه مبدأٌ عام يُمكن تطبيقه في مختلف مجالات الحماية الرقمية وليس شرحًا لطريقة تثبيت برنامج أو إضافة مثلًا، كما أنّه أهم طريقة لحماية المُستخدم نفسَه. ويأتي بعد هذين الفصلين مختلف الفصول التي تشرح اختيار خدماتٍ معينة أو طريقة تأمين أجهزة وأنظمة معينة. يجد القارئ في كلّ فصلٍ من هذه الفصول شرحًا للمفهوم المُراد تأمينه قبل الشروع بطريقة حمايته وتأمينه ولذلك يمكنك قراءة هذه المفاهيم بالترتيب الذي تريد بحسب حاجتك إن أردت ذلك رغم أنه ينصح بقراءتها وفق ترتيبها المتسلسل. هذا الكتاب مرخص بموجب رخصة المشاع الإبداعي Creative Commons «نسب المُصنَّف - غير تجاري - الترخيص بالمثل 4.0». يمكنك قراءة فصول الكتاب على شكل مقالات من هذه الصفحة، «الأمان الرقمي»، أو مباشرة مما يلي: الفصل الأول: لماذا يجب أن نحافظ على أماننا الرقمي؟ الفصل الثاني: مفاهيم تأسيسية عن الأمان الرقمي الفصل الثالث: الوعي في العالم الرقمي الفصل الرابع: اختيار العتاد والبرامج في العالم الرقمي الفصل الخامس: اختيار الخدمات والمزودات في العالم الرقمي الفصل السادس: تأمين الأشياء الأساسية المحيطة بك في العالم الرقمي الفصل السابع: النسخ الاحتياطي وحفظ البيانات في العالم الرقمي الفصل الثامن: التشفير واستعمالاته في العالم الرقمي الفصل التاسع: كلمات المرور: كيفية حفظها واستعمالها في العالم الرقمي الفصل العاشر: تأمين متصفحات الويب في العالم الرقمي الفصل الحادي عشر: الحماية من مواقع الإنترنت في العالم الرقمي الفصل الثاني عشر: ما يلزم معرفته عند الشراء والدفع عبر الإنترنت الفصل الثالث عشر: تأمين الهاتف المحمول في العالم الرقمي الفصل الرابع عشر: كيف تعرف أنك اخترقت في العالم الرقمي وماذا تفعل حيال ذلك؟ الفصل الخامس عشر: مواضيع متقدمة في الأمان الرقمي
    1 نقطة
  6. عايزة اعرف افضل مواصفات كمبيوتر للجرافيك والأدوبي بريمير واليستريتر وكمان بيشغل الالعاب العالية يكون في حدود ٥٠٠٠ جنيه كده ، اتمني اللي يعرف يساعدني الاقي كمبيوتر كويس ومن شركة موثوقة
    1 نقطة
  7. يمكننا حساب الوقت المستغرق من خلال استخدام مكتبة time ولذلك يجب استدعئها قبل استخدامها, ثم نخزن الوقت الذي بدأ فيه تنفيذ الكود في متغير ليكن اسمه مثلا t1, وعند انتهاء تنفيذ البرنامج نقوم بطرح قيمة المتغير t1 من الوقت الفعلي كما في الكود الآتي import time t1 = time.time() print('Test') t2 = time.time() print('time taken:' ,t2-t1)
    1 نقطة
  8. يمكن ذلك باستخدام مكتبة time وتحديداً الدالة time فنقوم بحساب الوقت قبل تنفيذ الكود والوقت بعد تنفيذ الكود ونقوم بطرح القيمة الأولى من الثانية فنحصل على الجواب بالثانية: #استدعاء المكتبة import time start= time.time() #حساب الوقت قبل التنفيذ # نها تضع الكود end=time.time() #حساب الوقت بعد التنفيذ #طرح قيمة البداية من قيمة النهايه print(end - start)
    1 نقطة
  9. نعم يمكنك ذلك, أساسيات لغات البرمجة سوف تجدها متشابهة وتتناول معظم المواضيع المشتركة فيما بينها وسوف تكون الفكرة واحدة ايضا فمعظم لغات البرمجة تتبع نفس المنطق ونفس الأساسيات ولكن ما يختلف هو طريقة كتابة الكود, وبعض القيود التي تفرضها كل لغة, ولكن أنصحك اذا كنت تريد ان تستمر مستقبلا في استخدام لغة c++ أن تتعلم الاساسيات باستخدام c++
    1 نقطة
  10. سبب الخطأ أنك لم تقم بتحويل البيانات إلى صيغة رقمية، فالتابع fit يتوقع منك قيم float وليس String لذا يجب أن تقوم بتحويل النص إلى صيغة رقمية أي يجب أن تقوم بخطوة Text Represintaion. المثال التالي سأعرض لك فيه كيف سأقوم بالأمر عن طريق تمثيل النص باستخدام ترميز TF-IDF: from sklearn.linear_model import LogisticRegression from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.pipeline import make_pipeline from sklearn.metrics import confusion_matrix,accuracy_score, classification_report Data = pd.read_csv('D:/train.csv') Data['Tweet'] =Data['Tweet'].astype(str) Data['Class'].replace({"abusive":0,"hate":0,"normal":1},inplace=True) data = Data['Tweet'] label = Data["Class"] X_train, X_test, Y_train, Y_test = train_test_split(data, label, test_size = 0.2, random_state = 2021) pipe = make_pipeline(TfidfVectorizer(),LogisticRegression()) pipe.fit(X_train,Y_train) prediction = pipe.predict(X_test) print(f"Accuracy score is {accuracy_score(prediction, Y_test):.2f}") print(classification_report(prediction, Y_test))
    1 نقطة
  11. نعم يمكن ذلك. وفي Sklearn يتم استخدامها عبر الموديول: neighbors.NearestNeighbors وهي طريقة تستخدم في التعليم غير الخاضع للإشراف هو شبيه بالتصنيف ولكن نقطة الاختلاف أنه في التصنيف كان يدخل في عملية تحديد المثال لأي صنف ينتمني هي جيران هذا المثال عبر الاكثريه أما في التعليم غير الخاضع للإشراف فلا يوجد output كما نعلم لذلك هنا يتم اعطاء نصف قطر ويتم تحديد عدد جيران ويكون هذا المثال ينتمي إلى الجار الأقرب له. استدعاء المكتبات: rom sklearn.neighbors import NearestNeighbors في البداية قمنا باستدعاء المكتبة التي يوجد فيها هذا الموديل الشكل العام للموديل: NearestN=NearestNeighbors(n_neighbors=5, radius=1.0,algorithm='auto',p=2, n_jobs=None) NearestN.fit(X_train) الوسيط الأول n_neighbors عدد الجيران المستخدم في عملية التقسيم أي يتم اختيار أقرب خمس جيران مثلاً ثم يتم الحكم بينهم. الوسيط الثاني radius نصف القطر المستخدم في عملية التقسيم. الوسيط الثالث algorithm نوع الخوارزمية الذي يستخدمها NearestNeighbors لحساب أقرب جار وهي ‘auto’, ‘ball_tree’, ‘kd_tree’, ‘brute’ ولكن ينصح باعتماد auto لكي يتم اختيار أفضل خوارزمية. الوسيط الرابع p الطاقة لمقياس مينكوفسكي حيث عندما تساوي 1 يكون حساب المسافة عن طريق قانون منهاتن للمسافات وعندما تساوي 2 يتم الحساب عن طريق المسافة الإقليدية وفي الحالة الافتراضية يتم استخدام مينكوفسكي. الوسيط الخامس n_jobs عدد المعالجات التي تعمل بالتوازي وبتالي كلما زاد العدد زاد التسريع ,يوضع -1 للدلاله على عمل كامل المعالجات طبعا قمت بشرح الشكل العام للموديل ولكن عن طريقة استخدامه سهل جدا فقط بعد أن تقوم بتقسيم الداتا إلى X_train, X_test, تسطيع كتابة الأتي لعملية التدريب. الشكل العام للموديل: NearestN=NearestNeighbors(n_neighbors=5, radius=1.0, algorithm='auto',p=2, n_jobs=None) NearestN.fit(X_train) حيث الدالة fit يوجد ضمنها جميع العمليات الداخلية لعملية التدريب. لنأخذ مثال يوضح الموديل أكثر . في هذا المثال قمنا بأخذ عينة مزيفm وبعد ذلك قمنا بتدريب NearestNeighborsl عليها وبعد ذلك قمنا باستخدام الدالة المعرفة في الموديل radius_neighbors التي تستخدم لحساب الجيران الأقرب لنقطة معينة أو لعينة معينة ومن ثم طباعة النتائج. استدعاء المكتبات: import numpy as np from sklearn.neighbors import NearestNeighbors عينة مزيفة: NearestN = NearestNeighbors(n_neighbors=2, radius=0.4) NearestN .fit(samples) إيجاد الجيران لنصف قطر 0.4 و العينة المدخلة: NearestNeighborsModel = NearestNeighborsModel .radius_neighbors( [[0, 0, 1.4]], 0.5, return_distance=False) طباعة الجيران: print(np.asarray(nbrs)) # 4 أي أن الجار القريب للعينة [[1.4, 0, 0]] وبنصف قطر 0.5 هي العينة الرابعة [1, 0, 0] على اعتبار أن اندكس المصفوفة يبدأ من الصفر
    1 نقطة
  12. طباعة جملة تخبرنا بعدد العناصر الموجودة في stack. طباعة العناصر المتكرر في stack و عدد مرات تكرارها. طباعة عناصر stack بحيث العنصر الاول هو الاخير، ثم طباعة العنصر الاخير هو الاول.. علما بان size =10.
    1 نقطة
  13. هل يمكن أن أستخدم التابع replace لإزالة أو ‘ستبدال أجزاء متعددة من النص، أعلم أنه يمكنني أن أستخدم replace أكثر من مرة كالتالي: x = "hello, world" x = x.replace("hello", "hi") x = x.replace("world", "adam") print(x) # hi, adam هل توجد طريقة مختصرة أكثر بدلًا من تكرار replace العديد من المرات؟
    1 نقطة
  14. هناك حل آخر أبسط قليلاً وهو كالتالي s = "The quick brown fox jumps over the lazy dog" for r in (("brown", "red"), ("lazy", "quick")): s = s.replace(*r) #الناتج: The quick red fox jumps over the quick dog
    1 نقطة
  15. يمكنك ذلك عبر الموديول: externals.joblib للحفظ نستخدم التابع التالي: dump(model_name, 'path') لإعادةالتحميل: load('path') مثال: #استيراد المكتبات import numpy as np from sklearn.linear_model import LogisticRegression from sklearn.naive_bayes import GaussianNB from sklearn.ensemble import RandomForestClassifier, VotingClassifier from sklearn.datasets import load_breast_cancer from sklearn.model_selection import train_test_split #تحميل البيانات data = load_breast_cancer().data labels = load_breast_cancer().target # تقسيم البيانات X_train, X_test, y_train, y_test = train_test_split(data, labels, test_size=0.2, random_state=2021, shuffle =True) c1 = LogisticRegression(multi_class='multinomial', random_state=1) c2 = RandomForestClassifier(n_estimators=50, random_state=1) c3 = GaussianNB() ec1 = VotingClassifier(estimators=[ ('lr', c1), ('rf', c2), ('gnb', c3)], voting='hard') ec1 = ec1.fit(X_train, y_train) print(ec1.score(X_test,y_test))#0.9385964912280702 # نستدعي الكلاس import sklearn.externals.joblib as savemodel savemodel.dump(ec1 , 'model.sav') # نستخدم التابع التالي لعملية الحفظ # لإعادة تحميله loading = savemodel.load('model.sav')
    1 نقطة
  16. خوارزمية تعتمد على التصويت بين عدة خوارزميات، بحيث تحدد لها عدة خوارزميات تصنيف وكل خوارزمية ستقوم بعمل fitting على البيانات ثم إجراء مايسمى "Voting" لانتخاب النتيجة الأفضل اعتماداً على الخوارزميات المستخدمة. يمكنك تطبيقها في Sklearn عبر الموديول: ensemble.VotingClassifier الصيغة العامة: sklearn.ensemble.VotingClassifier(estimators, voting='hard', weights=None, n_jobs=None, verbose=False) الوسيط الأول نحدد فيه خوارزميات التصنيف التي نريد استخدامها وتقبل list من ال tuble بحيث كل tuble عبارة عن قيمة أولى str تمثل اسم اختياري للخوارزمية وقيمة ثانية تمثل الكلاس (الخوارزمية) "موضحة في المثال". الوسيط الثاني voting: تحدد نوع التصويت hard أو soft. وافتراضياً hard. الوسيط الثالث weights: تحديد ماهي الأوزان في التصويت لكل خوارزمية. ويأخذ مصفوفة من الأوزان (,n_classifier,) قد تكون القيم int أو float لامشكلة. n_jobs: عدد المهام التي يتم تنفيذها على التوازي. نضع -1 لأقصى قدر ممكن(زيادة سرعة التنفيذ). ال attributes: estimators_ : معلومات عن الخوارزميات المستخدمة. classes_: ال labels الموجودة. التوابع: fit(data) للقيام بعملية التدريب. predict(data) للقيام بعملية توقع قيمة عينة. score(data) لإيجاد كفاءة النموذج. مثال:سنستخدم 3 خوارزميات تصنيف GaussianNB+LR+RF #استيراد المكتبات import numpy as np from sklearn.linear_model import LogisticRegression from sklearn.naive_bayes import GaussianNB from sklearn.ensemble import RandomForestClassifier, VotingClassifier from sklearn.datasets import load_breast_cancer from sklearn.model_selection import train_test_split #تحميل البيانات data = load_breast_cancer().data labels = load_breast_cancer().target # تقسيم البيانات X_train, X_test, y_train, y_test = train_test_split(data, labels, test_size=0.2, random_state=2021, shuffle =True) c1 = LogisticRegression(multi_class='multinomial', random_state=1) c2 = RandomForestClassifier(n_estimators=50, random_state=1) c3 = GaussianNB() ec1 = VotingClassifier(estimators=[ ('lr', c1), ('rf', c2), ('gnb', c3)], voting='hard') ec1 = ec1.fit(X_train, y_train) print(ec1.score(X_test,y_test))#0.9385964912280702
    1 نقطة
  17. لأنها تقوم بحصر الكود في مجموعة تسمى بالكتلة Block بحيث يكون الكود الذي داخل الأقواس المجعدة ينتمي لما خلفه فعلى سبيل المثال هذا الكود for item in list { print(item) } فالكود الذي داخل الأقواس المجعدة print(item) ينتمي الى ماقبلها أي for item in list مثال آخر في كتلة دالة function block func sayHello(){ print("Hello") } فالكود الذي داخل الأقواس print("Hello") ينتمي الى تعريف الدالة الذي قبله func sayHello()
    1 نقطة
  18. لدي طريقة أخرى جميلة للقيام بذلك سأشاركها، تعتمد على عكس القاموس أي نجعل القيم مفاتيح والعكس. نعرف تابع يقبل قاموس d وقيمة val ثم يقوم بعكس هذا القاموس (جعل القيم مفاتيح والمفاتيح قيم) ثم يبحث في القاموس الجديد عن القيمة val بالطريقة الاعتيادية ويردها لنا كالتالي: # نعرف تابع يقوم بالمطلوب def get_keys_from_value(d, val): reverse_dict = dict([(value, key) for key, value in d.items()]) # نجعل المفاتيح قيم والقيم مفاتيح return reverse_dict[val] # تعريف القاموس your_dict={'Adam': 18, 'Ebrahim' : 19} # البحث عن طريق التابع الذي عرفناه print(get_keys_from_value(your_dict, 18)) # Adam
    1 نقطة
  19. هي طريقة تستخدم في التوقع حيث يتم التنبؤ بالقيم عن طريق أقرب الجيران لها فمثلا لو كان لدينا مثال للتوقع وكان هذا المثال قريب للقيمة 1 أكثر من القيمة 2 فإن قيمة المثال سوف تكون 1 لأنها أقرب إليه. يتم استخدام عبر الموديول: neighbors.KNeighborsRegressor #استدعاء المكتبات: from sklearn.neighbors import KNeighborsRegressor في البداية قمنا باستدعاء المكتبة التي يوجد فيها هذا الموديل #الشكل العام للموديل: KNeighborsRegressorModel=KNeighborsRegressor(n_neighbors=5, weights='uniform',algorithm=’auto’, p=2,n_jobs=None) الوسيط الأول n_neighbors عدد الجيران المستخدم في عملية التوقع أي يتم اختيار أقرب خمس جيران ثم يتم الحكم بينهم الوسيط الثاني weights هذا الوسيط يحدد الأساس الذي سيسير عليه KNeighborsRegressor حيث يأخذ ثلاث قيم هي ‘uniform’ حيث تعني أن الجار القريب أو البعيد لهم نفس التأثير أي لا يفرق أحدهما في عملية التوقع أما ‘distance’ هنا يتم اعتماد المسافه كعامل تقييم أي الاقرب مسافه إلى المثال الذي يتم التنبؤ بقيمته بتالي سوف يكون تأثير الجار ذو المسافة الأقل أكبر من الجار ذو المسافة الأبعد أما القيمه الثالثه فيمكن إعطاءه داله من بناء المبرمج لتدخل في عملية التقييم الوسيط الثالث algorithm نوع الخوارزميه الذي يستخدمها KNeighborsRegressor لحساب أقرب جار وهي ‘auto’, ‘ball_tree’, ‘kd_tree’, ‘brute’ ولكن ينصح باعتماد auto لكي يتم اختيار أفضل خوارزميه الوسيط الرابع p الطاقة لمقياس مينكوفسكي حيث عندما تساوي 1 يكون حساب المسافه عن طريق قانون منهاتن للمسافات وعندما تساوي 2 يتم الحساب عن طريق المسافة الإقليديه وفي الحاله الافتراضيه يتم استخدام مينكوفسكي الوسيط الخامس n_jobs عدد المعالجات التي تعمل بالتوازي وبتالي كلما زاد العدد زاد التسريع ,يوضع -1 للدلاله على عمل كامل المعالجات طبعا قمت بشرح الشكل العام للموديل ولكن عن طريقة استخدامه سهل جدا فقط بعد أن تقوم بتقسيم الداتا إلى X_train, y_train,X_test, y_test تسطيع كتابة الأتي لعملية التدريب #الشكل العام للموديل. KNeighborsRegressorModel=KNeighborsRegressor(n_neighbors=5, weights='uniform', algorithm=’auto’, p=2,n_jobs=-1) KNeighborsRegressorModel.fit(X_train, y_train) حيث الدالة fit يوجد ضمنها جميع العمليات الداخلية لعملية التدريب يوجد دالة أخرى تستخدم لغرض التنبؤ كالاتي #حساب القيم المتوقعة: y_pred = KNeighborsRegressorModel.predict(X_test) نستطيع حساب دقة الموديل أو كفاءته على التدريب والاختبار عن طريق التابع score ويكون وفق الشكل #حساب الكفاءة على التدريب والاختبار: print('Train Score is : ' , KNeighborsRegressorModel.score(X_train, y_train)) print('Test Score is : ' , KNeighborsRegressorModel.score(X_test, y_test)) حيث قمنا بطباعة قيمتها لكي نرى كفاءة الموديل على بيانات الاختبار والتدريب وهل هو يعاني من الضبط الزائد overfit أو الضبط الناقص underfit. مثال: from sklearn.datasets import load_boston from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsRegressor # تحميل الداتا BostonData = load_boston() data = BostonData.data labels = BostonData.target # تقسيم البيانات X_train, X_test, y_train, y_test = train_test_split(data, labels, test_size=0.2, shuffle =True, random_state=2021) # KNeighborsRegressor تطبيق KNeighborsRegressorModel = KNeighborsRegressor(n_neighbors = 8, weights='uniform',algorithm = 'auto') KNeighborsRegressorModel.fit(X_train, y_train) # عرض النتائج print('Train Score is : ' , KNeighborsRegressorModel.score(X_train, y_train)) print('Test Score is : ' , KNeighborsRegressorModel.score(X_test, y_test))
    1 نقطة
  20. يُمكنك الوصول إلى ما تريد بإستخدام حلقة للمرور على كافة المفاتيح و التحقق من القيمة إن كانت مُساوية للقيمة المطلوبة نقوم بتخزين المفتاح الموافق لها بهذا الشكل: my_dict = { "Adam" : 18, 'Ebrahim' : 19, "Samir" : 18, "Moahamed" : 30 } wanted_keys = [key for key in my_dict.keys() if 18 == my_dict[key]] print(wanted_keys) # ['Adam', 'Samir']
    1 نقطة
  21. يمكننا فعل ذلك من خلال تخزين الValues في list وال keys في list , لاحظ الكود التالي مع الشرح Mydict ={"Adam": 18, "Ebrahim" : 19}#الفاموس الخاص بنا keys = list(Mydict.keys()) #نخزن جميع المفاتيح في قائمة vals = list(Mydict.values())#نخزن جميع القيم في قائمة أخرى myVal = vals.index(18)#نقوم بالبحث عن قيمة محددة print(keys[myVal])#نبحث عن القيمة السابقة في قائمة المفاتيح
    1 نقطة
  22. إذا كنت تقصد ال tooltip كما وضح وائل في التعليق السابق فبالطبع يمكنك عمل ذلك من خلال الخاصية title ولكن لن تتمكن من تعديل التنسيق حيث يبقى لل title نفس الشكل ولن تستطيع التعديل عليه حيث يبدو من الصورة أنك تحتاج شكل معين يأخذ بعض التنسيقات وهناك العديد من الطرق عن طريق ال javascript عن طريق ال css فقط بدون الحاجة لل javascript أو يمكنك البحث عن الأشياء الجاهزة فقط أبحث عن ال tooltip تطبيق ذلك عن طريق ال css سيكون كالتالي <div data-tooltip="hello"> <!-- لم نستخدم ال title --> something here </div> ال css [data-tooltip]:before { position : absolute; content : attr(data-tooltip); opacity : 0; /* يمكنك تنسيقه كما تريد عن طريق إضافة التنسيقات هنا */ } [data-tooltip]:hover:before { /*title الجزء المسؤل عن ظهور ال */ opacity : 1; }
    1 نقطة
  23. يمكن تحديد النص المساع لعنصر ما في HTML عن طريق title لأي عنصر مثلا: <!DOCTYPE html> <html> <body> <p title="أكاديمية حسوب">https://academy.hsoub.com</p> </body> </html> أو ابحث عن CSS Tooltip
    1 نقطة
  24. المصفوفة في الجافا سكريبت تتكون من قائمة عناصر، وتتيح الجافا سكريبت للمبرمجين العديد من الوظائف التي تعمل على المصفوفات. الوظائف التي تقوم بالتعديل على المصفوفة الأصلية تُعرف بتوابع التعديل (Mutator Methods)، والوظائف التي تُعيد قيمة جديدة أو شكل آخر من المصفوفة تُعرف بتوابع الوصول (Accessor Methods). يوجد نوع ثالث من التوابع يُسمى بتوابع التكرار (Iteration Methods) والتي سنتناولها بالشرح في هذا المقال. تُتيح توابع التكرار العمل على كل عنصر في المصفوفة كلٌ على حدة، وترتبط هذه التوابع بشكل أساسي بحلقات التكرار. للاستفادة أكثر من هذا الدرس، يجب أن يكون لديك معرفة مُسبقة بكيفية إنشاء المصفوفات، فهرستها، التعديل عليها والمرور على عناصرها بواسطة حلقة التكرار. تستطيع مراجعة درس فهم المصفوفات في الجافا سكريبت لأخذ فكرة عما سبق. ما سنتناوله في هذا الدرس يشمل شرح استخدام وظائف التكرار لتنفيذ حلقة التكرار على المصفوفات وإجراء عمليات على كل عنصر في المصفوفة، توضيح كيفية ترشيح نتائج العمل على المصفوفة، تلخيص عناصر المصفوفة في قيمة واحدة والبحث عن قيم وفهارس معينة. فهم الدوال السهمية (Arrow Functions) العديد من الأمثلة في هذا المقال ستستخدم صيغة الدوال السهمية في الجافا سكريبت والتي يتم تمثيلها بواسطة علامة المساواة ثم علامة الأكبر من <=. الدالة في الجافا سكريبت عبارة عن كتلة من الشيفرة البرمجية يتم تنفيذها وإعادة استخدامها أكثر من مرة، وعادةً ما تُكتب وفق الصيغة التالية: var example = function() { // code to execute } example(); النسخة الأخيرة من الجافا السكريبت -حتى وقت كتابة هذا الدرس- تسمح باستخدام الدوال السهمية والتي تُكتب وفق الصيغة التالية: var example = () => { // code to execute } example(); في الدوال السهمية تُكتب الأقواس لاستقبال معاملات الدالة. في حالة كان لدينا مُعامل واحد فقط فنستطيع حينها التخلي عن كتابة الأقواس كما في الصيغة التالية: var example = parameter1 => { // code to execute } سنعتمد في شرح هذا الدرس على الدوال السهمية، وللاطلاع أكثر على هذا الموضوع، تستطيع الذهاب الى هذا المرجع . الوظيفة ()forEach تقوم الوظيفة ()forEach باستدعاء دالة ليتم تنفيذها على كل عنصر في مصفوفة معينة. فمثلًا، نفترض وجود المصفوفة fish بالعناصر التالية: let fish = [ "piranha", "barracuda", "cod", "eel" ]; نستطيع استخدام الوظيفة ()forEach لطباعة كل عنصر في المصفوفة fish على الطرفية: // Print out each item in the array fish.forEach(individualFish => { console.log(individualFish); }) Output piranha barracuda cod eel يوجد طريقة أخرى لعمل ما سبق وذلك باستخدام جملة التكرار for بالإضافة لاستخدام الخاصية length: // Loop through the length of the array for (let i = 0; i < fish.length; i++) { console.log(fish[i]); } استخدام جملة for السابقة في طباعة كل عنصر على حدة يعطينا نفس النتيجة عند استخدام ()forEach، ولكن استخدام الطريقة ()forEach يُعتبر خيارًا مختصرًا ومباشرًا وأفضل لمثل هذه الحالات. الوظيفة ()map تقوم الوظيفة ()map ببناء مصفوفة ناتجة عن استدعاء دالة على عناصر مصفوفة أخرى. نستطيع طباعة عناصر مصفوفة عنصر-عنصر كمثال توضيحي على كيفية استخدام وظيفة ()map ولكن على العكس من الوظيفة ()forEach، لابد من حفظ ناتج الوظيفة في متغير جديد. let fish = [ "piranha", "barracuda", "cod", "eel" ]; // Print out each item in the array let printFish = fish.map(individualFish => { console.log(individualFish); }); printFish; Output piranha barracuda cod eel مثال أخر على استخدام الوظيفة ()map، حيث نستطيع أيضًا أن نُغير قيمة كل عنصر في مصفوفة وحفظ العناصر الجديدة الناتجة عن هذا التغيير في مصفوفة أخرى. فمثلًا، يمكننا إضافة الحرف s الى نهاية كل عنصر في المصفوفة fish لجعل الأسماء أسماء جمع. // Pluralize all items in the fish array let pluralFish = fish.map(individualFish => { return `${individualFish}s`; }); pluralFish; Output [ 'piranhas', 'barracudas', 'cods', 'eels' ] المصفوفة الأصلية fish لم تتغير، ولكن المصفوفة الجديدة pluralFish أصبحت الان تحتوي على النسخة المُعدلة من المصفوفة الأصلية. الوظيفة ()filter تقوم الوظيفة ()filter بإنشاء مصفوفة جديدة تحتوي على عناصر من المصفوفة الأصلية تتوافق مع شرط معين. الهدف الرئيسي من هذه الوظيفة هو إجراء عملية الترشيح، فمثلًا، نستطيع أن نحصل من الوظيفة ()filter على مصفوفة جديدة تحتوي على العناصر التي تبدأ بحرف مُعين، وذلك بالاستفادة من خاصية فهرسة النصوص التي تُمكننا من الحصول على الحرف الأول لكل عنصر. let seaCreatures = [ "shark", "whale", "squid", "starfish", "narwhal" ]; // Filter all creatures that start with "s" into a new list let filteredList = seaCreatures.filter(creature => { return creature[0] === "s"; }); filteredList; Output [ 'shark', 'squid', 'starfish' ] في المثال السابق اختبرنا جميع العناصر التي تبدأ بالحرف s وحفظنا النتيجة في مصفوفة جيدة باسم filteredList. الوظيفة ()reduce تقوم الوظيفة ()reduce باختصار مصفوفة في قيمة واحدة، وعادةً يُرى هذا الاستخدام مع المصفوفات التي تحتوي على أرقام، مثل الحصول على مجموع عناصر مصفوفة: let numbers = [ 42, 23, 16, 15, 4, 8 ]; // Get the sum of all numerical values let sum = numbers.reduce((a, b) => { return a + b; }); sum; Output 108 تُستخدم الوظيفة ()reduce أيضًا مع النصوص وأنواع البيانات الأخرى، وتكون القيمة المُرجعة من الوظيفة إما رقم أو نص أو أي نوع بيانات أخر. الوظيفة ()find تُعيد الوظيفة ()find أول عنصر من مصفوفة يتوافق مع شرط مُعين. لتوضيح ذلك، سوف نُنشئ مصفوفة تحتوي على أسماء مخلوقات بحرية، وسنستخدم الوظيفة ()find في إيجاد المخلوقات البحرية ذات النوع الرخوي مثل الأخطبوط (من الرخويات). let seaCreatures = [ "whale", "octopus", "shark", "cuttlefish", "flounder" ]; // Check if a given value is a cephalopod const isCephalopod = cephalopod => { return [ "cuttlefish", "octopus" ].includes(cephalopod); } seaCreatures.find(isCephalopod); Output Octopus بما أن “octopus” هو العنصر الأول في المصفوفة seaCreatures الذي ينطبق عليه الشرط، فإنه هو القيمة الأولى التي تم إرجاعها. نستفيد من الوظيفة ()find في عملنا مع المصفوفات التي تحتوي على قيمة عديدة. الوظيفة ()findIndex تُعيد الوظيفة ()findIndex فهرس أول عنصر من مصفوفة يتوافق مع شرط مُعين. سنستخدم نفس المثال السابق في وظيفة ()find لإيجاد فهرس أول عنصر من المصفوفة من النوع الرخوي. let seaCreatures = [ "whale", "octopus", "shark", "cuttlefish", "flounder" ]; باستخدام المصفوفة isCephalopod مع الوظيفة ()findIndex سنحصل على رقم الفهرس للعنصر بدلا من قيمته. // Check if a given value is a cephalopod const isCephalopod = cephalopod => { return [ "cuttlefish", "octopus" ].includes(cephalopod); } seaCreatures.findIndex(isCephalopod); Output 1 العنصر “octopus” هو العنصر الأول من المصفوفة الذي ينطبق عليه الشرط وموقعه في الفهرس رقم 1 وهي القيمة التي حصلنا عليها. في حالة لم ينطبق الشرط على أية عنصر في المصفوفة، فإن القيمة المرجعة هي -1. const isThereAnEel = eel => { return [ "eel" ].includes(eel); } seaCreatures.findIndex Output -1 خاتمة في هذا الدرس قمنا بمراجعة أغلب وظائف توابع التكرار في الجافا سكريبت. وظائف التكرار تعمل على كل عنصر في المصفوفة كلٌ على حدة وغالبًا ما يتم تطبيق دالة جديدة معها. تم شرح كيفية المرور على المصفوفة وعناصرها من خلال حلقة تكرار، تغيير قيمة العنصر في المصفوفة، ترشيح المصفوفة، اختصار المصفوفة في قيمة واحدة والبحث في المصفوفة باستخدام قيم العناصر او فهارسها. لأخذ فكرة عن المصفوفات تستطيع الاطلاع على درس فهم المصفوفات في الجافا سكريبت . ترجمة -وبتصرّف- للمقال How To Use Array Methods in JavaScript: Iteration Methods لصاحبته Tania Rascia حقوق الصورة البارزة محفوظة لـ Freepik
    1 نقطة
×
×
  • أضف...