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

Mustafa Suleiman

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

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

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

  • عدد الأيام التي تصدر بها

    385

كل منشورات العضو Mustafa Suleiman

  1. افتحي مشروع Unity الذي تريدين تصديره كمكتبة، وانتقلي إلى File > Build Settings، وفي نافذة Build Settings، اختاري المنصة المستهدفة (Android أو iOS). وفي حال تستهدفي Android، اختاري Android من القائمة. ثم اضغطي على Player Settings في الزاوية السفلية اليسرى من نافذة Build Settings، وضبط الإعدادات اللازمة مثل اسم الحزمة (Package Name) وغيرها. وفي نافذة Build Settings، تأكدي من اختيار المنصة الصحيحة ثم اضغطي على Export في الزاوية اليمنى السفلى. وعندما تظهر نافذة التصدير، عليك تحديد خيار Export as a Library (أو خيار مشابه يعبر عن تصدير كمكتبة)، ثم اختيار مكان حفظ المجلد الذي سيحتوي على مكتبة Unity والضغط على Export لبدء عملية التصدير. بعد اكتمال التصدير، ستجدي مجلد يحتوي على مكتبة Unity في المسار الذي اخترتيه، باستطاعتك الآن دمج تلك المكتبة في مشروع Flutter كما هو موضح في الخطوات التي شرحها سابقًا.
  2. بالطبع لا، قد أديت ما عليك، هناك أخطاء بحاجة إلى خبرة مكتسبة تتأتى من التعلم من الأخطاء بمرور الوقت وتطور المستوى من خلال تنفيذ المشاريع والممارسة العملية والتعرض لأفكار وأخطاء مختلفة، لذا في البداية أنت بحاجة إلى من يرشدك لتوفير الوقت عليك وتوجيهك للطريق الصحيح. ليس المطلوب منك حل جميع المشاكل، بل المطلوب هو بذل جهدك ومحاولة اكتشاف ما المشكلة وفهم السبب، وإن تعذر ذلك عليك بالسؤال فمن لا يسأل لا يصل وتلك خصلة ليست جيدة فالسؤال بعد أن إتمام جانبك من المجهود هو الصحيح. المقال التالي سيفيدك:
  3. تعلم الآلة يعد مجالًا واسعًا ومعقدًا، ولكنه بالطبع أكثر سهولة عند البدء بالمفاهيم الأساسية وتتقدم بشكل تدريجي، وبما أنك تدرس حاليًا الـ Regression الانحدار، فتلك نقطة جيدة للبدء. وتتوفر العديد من المكتبات والأدوات مثل Scikit-Learn، TensorFlow، و PyTorch التي تسهل عملية بناء نماذج تعلم الآلة، فتلك المكتبات توفر واجهات برمجية سهلة الاستخدام وأدوات جاهزة للانحدار، التصنيف، التجميع، وغيرها. المجال الذي اخترته ليس بالسهل فهو بحاجة إلى وقت أطول وصبر كذلك، لذا عليك البدء بالأساسيات ثم التدرج ولا تنتظر نتائج سريعة، لذا مفتاح النجاح هو الاستمرار والصبر. فلا تنظر للأمر بصورته الكلية فتحبط، بل حاول تخطي جزء جزء لتصل، فمع تقدمك في تعلم الآلة ومحاولتك لحل مشكلات أكثر تعقيدًا، فإن تعقيد الكود يزيد بشكل كبير، وسيتطلب منك ذلك القيام بالعديد من المهام الإضافية، مثل: معالجة البيانات Preprocessing وتشمل تنظيف البيانات، معالجة القيم الناقصة، تحويل البيانات النصية إلى رقمية، وغيرها، وذلك أمرًا مرهقًا ويستغرق وقتًا طويلًا. هندسة الميزات Feature Engineering من خلال إنشاء ميزات جديدة من البيانات الحالية بشكل إبداعي لزيادة دقة النموذج، وتلك العملية تتطلب تفكيرًا إبداعيًا وفهمًا عميقًا للبيانات.
  4. هل إصدار Gradle المستخدم في مشروعك متوافق مع إصدار Android Gradle Plugin (AGP) المذكور في الخطأ (7.3.0)، عليك العثور على ملف gradle-wrapper.properties وتحققي من تعيين إصدار Gradle بشكل صحيح. distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.0-all.zip أيضًا هل مشروع Unity تم تصديره بشكل صحيح كـ Android Library، عليك القيام بذلك من خلال الذهاب إلى File > Build Settings وتحديد Android كمنصة الهدف، ثم التأكد من تمكين خيار Export Project إذا كان موجودًا. وفي مشروع Flutter، تأكدي من أن لديك إعدادات Gradle الصحيحة لاستيراد مشروع Unity، من خلال فتح ملف settings.gradle في مشروع Flutter وتأكد من إضافة مشروع Unity بشكل صحيح. include ':app' include ':unityLibrary' project(':unityLibrary').projectDir = new File('../UnityExport/unityLibrary') ثم افتحي ملف build.gradle لمشروع Flutter وإضافة تبعية مشروع Unity بشكل صحيح. dependencies { implementation project(':unityLibrary') } ثم تفقد هل إعدادات Kotlin متوافقة مع إصدارات الأدوات الأخرى، توجهي إلى ملف build.gradle وتفقدي هل تم إضافة الإعدادات الصحيحة. buildscript { ext.kotlin_version = '1.5.31' repositories { google() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:7.3.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } بعد تطبيق جميع التعديلات، قومي بإعادة مزامنة المشروع من خلال Android Studio أو استخدام أمر flutter pub get لإعادة جلب الحزم والتبعيات.
  5. أحيانًا يوجد كوبونات خصم متوفرة أرجو التحدث لمركز المساعدة والسؤال عن ما إن كانت متوفرة أم لا. وأرجو قراءة التعليق التالي:
  6. الفارق الأساسي هو كيفية التعامل مع حالة التحميل loading state. tفي الكود الأول، تقوم بالتحقق من حالة التحميل loading ولكنك لم تقم بإرجاع الـLoader كجزء من الـJSX، أي الكود داخل الشرط if (loading) لا يعتبر جزءًا من النتيجة المرجعة من الدالة Books. بينما في الكود الثاني، تقوم باستخدام تعبير ثلاثي للتحقق من حالة التحميل loading، وإن كانت الحالة loading، يتم إرجاع الـLoader كجزء من الـJSX، وإذا لم تكن الحالة loading يتم عرض الكتب. لذا الكود الثاني يعيد الـLoader كجزء من النتيجة المرجعة من الدالة Books، بينما الكود الأول لا يعيد أي شيء في حالة التحميل، مما يعني أن العنصر Oval لن يتم عرضه. إذن في الكود الأول عليك تعديل الجزء الخاص بحالة التحميل ليعيد الـLoader كجزء من النتيجة المرجعة من الدالة Books: if (loading) { return ( <Oval height={120} width={120} color="rgb(247, 96, 14)" wrapperStyle={{ height: "70vh", display: "flex", alignItems: "center", justifyContent: "center", }} wrapperClass="" visible={true} ariaLabel="oval-loading" secondaryColor="#E2E2E2" strokeWidth={3} strokeWidthSecondary={3} /> ); } من أجل عرض الـLoader عندما تكون الحالة loading هي true.
  7. نعم ذلك لنظام لينكس بشكل عام
  8. ذلك هو رابط نسخة لينكس من VMware Workstation https://www.techspot.com/downloads/downloadnow/189/?evp=f14a48a23bc560f5fbe81b8d83387b41&file=10774
  9. أضف عمودًا جديدًا في جدول الإعدادات ( في حال لديك جدول للإعدادات العامة للموقع) ليخزن خيار شكل الرابط. ALTER TABLE settings ADD COLUMN link_format VARCHAR(255) DEFAULT 'category'; ثم إضافة خيار في لوحة التحكم للسماح للمستخدم بتحديد شكل الرابط، كإضافة قائمة منسدلة dropdown في لوحة التحكم لاختيار شكل الرابط. وعند اختيار المستخدم شكل الرابط من لوحة التحكم، قم بتحديث قيمة إعدادات الرابط في قاعدة البيانات. وللتوضيح إليك مثال على كود PHP لتحديث الإعداد: // افترض أن لديك اتصال بقاعدة البيانات بالفعل if ($_SERVER['REQUEST_METHOD'] === 'POST') { $link_format = $_POST['link_format']; // احصل على القيمة من نموذج لوحة التحكم $stmt = $conn->prepare("UPDATE settings SET link_format = ?"); $stmt->bind_param("s", $link_format); $stmt->execute(); $stmt->close(); } وتستطيع إنشاء أو تعديل ملف .htaccess ديناميكيًا بناءً على الإعداد المحدد من لوحة التحكم. // احصل على إعداد الرابط الحالي من قاعدة البيانات $stmt = $conn->prepare("SELECT link_format FROM settings"); $stmt->execute(); $stmt->bind_result($link_format); $stmt->fetch(); $stmt->close(); // إعداد محتوى ملف .htaccess بناءً على اختيار المستخدم $htaccessContent = "RewriteEngine On\n"; if ($link_format === 'category') { $htaccessContent .= "RewriteRule ^category/c-([0-9]+)\.html$ /cat.php?c=$1 [L,QSA]\n"; } else { $htaccessContent .= "RewriteRule ^c-([0-9]+)\.html$ /cat.php?c=$1 [L,QSA]\n"; } // كتابة المحتوى إلى ملف .htaccess file_put_contents('.htaccess', $htaccessContent); و إليك مثال على نموذج HTML لإضافة الخيار في لوحة التحكم: <form method="POST" action="path_to_your_php_script.php"> <label for="link_format">اختر شكل الرابط:</label> <select id="link_format" name="link_format"> <option value="category">www.example.com/category/c-رقم التصنيف.html</option> <option value="short">www.example.com/c-رقم التصنيف.html</option> </select> <input type="submit" value="حفظ"> </form> وتحقق من أن الملف .htaccess لديه الأذونات الصحيحة ليتم تعديله بواسطة سكريبت PHP، ثم اختبار جميع الروابط بعد التعديل للتأكد من أن كل شيء يعمل بشكل صحيح. ومن الأفضل إضافة بعض التحقق والتدقيق للتأكد من أن القيم المدخلة صحيحة وتجنب أي أخطاء محتملة.
  10. ذلك تخوف طبيعي، ومع ما نشهده من تطورات، فكتابة الكود وحدها لا تكفي، عليك فهم ما تقوم به، فالبعض يقوم بالنسخ واللصق أو كتابة الأكواد بدون فهم لما يحدث في الخلفية أي ليس متعمق في اللغة والأساسيات، بالتالي ما الفرق بينه وبين نموذج تعلم آلي قادر على كتابة الكود؟ لكن حاليًا هو ليس قادر على إتمام مشاريع بمفرده، لكن مجرد أداة مساعدة للمبرمج، لكن أيضًا مع التطورات قد يصل إلى إتمام مشاريع ليس معقدة تمامًا لكن مشاريع كاملة، فهنا تأتي أهمية أن يكون هناك فرق بينك وبينه أن تكون متفهم للغة والأساسيات ومتعمق بها وبمستوى متقدم مع القدرة على تنفيذ مشاريع معقدة وذلك ستكتسبه تدريجيًا، قادر على حل المشكلات وإتخاذ قرارات لأنك متفهم ومتعمق للغة البرمجية والأساسيات وما يحدث في الخلفية. أي في الوقت الحالي أصبح الجميع بحاجة إلى بذل جهد إضافي للتعلم والوصول لمستوى متقدم وليس الإكتفاء بكتابة الكود فقط.
  11. مجال جيد ولكن ليس من السهل تعلمه فهو بحاجة إلى وقت ومجهود أطول مقارنًة بتخصصات أخرى، في حال لا يوجد لديكِ دراية بأساسيات البرمجة وعلوم الحاسوب، فستحاجين إلى دراسة ذلك من خلال دورة علوم الحاسوب بالأكاديمية. حيث ستتعلمين بها التالي: أساسيات الحاسوب وعلومه والتفكير المنطقي وما هي الخوارزميات وكيف تفيد في البرمجة تطبيقات عملية على أساسيات التفكير المنطقي باستخدام بيئة سكراتش Scratch التفاعلية أساسيات لغة البرمجة JavaScript وتطبيق المفاهيم التي تم شرحها باستخدامها، والتوسع في شرح التطبيقات العملية للغات البرمجة أساسيات أنظمة التشغيل المختلفة وكيفية تثبيت البرمجيات اللازمة للبرمجة عليها أساسيات سطر الأوامر في نظام لينكس، وشرح الأسس التي بني عليها النظام مع تطبيقها عمليًا أنظمة قواعد البيانات المختلفة، مع شرح تفصيلي للغة SQL للتعامل معها مبادئ أساسية في أنظمة قواعد البيانات NoSQL المفاهيم الأساسية التي تبنى فيها صفحات الويب مفاهيم أساسية في الشبكات والخوادم، وكيف يتم استقبال الطلبيات إلى الخادم والرد عليها مبادئ الحماية والأمان في الويب بعد ذلك ستحتاجين إلى دورة متخصصة في الـ blockchain حيث لا يوجد دورة مخصصة لذلك بالأكاديمية.
  12. عبارة عن نوعان من مهام التعلم الآلي التي تستخدم لبناء نماذج تنبؤية، والفرق الرئيسي بينهما يكمن في طبيعة المتغير الهدف Target Variable الذي نحاول التنبؤ به. فالتصنيف Classification الهدف منه هو التنبؤ بفئة أو مجموعة معينة ينتمي إليها المتغير الهدف، وذلك لتصنيف البيانات إلى فئات محددة. تكون المخرجات عادة فئات غير مرتبة Categorical, مثل "نعم" أو "لا"، "سبام" أو "غير سبام"، أنواع الحيوانات، إلخ. وكأمثلة على الخوارزميات المستخدمة، فمنها الشبكات العصبية Neural Networks ودعم آلات المتجهات Support Vector Machines. بينما الانحدار Regression الهدف منه هو التنبؤ بقيمة مستمرة للمتغير الهدف، أي نحاول تقدير كمية معينة. والمخرجات عبارة عن قيم رقمية مستمرة، مثل الأسعار، الكميات، درجات الحرارة، إلخ.. مثل لتنبؤ بسعر المنزل بناءًا على المواصفات. وكأمثلة على الخوارزميات المستخدمة، فمنها الانحدار الخطي Linear Regression والانحدار المتعدد Multiple Regression.
  13. تلك ،المفاهيم مهمة، لكنها متقدمة قليلاً في البداية، من الأفضل البدء بالأساسيات ثم التقدم تدريجياً إلى المواضيع الأكثر تخصصًا. فبعض تعلم الأساسيات تعتبر المرحلة الثالثة هي ما تشمل تعلم تلك الخوارزميات بالترتيب التالي: دراسة التقسيم الهرمي وتطبيقه على مجموعات البيانات، لتجميعها في مجموعات بناءًا على التشابه بينها، للمساعدة في فهم العلاقات بين البيانات المعقدة. فهم تطبيقات خوارزميات الأبريوري في تحليل قواعد الترابط، للعثور على الأنماط والقواعد المترابطة في بيانات كبيرة، مثل اكتشاف العلاقات بين المنتجات في سلة المشتريات. دراسة LDA واستخدامه في تقليل الأبعاد وتحسين التصنيف، لتصنيف البيانات إلى فئات مختلفة، وهو مهم في تطبيقات مثل تعرف الوجه وتصنيف النصوص. التعرف على MDA وتطبيقه على البيانات متعددة الأبعاد، وهو مفيد في التعامل مع البيانات التي تحتوي على العديد من المتغيرات، مما يساعد في تصنيف البيانات وتمييز الفئات بشكل أكثر دقة. فهم كيفية بناء الشبكات العصبية العميقة باستخدام طبقات متعددة، وسيساعدك ذلك في تطوير نماذج قادرة على فهم الأنماط المعقدة في البيانات. تعلم تحليل السلاسل الزمنية وتطبيقها في التنبؤ، للتنبؤ بالاتجاهات المستقبلية بناءً على البيانات التاريخية، مما يفيد في مجالات مثل التنبؤ بالأسواق المالية والتنبؤ بالطقس.
  14. قم بفتح الطرفية (التيرمنال) من قائمة التطبيقات أو بالضغط على Ctrl + Alt + T. ثم استخدم الأمر add-apt-repository لإضافة المستودع الجديد: sudo add-apt-repository repository/name عليك تبديل repository/name بعنوان المستودع الذي تريد إضافته. بعد إضافة المستودع، تحتاج إلى تحديث قائمة الحزم: sudo apt update ويوجد طريقة الثانية من خلال واجهة المستخدم، افتح "إدارة التحديثات" (Update Manager) وتستطيع العثور عليها في قائمة التطبيقات. افتح الإعدادات Settings في نافذة "إدارة التحديثات"، ثم انتقل إلى علامة التبويب "المستودعات الأخرى" (Other Software). ثم اضغط على زر "إضافة" Add وأدخل عنوان المستودع الذي تريد إضافته، وبعد إضافة المستودع، ستحتاج إلى تحديث قائمة الحزم. يمكنك القيام بذلك من خلال الضغط على زر "تحديث" (Refresh) أو باستخدام الطرفية: sudo apt update
  15. اختيار النموذج المناسب يعتمد على العديد من العوامل بما في ذلك طبيعة البيانات، الهدف من النموذج، والأداء المطلوب. بالتالي القول بأن نموذجًا معينًا مثل RandomForestClassifier هو دائمًا أفضل من LinearRegression غير دقيق، لأن كل منهما يخدم أغراضًا مختلفة ويعمل بشكل أفضل في ظروف معينة. لديك LinearRegression نموذج بسيط وسهل الفهم يستخدم للعلاقات الخطية بين المتغيرات المستقلة والمتغير التابع، ومناسب في حال العلاقة بين متغيراتك خطية وتحتاج إلى تفسير بسيط للنموذج. بينما RandomForestClassifier نموذج أكثر تعقيدًا يستخدم للأغراض التصنيفية، ويعمل بشكل جيد عندما تكون البيانات معقدة وتحتوي على العديد من الميزات التي قد تتفاعل مع بعضها بطرق غير خطية، ويتميز بأنه يستخدم مجموعة من الأشجار decision trees ويجمع نتائجها للحصول على تصنيف أكثر دقة. واستخدم التحقق المتبادل لتقييم أداء النموذج على مجموعة من البيانات غير المرئية للنموذج، وقد تحتاج إلى ضبط الباراميترات للنماذج المعقدة لتحسين أدائها.
  16. بالضبط، ففي مكتبة scikit-learn، باراميتر normalize لم يعد موجودًا في الإصدار 0.24.0 وما بعده من النموذج LinearRegression. في الإصدارات الأحدث من المكتبة، عليك استخدام StandardScaler أو Normalizer من مكتبة sklearn.preprocessing لتطبيع البيانات قبل تمريرها إلى النموذج. للتوضيح: from sklearn.linear_model import LinearRegression from sklearn.preprocessing import StandardScaler import numpy as np X = np.array([[1, 2], [3, 4], [5, 6], [7, 8]]) y = np.array([1, 2, 3, 4]) scaler = StandardScaler() X_scaled = scaler.fit_transform(X) model = LinearRegression() model.fit(X_scaled, y) predictions = model.predict(X_scaled) print(predictions) لاحظ تطبيع البيانات باستخدام StandardScaler قبل استخدامها في تدريب النموذج LinearRegression، وذلك يحقق نفس النتيجة التي كان يحققها استخدام الباراميتر normalize=True في الإصدارات الأقدم.
  17. الأمر محوره الأساسي هو قاعدة البيانات، اي عليك إنشاء مُخطط لقاعدة البيانات لحفظ بيانات العملاء من ضمنها طرق الدفع الخاصة بهم والتعاملات السابقة والمحفظة، أي يشمل التالي: جدول العملاء Customers Table: مُعرف العميل ID الاسم البريد كلمة المرور في شكل hash بالطبع ... (أي أعمدة إضافية تحتاجها مثل عنوان العميل، رقم الهاتف، إلخ). جدول طرق الدفع Payment Methods Table: Payment Method ID (المفتاح الأساسي): معرّف فريد لكل طريقة دفع. Customer ID (مفتاح خارجي): معرّف العميل المرتبط بطريقة الدفع. Payment Method Type: نوع طريقة الدفع (مثل بطاقة الائتمان، PayPal). Payment Method Details: تفاصيل طريقة الدفع (مثل رقم البطاقة، تاريخ الانتهاء). جدول المعاملات Transactions Table: Transaction ID (المفتاح الأساسي): معرّف فريد لكل معاملة. Customer ID (مفتاح خارجي): معرّف العميل المرتبط بالمعاملة. Transaction Date: تاريخ المعاملة. Transaction Amount: مبلغ المعاملة. Transaction Status: حالة المعاملة (مثل معلقة، ناجحة، فاشلة). جدول المحفظة Wallet Table: Wallet ID (المفتاح الأساسي): معرّف فريد لكل محفظة. Customer ID (مفتاح خارجي): معرّف العميل المرتبط بالمحفظة. Wallet Balance: رصيد المحفظة. و عندما يضيف العميل طريقة دفع جديدة، يتم إنشاء سجل جديد في جدول طرق الدفع، وعندما يقوم العميل ببدء معاملة، يتم إنشاء سجل جديد في جدول المعاملات. إن كانت المعاملة ناجحة، يتم تحديث رصيد المحفظة في جدول المحفظة وفقًا لذلك. بعد ذلك عندما يطلب العميل استرداد أو إرجاع منتج، يتم تحديث رصيد المحفظة وإنشاء سجل معاملة جديد للإشارة إلى التغيير في الرصيد. وكنصيحة، اعتمد على الـ Tokenization لتخزين تفاصيل طرق الدفع بدلاً من تخزين المعلومات الفعلية لطرق الدفع، فالتوكنيزاشن هو عملية استبدال معلومات الدفع الحساسة برمز فريد (Token) لا يمكن استخدامه إلا في سياق محدد.
  18. ليس خاصًا بمجال معين؛ بل محرك بحث شامل للأدبيات الأكاديمية في مجموعة واسعة من التخصصات والمجالات. أي باستطاعتك العثور على مقالات بحثية، أطروحات، كتب، أوراق المؤتمرات، وغيرها من المصادر العلمية في مختلف المجالات، بما في ذلك الذكاء الاصطناعي، علوم الكمبيوتر، الطب، الفيزياء، العلوم الاجتماعية، وغير ذلك. مثلاً العثور على أحدث الأبحاث والتطورات في مجال الذكاء الاصطناعي، مما يساعدك في البقاء على اطلاع على الاتجاهات الجديدة والتقنيات المتقدمة. أو لو كنت تعمل على مشروع بحثي أو تحضر لكتابة ورقة علمية، فتستطيع استخدام Google Scholar لمراجعة الأدبيات الموجودة وفهم السياق الأكاديمي الذي تعمل فيه. وإذا أردت مصادر جيدة للمتابعة بأحدث التطورات، فإليك التالي: ArXiv: منصة مفتوحة للأبحاث الأكاديمية في مختلف المجالات، بما في ذلك الذكاء الاصطناعي، حيث يمكن للباحثين نشر أوراقهم قبل مراجعتها من قبل الأقران. NeurIPS: مؤتمر سنوي بارز في مجال التعلم الآلي والذكاء الاصطناعي، يجمع الباحثين لتقديم أحدث الأبحاث والتطورات في هذه المجالات. alignmentforum.org: منتدى متخصص لمناقشة قضايا مواءمة الذكاء الاصطناعي مع القيم البشرية، ويركز على الأبحاث حول كيفية جعل الذكاء الاصطناعي آمنًا وموثوقًا. ijcai.org: الموقع الرسمي للمؤتمر الدولي للمشاريع المشتركة في الذكاء الاصطناعي (IJCAI)، وهو مؤتمر سنوي يعرض أحدث الأبحاث في مجالات متعددة من الذكاء الاصطناعي. icml.cc: الموقع الرسمي للمؤتمر الدولي للتعلم الآلي (ICML)، وهو أحد أهم المؤتمرات السنوية في مجال التعلم الآلي حيث يتم تقديم أبحاث جديدة ومبتكرة. nips.cc: الموقع الرسمي لمؤتمر NeurIPS (المعروف سابقًا بـ NIPS)، وهو مؤتمر رئيسي في مجالات التعلم الآلي والشبكات العصبية، يجمع الأبحاث والتطورات الحديثة في هذه المجالات.
  19. عليك إنشاء جدول وسيط Intermediary Table يسمى مثلاً Service_Providers يشير إلى العلاقة بين المستخدمين (العارضين) والخدمات. و يحتوي الجدول على مفتاحين خارجيين، مفتاح المستخدم (user_id) ومفتاح الخدمة (service_id). ويجب أن يكون المستخدم المشار إليه في الجدول هو من نوع "عارضي الخدمات" عبر استخدام الدور المحدد في جدول User_Role. لذا، النموذج النهائي يبدو كالتالي: Users: يحتوي على بيانات المستخدمين. Services: يحتوي على بيانات الخدمات. User_Role: يحتوي على أدوار المستخدمين. Service_Providers: يحتوي على العلاقات بين المستخدمين (عارضي الخدمات) والخدمات. بالنسبة لتمثيل العلاقات: العلاقة بين Users و Service_Providers: علاقة واحد إلى عدة (1:N). العلاقة بين Services و Service_Providers: علاقة واحد إلى عدة (1:N). العلاقة بين Users و User_Role: علاقة واحد إلى عدة (1:N). مخطط النموذج (MCD): Users (user_id, user_name, user_email) Services (service_id, service_name, service_description) User_Role (role_id, role_name) Service_Providers (service_provider_id, user_id, service_id) Users -1:N-> Service_Providers (user_id) Services -1:N-> Service_Providers (service_id) User_Role -1:N-> Users (role_id)
  20. في تحليل الأداء لنماذج الانحدار Regression Models، هناك عدة مقاييس بجانب متوسط مربع الخطأ Mean Squared Error - MSE لتقييم جودة النموذج. كل مقياس له مزاياه وعيوبه ويعتمد اختيار المقياس المناسب على السياق المحدد والتحليل المطلوب، مثلاً، MAPE غير مناسب في حال هناك قيم قريبة من الصفر في البيانات، حيث يؤدي ذلك إلى قيم غير معقولة. و RMSE و MAE يقدمان معلومات عن حجم الخطأ، لكن RMSE يعطي وزنًا أكبر للأخطاء الكبيرة بسبب التربيع، بالتالي مفيد في حال كانت الأخطاء الكبيرة غير مقبولة في مشروعك. ولو كانت الأخطاء تتبع توزيعًا طبيعيًا، فإن MSE و RMSE يكونا أكثر ملاءمة. أما إن كنت تهتم بالأخطاء النسبية أكثر من الأخطاء المطلقة، إذن MAPE أو MSLE أكثر ملاءمة. إليك كل مقياس: 1- Mean Absolute Error - MAE أو متوسط الخطأ المطلق: [ MAE = \frac{1}{n} \sum_{i=1}^n |y_i - \hat{y}_i| ] حيث ( y_i ) هو القيمة الحقيقية و ( \hat{y}_i ) هو التنبؤ من النموذج، ويقدم MAE فكرة عن حجم الخطأ المتوقع في التنبؤات. 2- جذر متوسط مربع الخطأ أو Root Mean Squared Error - RMSE: [ RMSE = \sqrt{\frac{1}{n} \sum_{i=1}^n (y_i - \hat{y}_i)^2} ] يعبر RMSE عن نفس المعلومات الموجودة في MSE ولكن في نفس وحدة القيم الأصلية مما يسهل فهمه في بعض الأحيان. 3- معامل التحديد (R-squared - (R^2)): [ R^2 = 1 - \frac{\sum_{i=1}^n (y_i - \hat{y}i)^2}{\sum{i=1}^n (y_i - \bar{y})^2} ] حيث ( \bar{y} ) هو المتوسط الحسابي للقيم الحقيقية. يعبر ( R^2 ) عن نسبة التباين في البيانات التي يمكن تفسيرها بواسطة النموذج، وقيمته تتراوح بين 0 و 1. 4- Mean Absolute Percentage Error - MAPE أو متوسط النسبة المطلقة للخطأ: [ MAPE = \frac{1}{n} \sum_{i=1}^n \left| \frac{y_i - \hat{y}_i}{y_i} \right| \times 100 ] يعطي MAPE فكرة عن حجم الخطأ الكلي كنسبة مئوية من القيم الحقيقية، وهو مفيد عند الرغبة في فهم الخطأ النسبي بدلاً من الخطأ المطلق. 5- متوسط اللوغاريتم المربع للخطأ Mean Squared Logarithmic Error - MSLE: [ MSLE = \frac{1}{n} \sum_{i=1}^n \left( \log(1 + y_i) - \log(1 + \hat{y}_i) \right)^2 ] يستخدم MSLE عندما تكون القيم الحقيقية والتنبؤات قد تأخذ قيمًا صغيرة جدًا أو كبيرة، ويعطي وزنًا أكبر للأخطاء النسبية الصغيرة. 6- إحصائية AIC (Akaike Information Criterion) و BIC (Bayesian Information Criterion): [ \text{AIC} = 2k - 2\ln(L) ] [ \text{BIC} = \ln(n)k - 2\ln(L) ] ( k ) هو عدد المعاملات في النموذج و ( L ) هو دالة الاحتمال الماكسيمالي للنموذج، وتلك الإحصائيات تأخذ في الاعتبار جودة النموذج وعدد المعاملات، ما يساعد في تجنب الإفراط في التكييف overfitting.
  21. أرجو النزول أسفل الفيديو لنهاية الصفحة وستجد صندوق تعليقات كما هنا.
  22. لا عليك تستطيع التعليق أسفل الفيديو وترك السؤال الحالي كما هو تستطيع تعديله وليس حذفه فلا داعي لأيهما.
  23. ستجد أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم الأسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس وذلك لمساعدتك بشكل أفضل
  24. هل قمتي بتشغيل unity كمسؤول administrator؟ أيضًا في حال كان اسم مجلد المشروع يحتوي على أية حروف خاصة عليك حذفها مثل ) أو - أو ' ، وأيضًا أسماء الملفات في المشروع وعدم استخدام أسماء عربية. أيضًا تأكدي من تثبيت NDK من خلال Unity Hub وتفقد المسار path الخاص به في Unity. وفي حال استمرار المشكلة عليك التعليق أسفل السؤال، وأيضًا مشاركة كامل رسالة الخطأ.
  25. ليس المطلوب منك ذلك وذلك ليس ممكننًا، المطلوب هو الإهتمام بالأساسيات وليس المكتبات والإطارات، بعدها تستطيع الإهتمام بذلك. للتوضيح بخصوص الأساسيات أقصد ما يلي: فهم الأساسيات المتعلقة بأنواع النماذج المختلفة مثل الانحدار Regression، التصنيف Classification، وخفض الأبعاد Dimensionality Reduction. والتعمق في النماذج الشائعة، ركز على النماذج الأكثر شيوعًا واستخدامًا مثل: الانحدار الخطي (Linear Regression) الانحدار اللوجستي (Logistic Regression) شجرة القرار (Decision Tree) الغابات العشوائية (Random Forest) آلات الدعم المتجهة (Support Vector Machines) K-الأقرب جار (K-Nearest Neighbors) شبكات العصبية (Neural Networks) تحليل المكونات الرئيسية (PCA) وفهم مفاهيم التقييم والتحقق، مثل دقة النموذج Model Accuracy، الالتباس Confusion Matrix، والتحقق المتقاطع Cross-Validation. أي عليك التمكن من استخدامها بشكل متقدم نوعًا ما بحيث تستطيع تنفيذ مشاريع كاملة من خلالها، وسيتم سؤالك عن الأمور الهامة بها وليس كل شيء.
×
×
  • أضف...