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

Abdulrahman Muhammad

الأعضاء
  • المساهمات

    193
  • تاريخ الانضمام

  • تاريخ آخر زيارة

كل منشورات العضو Abdulrahman Muhammad

  1. كتابة البرمجيات من الصفر في بعض الأوقات تكون مهمة وعامل اساسي في ترسيخ المعلومات وتحديد افكارك، وفي بعض الأحيان سيكون تضييع للوقت والجهد في وجود طريق اسهل وتم اختباره مسبقاً يمكن اتباعه وتطوريه بالطريقة المناسبة لك في حين كنت مبتدءاً او في مرحلة تعلم شئ جديد احرص على ان تصممه وتنفذه بنفسك حتى تتعامل مع المشاكل وترسخ الحلول داخل ذهنك لكن اذا كنت متقدماً اكثر من الممكن ان تستعين بالذكاء الإصطناعي في فهم أو حل مشاكل أكبر أو إبداء رأيه في الطريقة البرمجية المعينة التي اتبعتها ويقترح عليك التحسينات وهكذا لذا اجعل بينهما مزيج متكامل يكمل بعضهما حتى تحافظ على ابداعك وفهمك وايضا تستغل وقتك
  2. الاعتقاد بأن الذكاء الاصطناعي سيحل محل المبرمجين هو مفهوم خاطئ. في الواقع، سيصبح الذكاء الاصطناعي أداة داعمة وقوية تعزز قدرات المبرمجين ولا تحل محلهم. لماذا يعمل المبرمجون على تطوير الذكاء الاصطناعي؟ لأنه يشكل نقلة نوعية في عالم البرمجة، يشبه الأمر وجود طريقين الطريق التقليدي المألوف و طريق جديد أسرع وأكثر كفاءة طبعاً سيختار المبرمج الذكي الطريق الأسرع، لكن بحكمة ودراية، مع الأخذ في الاعتبار: ضرورة الفهم للأساليب الجديدة أهمية المراجعة والتدقيق اكتساب مهارات للتكيف مع التقنيات المتطورة لذا المبرمج الناجح الناجح هو من: يستثمر في تطوير مهاراته باستمرار يحافظ على مهاراته التحليلية والإبداعية يواكب التطورات التقنية بذكاء
  3. يوجد بعض التقنيات اذا استخدمتها بشكل غير قانوني او غير مصرح به يعتبر جريمة إلكترونية مثل: إذا استخدمته لتعطيل مواقع أو أنظمة الآخرين. إذا أخفيتَه في برامج غير مرخصة لتخريبها. لذا دائماً احصل على موافقة قبل اختبار أو تطبيق أي تقنيات أمنية على أنظمة لا تملكها.
  4. Kill Switch هي آلية التوقف الفوري للنظام فإذا نتحدث عن الآلية في المنظور البرمجي فهي عبارة عن آلية برمجية تسمح بتوقف الكود او النظام فوراً في حين حدوث شروط معينة. مثل: محاولات الأختراق انتهاء مدة صلاحيات معينة تم إعطائها للمستخدم انتهاك شروط معينة
  5. عرض الأعمال (Portfolio) مهم جدًا، فهو يساعد الشركات وأصحاب العمل على رؤية مشاريعك وفهم مهاراتك بشكل واضح.وإذا تعرض أعمالك مثلGitHub أو Kaggle يعرضها بشكل مرتب بيكون أفضل ويعطي انطباع احترافي.
  6. لكي تتمكن من رفع مشروع على GitHub والأستفادة من النسخة السحابية وتتمكن من مشاركة الملفات مع فريق العمل ومتابعة التحديثات الذي يقوم بها الفريق يمكنك اتباع الخطوات التالية: افتح موقع GitHub قم بإنشاء مستودع جديد (New Repository) قم بأختيار الأسم والوصف المناسب واضغط على إنشاء ثم يمكنك التحكم في المستودع وربطه مع النسخة المحلية باستخدام أوامر Git git init git add . git commit -m "رسالة توضح نوع العملية" git branch -M main git remote add origin https:رابط المشروع git push -u origin main وهل أذا رفعت المشرع على github وقمت بتعديله بعد رفعه سيعدل تلقائياً لا يقوم يقوم بالتحديث تلقائيا ، بل يجب عليك إعطائه بعض الأوامر في كل مرة تحتاج إلى تحديث ورفع النسخة المحلية إلى النسخة السحابية لكي يراها فريقك git add . git commit -m "رسالةتوضح نوع العملية" git push بهذه الطريقة يتم رفع التحديثات المحلية إلى النسخة السحابية انصحك بمعرفة الأوامر الخاصة ب Git عن طريق هذا المقال:
  7. تعلم TypeScript لا يعني التخلي عن JavaScript فلكل منهما استخداماته وتفضيلاته TypeScript مبنية على JavaScript، وهي فقط تضيف لها ميزات إضافية. وتتفاعل مع HTML و CSS، بشكل طبيعي.
  8. تستخدم كل من JavaScript وPHP في تطوير الواجهات الخلفية، لكن لكل منهما ميزاته وعيوبه. بعد احتراف JavaScript، قد لا تكون بحاجة لتعلّم PHP، خاصة إذا كنت تعمل بتقنيات JavaScript مثل Node.js لتطوير الخوادم. ومن أبرز مميزاتها أنها تُستخدم في الواجهة الأمامية والخلفية معًا، مما يزيد من فرص العمل بها في كثير من الشركات. أما تعلّم PHP فقد يكون مفيدًا إذا كنت تنوي العمل مع أنظمة إدارة المحتوى مثل WordPress، أو في بيئات تعتمد على PHP بشكل أساسي. يمكن أن تلاحظ التشابه بين JavaScript و TypeScript، لكن TS تتميز بعدة خصائص تجعل تعلمها مفيدًا، خصوصا في المشاريع المتقدمة: تحديد نوع المتغيرات يساعد في تقليل الأخطاء أثناء الكتابة. اكتشاف الأخطاء قبل تشغيل الكود، لأن TS يتحقق من الكود أثناء الكتابة. تنظيم أفضل في المشاريع الكبيرة، حيث تشجع على كتابة كود واضح ومنظم. إذا كنت ترغب ببدء تعلم TypeScript بسهولة، يمكنك الاطلاع على المقال المرفق الذي يشرح الأساسيات بطريقة بسيطة.
  9. من الأفضل أن تكمل المسار الثالث والرابع أولا، حتى تكتسب أساسا قويا في بايثون وإطار Django، مما يساعدك على فهم كيفية ربط الواجهة الأمامية بالخلفية بشكل أفضل. أما دورات الـ Crash Courses على يوتيوب، فهي مناسبة كبداية، في حين كانت لغتك الإنجليزية جيدة، ولكن يفضل أن تستمر بالتطبيق العملي حتى يسهل تثبيت وفهم المعلومات.
  10. تعلم Bootstrap 5 مفيد جدًا يتيح لك بناء تصاميم جاهزة بسرعة دون الحاجة لكتابة CSS كثير. لكن لا تشتت نفسك بين Bootstrap وTailwind، اختر إطارًا واحدًا وركز على تعلمه جيدًا، ثم يمكنك تعلم الآخر لاحقًا إذا رغبت. أما Canvas في HTML فهو مهم في حال كنت تحتاج لرسم رسومات أو تطوير ألعاب أو رسوم تفاعلية، لكنه ليس ضروريًا لكل مطور واجهات.
  11. النسخة الثالثة صالحة للتعلم، لكنها أقدم. من الأفضل تعلم النسخة الرابعة (4.1) لأنها أحدث وتحتوي على تحسينات جديدة. أنصح بالبدء بالنسخة الرابعة حالياً.
  12. مكتبة Tailwind CSS هي إطار (Framework) لتنسيق وتصميم الواجهات باستخدام CSS. توفر لك Tailwind مجموعة من (Classes) التي تمثل خصائص CSS محددة، وتقوم بتركيبها لإنشاء التصميم الذي تريده. مثال: لو أردت إنشاء زر بلون أزرق ونص أبيض بحواف دائرية، يمكنك استخدام Tailwind كالتالي: <button class="bg-blue-500 text-white rounded px-4 py-2"> اضغط هنا </button> كل كلاس هنا يعبر عن خاصية: bg-blue-500: خلفية زرقاء بدرجة معينة text-white: لون النص أبيض rounded: حواف دائرية px-4 py-2: حشوة داخلية أفقية وعمودية
  13. هذا يعتمد بشكل كبير على الوظيفة التي تتقدم لها وطبيعة الدور المطلوب داخل الشركة. إليك بعض السيناريوهات التي توضح متى يُتوقع منك إتقان HTML وCSS، ومتى قد يكون التركيز الأكبر على JavaScript ومكتباتها: 1. وظيفة Front-end Developer : مطلوب: HTML + CSS + JavaScript السبب: هذه الوظيفة تعتمد على بناء واجهات المستخدم من الصفر، وبالتالي من الضروري أن تكون لديك معرفة قوية بـ: هيكلة الصفحة باستخدام HTML تنسيق وتصميم العناصر بـ CSS إضافة التفاعل والسلوك بـ JavaScript أيضًا من الشائع طلب معرفة بإطارات عمل مثل React أو Vue. 2. وظيفة Front-end باستخدام إطار عمل فقط (مثلاً React أو Angular): مطلوب: JavaScript + إطار العمل لكن: رغم الاعتماد على إطار العمل، يبقى وجود HTML وCSS مهمًا لأن: JSX في React يُكتب بأسلوب يشبه HTML. تنسيق المكونات لا يزال يتم باستخدام CSS أو CSS-in-JS. لذلك حتى في هذه الوظائف، لا يُمكن تجاهل HTML وCSS. 3. وظيفة Full-stack Developer: مطلوب: HTML + CSS + JavaScript + Backend (مثلاً Node.js) لأنك تتعامل مع الواجهة الأمامية والخلفية معًا، من الطبيعي أن تحتاج لإتقان التقنيات الأساسية للواجهة الأمامية. 4. وظيفة Back-end فقط: مطلوب: JavaScript (إذا كنت تعمل بـ Node.js) غالبًا لا يُطلب إتقان HTML وCSS، لكن فهم أساسي لهما يفيدك في التعاون مع الفريق. في معظم وظائف تطوير الويب، لا تكفي JavaScript وحدها، بل يُتوقع منك أن تكون لديك معرفة جيدة بـ HTML وCSS، خصوصًا في الأدوار التي تشمل تطوير واجهات المستخدم.
  14. 1. التأكد من حفظ النموذج في المسار الصحيح في Kaggle Notebooks، لا يمكنك حفظ الملفات مباشرة في أي مكان، بل يجب حفظها في المسار /kaggle/working/ حتى تتمكن من تحميلها لاحقًا. مثال على حفظ النموذج باستخدام pickle: import pickle # حفظ النموذج with open('/kaggle/working/model.pkl', 'wb') as file: pickle.dump(model, file) 2. التحقق من حفظ الملف بعد التشغيل بما أن Kaggle يعمل في بيئة مؤقتة، فمن الجيد التأكد من أن الملف قد تم حفظه بنجاح قبل انتهاء الجلسة. استخدام الأمر التالي لعرض الملفات المحفوظة: !ls /kaggle/working/ إذا رأيت model.pkl ضمن الملفات، فهذا يعني أنه تم حفظه بنجاح. 3. تحميل النموذج لاحقًا داخل نفس الجلسة عند الحاجة إلى استخدام النموذج لاحقًا، يمكنك تحميله بنفس الطريقة: with open('/kaggle/working/model.pkl', 'rb') as file: loaded_model = pickle.load(file) الخلاصة استخدم المسار /kaggle/working/ لحفظ النموذج. تحقق من أن الملف محفوظ عبر !ls /kaggle/working/. قم بتنزيل الملف إذا كنت تريد استخدامه خارج Kaggle.
  15. لحل هذه المشكلة، يمكنك استخدام دالة في PHP لطباعه الوقت الحالي بتنسيق يتضمن اليوم، الشهر، السنة، الساعة، الدقيقة، والثانية، ثم استخدام هذه البيانات لحساب الفرق بين تاريخين بالساعة. 1. دالة لطباعه الوقت الحالي بتنسيق مناسب: إذا كنت تستخدم قاعدة بيانات MySQL وتحتاج إلى تخزين التاريخ والوقت بتنسيق يحتوي على اليوم، الشهر، السنة، الساعة، الدقيقة، والثانية، يمكنك استخدام الدالة NOW() في SQL أو يمكنك بناء التنسيق باستخدام PHP. $datetime = date('Y-m-d H:i:s'); // تنسيق: سنة-شهر-يوم ساعة:دقيقة:ثانية إدراج التاريخ والوقت في قاعدة البيانات: $sql = "INSERT INTO your_table (your_datetime_column) VALUES ('$datetime')"; 2. حساب الفرق بين تاريخين بالساعة: لحساب الفرق بين تاريخين يتم جلبهما من قاعدة البيانات بالساعة، يمكنك استخدام دالة strtotime() في PHP ثم حساب الفرق بين التاريخين. PHP: // مثال على جلب تاريخين من قاعدة البيانات (بتنسيق 'Y-m-d H:i:s') $date1 = '2025-02-25 14:30:00'; // التاريخ الأول $date2 = '2025-02-26 18:45:00'; // التاريخ الثاني // تحويل التواريخ إلى طوابع زمنية (timestamps) $timestamp1 = strtotime($date1); $timestamp2 = strtotime($date2); // حساب الفرق بين التاريخين بالثواني $diffInSeconds = abs($timestamp2 - $timestamp1); // تحويل الفرق إلى ساعات $diffInHours = $diffInSeconds / 3600; // 3600 ثانية في الساعة echo "الفرق بين التاريخين هو: " . $diffInHours . " ساعة"; 3. استعلام SQL لجلب التاريخ والوقت من قاعدة البيانات: إذا كنت ترغب في جلب التاريخ من قاعدة البيانات بتنسيق مناسب ثم حساب الفرق بين التاريخين، يمكنك استخدام الاستعلام التالي: استعلام SQL: SELECT your_datetime_column FROM your_table WHERE your_condition; ========================================= ملخص الحل: استخدم دالة date('Y-m-d H:i:s') في PHP لاحتساب الوقت الحالي. قم بإدخال الوقت الحالي إلى قاعدة البيانات. استخدم دالة strtotime() لتحويل التواريخ إلى طوابع زمنية، ثم احسب الفرق بينها بالثواني. قسم الفرق على 3600 لتحصل على الفرق بالساعات. باتباع هذه الخطوات، يمكنك حساب الفرق بين التاريخين بدقة وحساب الفرق بالساعة.
  16. نعم، XGBClassifier (XGBoost) يُعتبر من أشهر وأقوى النماذج المستخدمة في مسابقات Kaggle، ويُستخدم بشكل واسع بسبب أدائه العالي وسرعته. لماذا XGBClassifier شائع في Kaggle؟ 1. دقة عالية: XGBoost يعتمد على تقنيات مثل Boosting، مما يجعله من أفضل النماذج في التنبؤات. 2. سرعة في التدريب: يتمتع XGBoost بآلية التوازي (Parallel Processing)، مما يجعله أسرع مقارنةً بـ RandomForest و Gradient Boosting. 3. مقاوم لـ (Overfitting): يحتوي XGBoost على معلمات تنظيمية (Regularization مثل lambda و alpha) تساعد في تحسين أداء النموذج ومنع الإفراط في التكيف مع البيانات التدريبية. 4. التعامل مع القيم المفقودة: XGBoost يمكنه التعامل تلقائيًا مع القيم المفقودة دون الحاجة إلى معالجتها يدويًا. 5. دعم أنواع مختلفة من البيانات: يمكن استخدامه مع البيانات المهيكلة (Structured Data)، وهو ما يجعله شائعًا جدًا في Kaggle حيث تكون معظم البيانات بهذا الشكل. أمثلة على استخدامه في مسابقات Kaggle الشهيرة Titanic (التنبؤ بالبقاء على قيد الحياة) House Prices (التنبؤ بأسعار العقارات) Santander Customer Satisfaction (التنبؤ برضا العملاء) IEEE-CIS Fraud Detection (اكتشاف الاحتيال في المدفوعات)
  17. أسباب بطء RandomizedSearchCV 1. عدد كبير من القيم الممكنة (param_distributions) إذا كنت تستخدم نطاقًا واسعًا جدًا من القيم لكل معلمة، فسيأخذ البحث وقتًا طويلاً. 2. n_iter كبير جدًا إذا كنت قد ضبطت n_iter على قيمة عالية (مثل 100 أو أكثر)، فسيأخذ البحث وقتًا أطول. 3. حجم البيانات كبير جدًا إذا كنت تعمل على مجموعة بيانات ضخمة، فقد يؤثر ذلك على سرعة البحث. 4. عدد كبير من الطيات (cv=5 أو cv=10) كلما زاد عدد الطيات (cross-validation)، زاد وقت التدريب. ------------------------------------------------------------------------------- حلول لتسريع RandomizedSearchCV 1. تقليل n_iter جرّب تقليل عدد التوليفات العشوائية: استخدم n_iter=10 أو 20 بدلًا من 100 أو أكثر. 2. تقليل عدد الطيات (cv) استخدم cv=3 بدلاً من cv=5 أو cv=10: 3. تشغيل البحث على أكثر من نواة (n_jobs=-1) يتيح لك ذلك استخدام جميع المعالجات المتاحة لتسريع العملية.
  18. ما هي الخاصية n_iter في RandomizedSearchCV؟ في RandomizedSearchCV، الخاصية n_iter تُحدد عدد التكرارات (iterations) التي سيتم تجربتها أثناء البحث عن أفضل مجموعة من المعلمات (hyperparameters). كيف تعمل؟ على عكس GridSearchCV، الذي يجرب كل (مجموعة من القيم) الممكنة للمعلمات، يقوم RandomizedSearchCV بتجربة عدد محدد من (مجموعة من القيم) العشوائية من المعلمات. n_iter تتحكم في عدد هذه (مجموعة من القيم). كلما زادت n_iter، زادت فرص العثور على أفضل معلمات، لكن وقت البحث سيزداد أيضًا. مثال عملي: from sklearn.model_selection import RandomizedSearchCV from sklearn.ensemble import RandomForestClassifier import numpy as np # تعريف المعلمات الممكنة param_dist = { 'n_estimators': np.arange(10, 200, 10), 'max_depth': np.arange(3, 20), 'min_samples_split': np.arange(2, 10) } # إنشاء نموذج RandomForest rf = RandomForestClassifier() # البحث العشوائي مع تجربة 10 توليفات فقط random_search = RandomizedSearchCV(rf, param_distributions=param_dist, n_iter=10, cv=5, scoring='accuracy', random_state=42) # تشغيل البحث random_search.fit(X_train, y_train) متى تستخدم n_iter؟ إذا كنت تريد تقليل وقت البحث وتوفير الموارد مقارنةً بـ GridSearchCV. عندما يكون لديك عدد كبير من المعلمات المحتملة، وتريد البحث في عينة منها فقط. إذا كنت تبحث عن تحسين تقريبي للمعلمات بدلًا من البحث الشامل. الخلاصة: n_iter: تحدد عدد التكرارات (التجارب) التي يتم تنفيذها لاختيار مجموعة من المعلمات بشكل عشوائي. قيمة صغيرة (n_iter=10)بحث سريع ولكن قد لا يجد أفضل المعلمات. قيمة كبيرة (n_iter=100)بحث أكثر دقة ولكنه يحتاج إلى وقت أطول. بالتالي، n_iter تساعد في تحقيق توازن بين سرعة البحث ودقته!
  19. لفرق بين scoring و refit في GridSearchCV في GridSearchCV من مكتبة Scikit-Learn، يتم استخدام كل من scoring و refit ولكن لكل منهما وظيفة مختلفة: scoring: تحديد معيار التقييم يحدد طريقة تقييم النماذج أثناء البحث عن أفضل المعلمات (hyperparameters). يمكن أن يكون مقياس دقة (accuracy) أو متوسط خطأ (neg_mean_squared_error) أو F1-score أو أي مقياس آخر. يقبل إما: مقياسًا جاهزًا مثل "accuracy", "f1", "roc_auc"... دالة مخصصة يقوم المستخدم بتحديدها. مثال: 📌 هنا يتم اختيار النموذج بناءً على أعلى قيمة لمقياس accuracy. -------------------------------------------------------------------------------- refit: إعادة تدريب النموذج الأفضل عند ضبطه على True (وهو الافتراضي)، يقوم GridSearchCV بإعادة تدريب النموذج باستخدام أفضل المعلمات التي تم العثور عليها على جميع البيانات. يمكن تعيينه على مقياس معين إذا كنت تستخدم أكثر من مقياس في scoring. مثال مع refit محدد لمقياس معين: هنا يتم اختيار أفضل نموذج بناءً على roc_auc، حتى لو كانت هناك مقاييس أخرى. -------------------------------------------------------------------------------- الخلاصة: إذا كنت تريد فقط تقييم النماذج، استخدم scoring إذا كنت تريد إعادة تدريب النموذج الأفضل، استخدم refit
  20. النظام الشبكي في Bootstrap هو نظام مرن ومبني على Flexbox يُستخدم لتصميم صفحات الويب بطريقة منظمة ومتجاوبة. يعتمد على 12 عمودًا في كل صف (row)، مما يتيح تقسيم المحتوى إلى أعمدة مختلفة بناءً على حجم الشاشة، مما يسهل تصميم مواقع متجاوبة ومتناسقة. لإعطاء إجابة مثالية عن أي موضوع تقني، يمكن اتباع الخطوات التالية: 1. ابدأ بتعريف واضح ومباشر للمفهوم وضّح الفكرة الأساسية باختصار، مثل: "النظام الشبكي هو..." 2. اذكر أهمية المفهوم ولماذا يُستخدم مثل: "يساعد في تصميم تخطيطات متجاوبة وسهلة التكيف مع مختلف الشاشات." 3. قدم تفاصيل تقنية بسيطة وسهلة الفهم مثل: "يعتمد على تقسيم الصفحة إلى 12 عمودًا، ويمكن تخصيص العرض باستخدام col-md-, col-lg-، إلخ." 4. استخدم أمثلة عملية لتعزيز الفهم باتباع هذه الخطوات، ستكون إجاباتك دقيقة، وسهلة الفهم.
  21. متى يتم تقسيم البيانات إلى (تدريب - تطوير - اختبار) ومتى يكون (تدريب - اختبار) كافيًا؟ أولًا: فهم الفرق بين الأقسام الثلاثة عند العمل على تدريب نموذج في التعلم الآلي، يمكن تقسيم البيانات إلى: مجموعة التدريب (Training Set) → تُستخدم لتدريب النموذج. مجموعة التطوير/التحقق (Validation Set) → تُستخدم لضبط المعلمات وتحسين الأداء وتجنب overfitting. مجموعة الاختبار (Test Set) → تُستخدم لتقييم أداء النموذج النهائي على بيانات جديدة لم تُستخدم أثناء التدريب. إذا كان لديك مجموعة بيانات صغيرة، فمن الأفضل الاكتفاء بتقسيم البيانات إلى: 80% تدريب (Train) 20% اختبار (Test) لكن! في هذه الحالة، قد لا يكون لديك وسيلة لضبط المعلمات بشكل دقيق، مما قد يؤدي إلى Overfitting. لذلك، هذه الطريقة تناسب النماذج البسيطة أو عندما يكون لديك بيانات محدودة جدًا. إذا كان لديك مجموعة بيانات كبيرة وترغب في ضبط أداء النموذج، فمن الأفضل التقسيم إلى ثلاث مجموعات: 70% تدريب (Train) → لتعليم النموذج. 15% تطوير/تحقق (Validation) → لضبط المعلمات وتقليل Overfitting. 15% اختبار (Test) → لتقييم النموذج النهائي. هذه الطريقة مناسبة عند العمل مع نماذج معقدة مثل الشبكات العصبية العميقة (Deep Learning) أو عند الحاجة إلى ضبط الهايبر باراميترز (Hyperparameters). إذا كان لديك بيانات صغيرة: استخدم تدريب - اختبار فقط. إذا كان لديك بيانات كبيرة وتحتاج لضبط المعلمات: استخدم تدريب - تطوير - اختبار. إذا كان لديك بيانات قليلة لكن تريد تقييمًا أكثر دقة: استخدم K-Fold Cross Validation. الاختيار يعتمد على حجم البيانات وتعقيد النموذج! ======================================================== ما هي مجموعة التحقق؟ هي مجموعة بيانات منفصلة عن بيانات التدريب والاختبار، تُستخدم أثناء التدريب لتقييم أداء النموذج وضبط المعلمات دون التأثير على التقييم النهائي. لماذا نستخدم مجموعة التحقق؟ 1.ضبط الهايبر باراميترز (Hyperparameters Tuning): تساعد في اختيار المعلمات المثلى مثل معدل التعلم، عدد الطبقات في الشبكة العصبية، وغيرها. 2. تجنب Overfitting: إذا كان الأداء على التدريب جيدًا لكن سيئًا على التحقق، فهذا يعني أن النموذج قد حفظ البيانات بدلاً من تعميمها. 3. وقف التدريب المبكر (Early Stopping): عندما نلاحظ أن الأداء على التحقق بدأ في التراجع رغم تحسن التدريب، فهذا مؤشر على ضرورة التوقف لتجنب Overfitting. لديك بيانات وتصمم شبكة عصبية لتصنيف الصور، يمكنك تقسيمها كالتالي: 70% تدريب → لتعليم النموذج 15% تحقق → لضبط المعلمات والتحقق من التحسين 15% اختبار → للتقييم النهائي إذا وجدت أن دقة التحقق لا تتحسن أو تتراجع بينما دقة التدريب تزيد، فهذا يعني Overfitting ويجب تعديل المعلمات. عند استخدام K-Fold Cross Validation، حيث نقسم البيانات إلى K أجزاء ويتم التحقق مع كل تكرار. عندما يكون لديك بيانات قليلة جدًا، فتقسمها إلى تدريب واختبار فقط لتوفير أكبر كمية ممكنة من البيانات للتدريب. الخلاصة: مجموعة التحقق ضرورية لضبط المعلمات وتجنب Overfitting. تُستخدم لاختيار النموذج الأفضل قبل تقييمه على بيانات الاختبار. بدونها، قد يكون النموذج غير عامّ ويعمل جيدًا فقط على البيانات التي تدرب عليها.
  22. ImageNet ليس مسابقة ولا خوارزمية، بل هو مجموعة بيانات ضخمة (Dataset) تُستخدم في تدريب نماذج التعلم العميق، خاصة في رؤية الحاسوب (Computer Vision). ImageNet هو مشروع بدأه البروفيسورة Fei-Fei Li في جامعة ستانفورد عام 2009. يحتوي على أكثر من 14 مليون صورة مصنفة إلى أكثر من 20,000 فئة (Category). كل صورة تكون مرتبطة بتسمية (Label) مأخوذة من قاعدة بيانات WordNet. يتم استخدامه بشكل شائع في تدريب وتقييم نماذج تصنيف الصور.
  23. لقد واجهت هذه المشكلة من قبل، وكانت معقدة بعض الشيء. الحل الذي نجح معي هو التواصل مباشرة مع دعم كورسيرا عبر الرابط التالي: https://www.coursera.support/s/learner-help-center-contact-us وضحت لهم المشكلة بالتفصيل، وذكرت سبب تغيير الاسم، وأرفقت مستندًا رسميًا يثبت الاسم الصحيح. استغرق الأمر حوالي 7-10 أيام حتى تم حل المشكلة وتغيير الاسم بنجاح.
  24. نعم، حذف الصفوف التي تحتوي على بيانات مفقودة (Missing Data) قد يؤدي إلى تحيز (Bias) أثناء تدريب النموذج، كما يمكن أن يؤثر على تحليل البيانات بطرق مختلفة. إليك التفاصيل: 1. تأثير حذف الصفوف على تحيز النموذج عند حذف عدد كبير من الصفوف، قد تصبح العينة المستخدمة في التدريب غير ممثلة بشكل جيد للبيانات الأصلية. إذا كانت البيانات المفقودة غير موزعة عشوائيًا (أي أن هناك نمط معين لفقدانها)، فقد يؤدي الحذف إلى تحيز في التنبؤات، مما يجعل النموذج غير قادر على التعميم على البيانات الحقيقية. 2. تأثير حذف الصفوف على تحليل البيانات يمكن أن يؤدي حذف البيانات إلى تقليل حجم العينة، مما يجعل الإحصائيات المستخرجة أقل دقة وأقل تمثيلًا للبيانات الأصلية. قد تفقد بعض العلاقات المهمة بين المتغيرات، مما قد يؤدي إلى استنتاجات خاطئة أثناء تحليل البيانات. 3. متى يكون الحذف خيارًا مناسبًا؟ إذا كانت نسبة البيانات المفقودة صغيرة جدًا (أقل من 5%)، فقد لا يكون للحذف تأثير كبير. إذا كانت القيم المفقودة موزعة بشكل عشوائي ، فقد يكون الحذف آمنًا نسبيًا. 4. ما البدائل الأفضل للحذف؟ إذا كان لديك عدد كبير من القيم المفقودة، يمكنك تجربة أحد الحلول التالية بدلًا من الحذف: تعويض القيم المفقودة استخدام المتوسط أو الوسيط: استخدام النماذج لتوقع القيم المفقودة: يمكن استخدام خوارزميات مثل KNNImputer أو Random Forest Regressor لملء القيم المفقودة. الحذف العشوائي للصفوف قد يسبب تحيزًا في النموذج ويؤثر على دقة التحليل. من الأفضل استخدام طرق تعويض القيم المفقودة مثل التعبئة بالمتوسط أو النماذج التنبؤية لتجنب فقدان المعلومات.
×
×
  • أضف...