-
المساهمات
4863 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
60
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو محمد عاطف17
-
وعليكم السلام ورحمة الله وبركاته. إن collections هي وحدة (module) مدمجة في بايثون. توفر لك هياكل بيانات متقدمة ومحسنة مقارنة بالأنواع الأساسية مثل القوائم (list) و القواميس (dict) و المجموعات (set). وهذه الوحدة مرتبطة بشكل كبير بهياكل البيانات لأنها توفر لك نظام حاويات تخزن بها البيانات و التي ستسهل عليك التعامل مع البيانات بطرق أكثر كفاءة وفعالية. ومن هياكل البيانات التي توفرها لك : namedtuple : نستخدمها لإنشاء tuple بأسماء حقول مما يجعل الوصول إلى العناصر أكثر وضوحا بدلا من استخدام الفهرس والتعامل مع الارقام. deque : هي قائمة ذات طرفين تسمح بإضافة وحذف العناصر من البداية والنهاية بكفاءة وبسرعة دون الحاجة لإستخدام حلقات التكرار أو تغيرها يدويا. Counter : نستخدمها لحساب تكرار العناصر في قائمة أو أي كائن قابل للتكرار حيث تقوم بإنشاء قاموس مكون من المفاتيح وهي القيم الفريدة في البيانات و قيمة تلك القواميس هي عدد تكرار تلك البيانات. وإليك التوثيق الرسمي لها لمزيد من التفاصيل والدوال التي تقدمها لك : https://docs.python.org/3/library/collections.html
- 3 اجابة
-
- 1
-
-
وعليكم السلام ورحمة الله وبركاته. المشكلة الأولي أنك لا تقوم بحفظ بيانات المستخدم في localStorage عند تسجيل الدخول . ولذلك عند إعادة التوجيه إلى dashboard لا يتم العثور على user في localStorage ويتم إعادة التوجيه مرة أخرى إلى login . لهذا يجب عليك إستبدال الكود السابق بهذا الكود والذي نقوم فيه بتخزين بيانات المستخدم : const submitHandler = async (e) => { e.preventDefault(); mutate(formData, { onSuccess: (data) => { localStorage.setItem("user", JSON.stringify(data)); navigate("/dashboard"); } }); }; وتأكد من أن المتغير data هو بيانات المستخدم لديك . وإذا كانت البيانات بداخل كائن أخر بداخل data مثل data.user تأكد من حفظ data.user حينها. يجب أن يحل ذلك المشكلة إذا ظلت المشكلة أخبرني وذلك لنقوم بتجربة حل إنشاء حدث لإعادة تحديث الحالة.
- 4 اجابة
-
- 1
-
-
هل هذه هي الصفحة التي تقوم بإرسال البيانات لها ؟ إذا كان كذلك حاول طباعة البيانات في بداية الملف وأنظر هل يتم الطباعة أم لا في نافذة network وذلك لتتأكد هل يذهب الطلب بشكل صحيح أم لا . ولكن أعتقد أن المشكلة في ملف إرسال البريد . وخاصة في السطر أخير contact->send فإذا تم طباعة الجملة التي كتبتها في بداية الملف فإذا الخطأ في php-email-form.php
-
الخطأ الآن هو خطأ مختلف وهو 405 Method not allowed وهو يخبرك أن نوع الطلب هذا غير مسموح به أى أنه لا يقبل نوع POST . لذلك يجب عليك التأكد في الخادم أنك قمت بإنشاء الطلب من نوع POST أيضا وليس GET فقط .
-
هذا بسبب أنك تحاول إرسال البيانات إلى الخادم ولكنه لم يتم الوصول إلى الخادم وهذا بسبب إما أنه يوجد مشكلة لديك في الإنترنت أو أن الخادم لا يعمل . أوحدثت مشكلة أثناء تنفيذ طلبك . يرجى فتح نافذة network في أدوات المطور من خلال الضغط على CTRL + SHIFT + I وإختيار نافذة network : بعد ذلك قم بالضغط على زر send message مرة أخرى وستجد الطلب يظهر هنا ويمكنك رؤية سبب الخطأ. يرجى إرفاق صورة للطلب لديك في نافذة network مع إرفاق الكود لمساعدتك.
- 5 اجابة
-
- 1
-
-
هنا نحن في أكاديمية حسوب لا نقوم بالإجابة على أسئلة الإختبارات أو التقيمات ولكن يمكننا أن ندلك على طريقة الحل. أولا بالنسبة إلى توسيط العناصر في الشاشة فيمكنك إستخدام flexbox لتستطيع بناء عناصر متجاوبة وتوسيطها في أى حجم للشاشة ويمكنك قراءة الدرس التالي حول كيفية إستخدام flexbox : أما بخصوص المؤشر فتوجد خاصية في css تسمي caret-color يمكنك قراءة كيفية إستخدامه من خلال موسوعة حسوب على الرابط التالي : الخاصية caret-color ولتستطيع إنشاء border يحوى لونين يمكنك إستخدام الدالة linear-gradient() في css مع الخاصية border-image لتحقيق ذلك ويمكنك قراءة كيفية إستخدام تلك الخاصيتين من خلال موسوعة حسوب على الرابط التالي : الدالة linear-gradient() الخاصية border-image يمكنك محاولة حل التقيم بنفسك وإخبارنا بالكود الذي توصلت إليه .
- 1 جواب
-
- 1
-
-
ستجدين أسفل فيديو الدرس صندوق للتعليقات كما هنا يرجى طرح سؤالك أسفل الدرس وليس هنا حيث هنا قسم الأسئلة العامة ولا نقوم بإجابة الأسئلة الخاصة بمحتوى الدورة أو الدرس، وذلك لمعرفة الدرس الذي توجد به مشكلتك و لمساعدتك بشكل أفضل.
-
لا يمكنك إستخدام متغير قبل تعريفه في أى لغة برمجة . لذلك يجب عليك نقل هذا الكود في بداية الصفحة لتستطيع إستخدامه في أى مكان بعده.
- 15 اجابة
-
- 1
-
-
أولا يجب أن نتفق أنه لا يوجد دورة ستجعلك محترفا فقط من خلال متابعة ومشاهدة الدروس فقط حيث بعد الإنتهاء من الدورة سيتوجب عليك العمل على نفسك والمذاكرة دائما خصوصا في مجال مثل الذكاء الإصطناعي وتعلم الآلة حيث يتطور هذا المجال بشكل كبير جدا وسريع. ولكن هنا في دورة الذكاء الإصطناعي لا تكتفي الأكاديمية بتدريس الأساسيات فقط بل ستقوم بتطبيقات عملية ومشاريع حقيقية والتي ستجعلك تعرف طبيعة الوظائف الحالية في المجال وأيضا تتدرب على مشاريع موجودة حقيقية . مما تؤهلك بعد الإنتهاء من الدورة أن تحصل على وظيفة شريطة أن تكون قد درست جيدا وقمت بالتطبيق العملي والتدريب على مشاريع حقيقية. ومن مميزات الدورة هنا في أكاديمية حسوب أنك يتوفر لك الوصول مدى الحياة للدورة بجميع تحديثاتها . فتقوم الأكاديمية دائما بتحديثات المسارات والأدوات بناء على سوق العمل والمتطلبات فيه . وأيضا تقوم بإضافة مسارات جديدة وغيرها مما ستساعدك في سوق العمل. ولهذا فإذا أتممت الدورة وقد فهمت الدروس وقمت بالتطبيق فعمليا أن الآن مؤهل لدخول سوق العمل كشخص متوسط أو مبتدئ ولكنك سيكون لديك الأساسيات الرئيسية والمعرفة الكافية للحصول على وظيفة ولكن كما وضحت لك سيتوجب عليك العمل والمذاكرة ومتابعة التحديثات دائما . ويمكنك مشاهدة الفيديوا التعريفي التالي عن الدورة و ما الذي ستتعلمه فيها والخبرات التي ستحصل عليها منها :
-
سؤالك لم يكن واضح قليلا إعتقد أنك تريد فقط مجموع الدول وعدد سكانها التي أكبر من شرط معين . <?php function latestitem1($select, $table, $innerjoin = null, $where = null) { global $con; $latestitems = $con->prepare("SELECT $select FROM $table $innerjoin $where"); $latestitems->execute(); $latestitem = $latestitems->fetchall(); return $latestitem; } $nations = latestitem1("nation.*", "nation", "", "", ""); $totalPopulation = 0; $numberOfCountries = count($nations); foreach ($nations as $nation) { $nationid = $nation['nationid']; $nationname = $nation['nationname']; $nationnumber = nationnumber($nationid); $totalPopulation += $nationnumber; if ($nationnumber > 200) { echo "<td>" . $nationid . "</td>"; echo "<td>" . $nationname . "</td>"; echo "<td>" . $nationnumber . "</td>"; } } echo "<td>" . $numberOfCountries . "</td>"; echo "<td>" . $totalPopulation . "</td>"; من المفترض أن هذا الكود يقوم بتنفيذ ما تريده . ويمكنك تغيره بسهولة حسب الشرط الذي تريده.
- 15 اجابة
-
- 1
-
-
هل قمت بوضع أخر سطرين الخاصين بطباعة عدد الدول و عدد السكان خارج ال foreach ؟ يجب أن تقوم بوضعهم بالخارج كما فعلت لك في الكود السابق . ويرجى ملاحظة أنه سيتم إحتساب عدد الدول فقط التي لها عدد سكان أكبر من 200 . يرجى إرفاق صورة للكود الذي لديك إذا إستمرت المشكلة.
- 15 اجابة
-
- 1
-
-
يبدوا انك وضعت الكود الخاص بتصفير المتغير بداخل foreach لهذا حدثت لك تلك المشلكة . يجب نقله بخارج حلقة for هكذا : <?php function latestitem1($select, $table, $innerjoin = null, $where = null) { global $con; $latestitems = $con->prepare("SELECT $select FROM $table $innerjoin $where"); $latestitems->execute(); $latestitem = $latestitems->fetchall(); return $latestitem; } $nations = latestitem1("nation.*", "nation", "", "", ""); $totalPopulation = 0; $numberOfCountries = 0; foreach ($nations as $nation) { $nationid = $nation['nationid']; $nationname = $nation['nationname']; $nationnumber = nationnumber($nationid); if ($nationnumber > 200) { $totalPopulation += $nationnumber; $numberOfCountries++; echo "<td>" . $nationid . "</td>"; echo "<td>" . $nationname . "</td>"; echo "<td>" . $nationnumber . "</td>"; } } echo "<td>" . $numberOfCountries . "</td>"; echo "<td>" . $totalPopulation . "</td>";
- 15 اجابة
-
- 1
-
-
يرجي إرفاق الكود كما طلبت منك . حيث لا اعلم ما هي بنية المتغيرات لديك . ولكن يجب على الفكرة أن تكون واحدة ويمكنك تطبيقها بناء على الكود الذي لديك .
- 15 اجابة
-
- 1
-
-
إذا يمكنك إنشاء متغيرين قبل الشرط if وبداخل الشرط يمكنك زيادة ذلك المتغيرين كالتالي : $totalPopulation = 0; $numberOfCountries = 0; If($nationnumber>30){ $totalPopulation += $nationnumber; $numberOfCountries++; // توليد الجدول } وهكذا في النهاية سيكون لديك المتغيرين totalPopulation والذي يحوي عدد السكان و numberOfCountries والذي يحوي عدد الدول.
- 15 اجابة
-
- 1
-
-
وعليكم السلام ورحمة الله وبركاته. هل تقصد أن الجدول الذي يتم توليده ديناميكيا يتم حفظه في قاعدة البيانات ؟ أم أين يتم توليده ؟ إذا كان يتم توليده بالكود يرجى توضيح الكود الذي تعمل به وهيكل البيانات التي لديك التي تقوم بها بإنشاء الجدول ديناميكيا . وإذا كنت تقصد أنه يتم توليده في الكود فالأمر بسيط كل ما عليك هو المرور على قائمة الدول كالتالي : function calculateTotalPopulation($countries) { $totalPopulation = 0; $numberOfCountries = count($countries); foreach ($countries as $country) { $totalPopulation += $country['Population']; } return [$numberOfCountries, $totalPopulation]; } ويمكنك تغير إسم العمود Population بإسم العمود الموجود لديك والذي يحوي عدد السكان في تلك الدولة. ويمكنك إستدعاء الدالة مباشرة وتمرير قائمة الدول . وستعيد لك قائمة بها مجموع عدد الدول و مجموع عدد السكان.
- 15 اجابة
-
- 1
-
-
وعليكم السلام ورحمة الله وبركاته. نعم عادة ما يتم استخدام ReLU في الطبقات المخفية حتى في مهام التصنيف. وذلك لأنه يعمل على إزالة القيم السالبة -أي يجعلها بصفر- ويحتفظ بالقيم الموجبة. و هذا يساعد في تسريع عملية التدريب مقارنة بوظائف التنشيط الأخرى مثل Sigmoid أو Tanh. وأيضا يساعد على تقليل مشكلة تلاشي التدرجات (Vanishing Gradients) وهو سهل الحساب لأنه يتطلب فقط مقارنة بسيطة (max(0, x)) . ولكن في الطبقة الأخيرة (Output Layer) في التصنيف لا يتم استخدام ال ReLU لأن نتائجها غير مناسبة لمخرجات التصنيف. فمثلا: إذا كان التصنيف لديك ثنائي فيفضل إستخدام Sigmoid في الطبقة الأخيرة. أما إذا كان التصنيف متعدد الفئات فيفضل استخدام Softmax للحصول على احتمالات تصنيف مفسرة. إذا تلخيص لما سبق يمكنك استخدام ال ReLU في الطبقات الخفية أثناء التدريب على مهمة التصنيف ولكن يجب عليك أن تتأكد من استخدام دوال تنشيط مناسبة في الطبقة الأخيرة مثل Sigmoid أو Softmax حسب نوع التصنيف الذي تقوم به.
- 3 اجابة
-
- 1
-
-
ستحتاج أن تتعلم التعامل مع وحدة fs في Node.js لتحقيق ذلك ويمكنك قراءة المقال التالي لتعلم كيفية التعامل مع تلك الوحدة. أولا ستحتاج إنشاء مسار لإستقبال البيانات من النموذج form . بعد ذلك ستحتاج أولا لقراءة البينات الموجودة في ملف json وذلك لتستطيع الإضافة عليها . حيث لو قمت بإضافة الملفات مباشرة على الملف ستفقد البيانات القديمة . ستحتاج إلى قراءة الملف من خلال الدالة readFile في fs بعد ذلك سيكون لديك البيانات الموجودة في الملف ولكن ستلاحظ انها سلسلة نصية لذلك يجب أولا تحويلها إلى json من خلال JSON.parse . بعد ذلك ستقوم بإضافة المستخدم الجديد إلى البيانات التي قمت بإستخراجها من الملف ومن ثم إضافة البيانات الجديدة بعد تعديلها من خلال الدالة writeFile في fs . وإليك الكود المسئول عن ذلك : app.post('/user', (req, res) => { const { name, email } = req.body; const newUser = { name, email }; fs.readFile('data.json', (err, data) => { let users = []; if (!err) { users = JSON.parse(data); //إذا كان هناك بيانات سابقة نقوم بإحضارها } // إضافة المستخدم الجديد إلى البيانات القديمة users.push(newUser); // حفظ البيانات الجديدة في الملف fs.writeFile('data.json', JSON.stringify(users, null, 2), (err) => { if (err) { return res.status(500).send('Error saving data'); } res.json({ message: 'User added successfully!' }); }); }); }); الآن يمكنك وضع الكود السابق لديك في الخادم وإرسال الطلب له وسيتم إضافة البيانات إلى الملف. والآن لننشئ عنوان أخر لجلب البيانات من الملف وإرسالها إلى العميل : app.get('/user', (req, res) => { fs.readFile('data.json', (err, data) => { if (err) { return res.status(500).send('Error reading data file'); } const userData = JSON.parse(data); res.json(userData); }); }); هنا إستخدمنا نفس الدالة السابقة readFile لقراءة الملف وإرسال البيانات منه بعد تحويلها إلى json من خلال JSON.parse .
-
وعليكم السلام ورحمة الله وبركاته. ليس في أغلب الأمر أن ارتفاع قيمة الدقة (accuracy) يعني أن النموذج أفضل و يتنبأ بشكل صحيح بنسبة أكبر. فمثلا تخيل أن في بيانات الأختبار أكثر من 80% من البيانات تعطي نتيجة متشابهة . فلو مثلا نختبر إذا الكان الشخص مريض أم لا . فإذا كانت بيانات الإختبار أكثر من 80% منها الشخص مريض وقام النموذج بالتبنؤ بأن جميع الأشخاص مرضي فهنا الدقة ستظهر لك 80% ولكن هنا النموذج ليس دقيقا بالمرة فالنموذج يخرج جيمع التنبؤات بأن الشخص مريض وتصادف أن بيانات الإختبار الشخص المريض فيها أكثر . فمثلا لو أعطينا النموذج بيانات لإختبارها وكانت تلك البيانات جميعها بهاض الشخص غير مريض . فهنا النموذج دقته ستكون 0% . لأنه تنبأ بأن جميع الأشخاص مرضى وهم عكس ذلك. لذلك ال accuracy لا تعطيك دقة النموذج بشكل أفضل إذا كانت بيانات الإختبار غير موزعة بشكل صحيح . لذلك يفضل إستخدام مقايس أخرى بالإضافة إلى ال accuracy مثل Precision و Recall و F1-score . فمثلا لو كان لديك نموذج يعطي دقة 90% ولكن ال Recall منخفض جدا فهنا هذا النموذج قد يكون غير مفيد في تطبيقات مثل الكشف عن الأمراض النادرة. وبالنسبة للنتيجة التي لديك : الدقة = 0.6258 ( 62.9%) الخسارة = 0.6506 فهنا الدقة ليست عالية لديك مما يخبرك أن النموذج يمكن تحسينه من خلال لضبط ال hyperparameters أو استخدام بنية مختلفة.ولاخظ أن ال loss (الخسارة)،لديك هي 0.6506 في هذه الحالةوهي منخفضة و هذا يشير إلى أن النموذج يتعلم بشكل صحيح وهذا جيد. إذا تلخيصا لما سبق لا تعتمد فقط على ال accuracy لتقييم النموذج قم بتحليل البيانات واستخدم مقاييس أخرى مثل Precision، Recall، F1-Precision و Recall و F1-score لفهم أداء النموذج بشكل أفضل.
-
إن حل المشكلات Problem solving هي مهارة أساسية يجب أن تتوافر في أى مبرمج وهي التي تميز المبرمج الجيد من غيره . وهي ستساعدك جدا في دراسة مجال ال AI و تمكنك من التفكير المنطق في حل المشكلات والبحث عن أفضل الحلول . وأيضا بالطبع يفضل دراسة هياكل البيانات Data Structure و ال Algorithmes . ويمكنك قراءة المقال التالي لمزيد من التفاصيل حول مهارة حل المشكلات وكيفية إتقانها : ويوجد العديد من المواقع المتخصصة في وضع المسابقات ومسائل لتطوير مهارة حل المشكلات ومنها التالي : Hackerrank و LeetCode: هذه المواقع تقدم تحديات برمجية تمكنك من تطبيق المفاهيم المختلفة بما في ذلك الأساسيات و الدوال، وتقديم الحلول الخاصة بك لهذه التحديات ولكن يفضل الدخول في المستويات المبتدئة. PyBites: يوفر PyBites تحديات يومية وأسبوعية لتطوير مهاراتك في Python. codeforces : وهو من المواقع الشهيرة جدا التى تقوم بعمل مسابقات عالمية يوميا وإسبوعيا حيث تكون تلك المسابقات عبارة عن مشاكل ويجب حلها عن طريق البرمجة وتختلف صعوبة المسابقات من مسابقة إلى أخرى و أيضا يعطيك نقاط عند دخول كل مسابقة وحل المشاكل لتتابع تقيمك وسط العديد من المبرمجين حول العالم . Codewars : يقدم تحديات برمجية مصنفة بمستويات مختلفة تتيح لك تطوير مهاراتك بشكل تدريجي. ولكن لا ينبغي عليك التوقف عن متابعة الدورة إذا كنت تسير بشكل جيد فيها . أما إذا كنت ترى صعوبة في تطبيق الأساسيات او لم تفهم الأكواد أو تجد صعوبة في كتابتها فيمكنك حينها التوقف قليلا لمذاكرة Data Structure و ال Algorithmes وتنمية مهارة حل المشكلات لديك.
-
وعليكم السلام ورحمة الله وبركاته. يكمن الفرق بينهما في وظيفة كل منهما . confusion_matrix : هي دالة تقوم بحساب مصفوفة الالتباس (Confusion Matrix) بناء على التوقعات الفعلية والتوقعات المتوقعة.و تعطيك المصفوفة نفسها في شكل مصفوفة من الأعداد حيث يتم عرض النتائج على شكل مصفوفة 2x2 . فمثلا إذا كان لديك 2 فئة (صحيح/خطأ) فسيتم عرض المصفوفة على النحو التالي: [[TN, FP], [FN, TP]] حيث: TN (True Negative) هو عدد الحالات التي تم تصنيفها بشكل صحيح ك "سلبية". FP (False Positive) هو عدد الحالات التي تم تصنيفها بشكل غير صحيح ك "إيجابية". FN (False Negative) هو عدد الحالات التي تم تصنيفها بشكل غير صحيح ك "سلبية". TP (True Positive) هو عدد الحالات التي تم تصنيفها بشكل صحيح ك "إيجابية". ولمزيد من التفاصيل حولها يمكنك قراءة الإجابة التالية والدرس التالي : ConfusionMatrixDisplay : هي أداة لعرض المصفوفة بشكل مرئي كرسومات وهي تستخدم لعرض المصفوفة الناتجة من confusion_matrix بطريقة رسومية مع إضافة بعض التحسينات مثل تسميات المحاور وتلوين الخلايا لمساعدتك في فهم أفضل لأداء النموذج.ليكون الناتج شئ كهذا : ويمكنك قراءة مزيد من التفاصيل وكيفية الإستخدام من خلال التوثيق الرسمي لها : https://scikit-learn.org/stable/modules/generated/sklearn.metrics.ConfusionMatrixDisplay.html إذا الفرق الرئيسي هو أن confusion_matrix تستخدم لحساب مصفوفة الالتباس فقط أما ConfusionMatrixDisplay تستخدم لرسم المصفوفة .
- 5 اجابة
-
- 1
-
-
وعليكم السلام ورحمة الله وبركاته. يفضل دائما إتباع ترتيب المسارات الموجود في الدورة حيث تم تصميم الدورات جميعها بترتيب مدروس ووضع هذا الترتيب لتوفير مسار تعليمي متدرج ومناسب للمبتدئين . وأيضا تهدف الأكاديمية إلى الشرح بشكل تصاعدي لضمان فهم الأساسيات قبل التعمق في المواضيع المتقدمة. ولكن إذا أردت مذاكرة مسارات قبل الأخرى فتأكد دائما من مذاكرة المسارات التي تعتمد على بعضها البعض بالترتيب الصحيح وأيضا تأكد من مذاكرة مسار التطبيقات العملية مباشرة بعد الإنتهاء من المسار الخاص بها وذلك لضمان تثبيت المعلومات لديك وعدم التشتت . فمثلا مسار "تطوير نماذج ذكاء اصطناعي لمتجر إلكتروني" والذي قمت بوضعه في الترتيب الأخير. هذا المسار هو تطبيق عملي و تكملة لمسار "تحليل البيانات" و مسار "تعلم الآلة" . لذلك يفضل جعل هذا المسار في الترتيب رقم 6 . وأيضا يفضل تبديل مسار "تطبيقات عملية على نقل التعلم" وهو الترتيب رقم 6 مع مسار "التعرف على الصور باستخدام الشبكات العصبية" وهو الترتيب رقم 7 . لان في هذا المسار يعتمد عليه ولهذا يفضل عدم التطبيق قبل مشاهدة هذا المسار . إذا يمكننا القول أن الترتيب المناسب لك : أساسيات بايثون التعامل مع البيانات تحليل البيانات Data Analysis تعلم الآلة Machine Learning تطوير نماذج ذكاء اصطناعي لمتجر إلكتروني التعلم العميق Deep Learning التعرف على الصور باستخدام الشبكات العصبية تطبيقات عملية على نقل التعلم Transfer Learning تطبيقات عملية على النماذج النصية الكبيرة LLMs تطبيقات عملية على نماذج الرؤية الحاسوبية ولكن كما وضحت لك إذا لم تكن تريد هذا الترتيب بناء على إهتمامك بتخصصات معينة فيفضل إتباع الترتيب الأساسي للدورة.
-
وعليكم السلام ورحمة الله وبركاته. إذا كنت قد فهمت سؤالك بشكل صحيح فيبدوا أنك تريد إستخدام شرط معين ولكنه بداخل سلسلة نصية في متغير . فإذا كان هذا ما تريده فيمكنك إستخدام الدالة eval والتي تقوم بتنفيذ كود php بداخل سلسلة نصية هكذا : $a = 10; $chance = '$a > 0'; if (eval("return $chance;")) { echo "ok"; } ولكن يجب أن تكون حذر عند استخدام eval() لأنها تنفذ أي كود PHP يتم تمريره إليها مما من الممكن أن يشكل خطر أو ثغرة لديك في النظام إذا لم تكن متأكدا من مصدر الكود الذي سيتم تنفيذه أو أن الكود سيأتي من المستخدم.
- 3 اجابة
-
- 1
-
-
لا الدالة predict_proba ليست موجودة بشكل مباشر في TensorFlow أو Keras هذه الدالة موجودة بمكتبة scikit-learn ولكنها موجودة في بعض النماذج وليس جميعها. في Keras يمكنك استخدام model.predict للحصول على احتمالات التنبؤ مثل الدالة predict_proba ولكن يجب أن تكون طبقة الإخراج sigmoid أو softmax.
- 4 اجابة
-
- 1
-
-
وعليكم السلام ورحمة الله وبركاته. numpy.where هي دالة تُستخدم لاختيار العناصر بناء على شرط معين. ويمكن استخدامها بدلا من if في بعض العمليات التي كنت تستخدم if فيها.وإن الدالة where تعمل بطريقة أكثر كفاءة عندما تتعامل مع المصفوفات. وإليك طريقة إستخدامها : numpy.where(condition, x, y) حيث : condition: هو الشرط الذي يتم التحقق منه . x: القيمة التي سيتم اختيارها إذا كانت condition صحيحة (True). y: القيمة التي سيتم اختيارها إذا كانت condition خاطئة (False). مثال : import numpy as np a = np.array([1, 2, 3, 4, 5]) result = np.where(a > 3, 'bigger', 'lower') print(result) #['lower' 'lower' 'lower' 'bigger' 'bigger'] هنا لاحظ أنه سيتم تنفيذ الدالة على جميع العناصر في المصفوفة وسيتم إستبدال العنصر بكلمة bigger إذا كان أكبر من 3 و lower إذا كان أقل منها أو يساوي 3. في المثال السابق كان يمكنك إستخدام if كالتالي : for num in a: if num > 3: print('bigger') else: print('lower') إذا نستخدم numpy.where للتحقق من شرط معين على جميع العناصر مرة واحدة في مصفوفة وتحديد قيمة معينة بناء على هذا الشرط. أما if نستخدمها للتحقق من شرط واحد في كل مرة. وإليك التوثيق الرسمي ل where : https://numpy.org/doc/2.2/reference/generated/numpy.where.html
- 3 اجابة
-
- 1
-
-
وعليكم السلام ورحمة الله وبركاته. الدالة predict_proba تستخدم في العديد من نماذج للحصول على احتمالات التنبؤ بدلا من الحصول فقط على التصنيف النهائي. حيث تقوم الدالة بإعادة الاحتمالات التي من الممكن حدوثها لكل عينة اختبار. فبدلا من إعطائك الفئة النهائية التي تم التنبؤ بها مثل 0 أو 1 أو مريض وغير مريض في التصنيف الثنائي تقوم بإعطاءك احتمال وجود العينة في كل فئة. مثلا مريض : 65% وغير مريض : 35%. from sklearn.ensemble import RandomForestClassifier model = RandomForestClassifier() model.fit(X_train, y_train) probabilities = model.predict_proba(X_test) print(probabilities) ففي الكود السابق ستجد أن المخرجات ستكون عبارة عن نسبة إحتمال حدوث كل فئة : [[0.85, 0.15], [0.30, 0.70], [0.10, 0.90], [0.60, 0.40]] وهكذا ستجد أن العينة الأولى لها نسبة 85% لحدوث الصنف الأول ونسبة 15% لحدوث الصنف الثاني.
- 4 اجابة
-
- 1
-