بسم الله والحمد لله و الصلاة والسلام على رسول الله
اليوم ان شاء الله شبابهنبدأ فعليا تقريبا بأول شغل
عملي في ال data mining وهجوز إيه في ال data
preparation ممكن المحاضرة نشوف فيها بعض الأكواد
اليوم لكن المحاضرة الجاية حتما يعني لازم نطبقنا
بعض الأشياء العملية مع بعض سواء كنا هنشتغل بال
python أو نشتغل بال RapidMiner و هنجرب التنتين
معاك و في بعض ال slides اليوم هتكون جاهزة عليها
بعض الأكواد ال python اللي ممكن تخدمني بس من باب
تحفيزكللتعامل مع الـ Python بالجابع على سبيل
المثال يا رامي زي ما كنت بتقول حنبدأ اليوم
محاضرتنا كل المحاضرات الماضية اللي بنتكلم على ال
data understanding وقلنا المفهوم ال data
understanding انه لازم انا أصير فاهم ال data اللي
عندي او familiar مع ال data اللي عندي بشكل كويس
بحيث انه كل ما انا فهمت ال data بقدر افهم ايش ال
taskاللي بدي اياها بقدر افهم احوّر ال data بحيث
انا تصبق مع ال task اللي انا بدي اروحلها و كنا
بنطرح على حالنا مجموعة من الأسئلة كان أهمها هل ال
data هذه relevant لل topic ولا لأ هل ال data هذه
كافية من أجل enough أو كافية من أجلإن أبني عليها
model ولا لأ؟ هل في مصادر أخرى للبيانات ممكن
تدعمني في هالاتجاه هذه؟ هل ال data هذه حقيقية ولا
صناعية؟ هل ال data هذه مناسبة .. بس كمان بتحل
المشكلة ولا بتحل ال hash؟قديمة ولا جديدة فكل
الشغلات هذه كانت تتدعم باتجاه واحد فقط ان انا اصير
familiar مع البيانات اللي موجودة عندى بعد ما احنا
و كنا طلبنا نهاية المحاضرة الماضية ان كل واحد فيكو
او كل معفن كل مجموع تحدد two datasets واحدة for
regression واحدة for ال classification و كنا
زودناك ب exampleبعض الـ URLs اللي ممكن توجد من
خلالها Data Sets دلوقتي في Data Sets في الـ Open
Data Sets في Google Open Data Sets في شغلات كتيرة
في أي مكان ممكن تختار ال Data Set اللي موجودة و
بقى ذكرك لازم تشكل مجموعة أو تنضاف لمجموعة بعد هي
كانت حصير الشغل جماعيال data wrangling عفوا او ال
preprocessing او ال data preparation زي ما بسميها
البعض ان هو فعليا اول خطوة على ال real data انا
جبت ال data set سواء كانت text file او data file
او csv file او excel file ابغض النظر ايش كانت
اصبحت ال data هاي موجودة وبالتالي بالنسبة لي ال
data هذه غالبا هي عبارة في ال raw formatشو يعني
Raw Format؟ خام بالنسبة لي في اللحظة اللي انا بقول
انه الجدول هذا او ال csv file هذا مابت .. الآن
مابدهش اي شغل بتصير ال data هذه جاهزة انه ابني
عليها data mining taskتمام؟ وهذا الكلام ما بيتم
إلا غير بعض فحص أو إجراء بعض التعديلات على
البيانات اللي موجودة عندها من بعض الشغلات الخامس
يا عماب اللي أنا بتكلم عليها لو كانت ال data set
هي عبارة عن مجموعة من الصور على سبيل المثال تي
طبيب عظام قرر إنه بدي يحاول يسمع بال data science
أو بال data mining وقال لك والله أنا بدي أعمل
برنامج أديله صورة الأشعة تمام؟يبدأ هو يدور عن الـ
possible fractions الموجودة سواء كان بلغتنا
البسيطة كسر واضح أو شعر مش مبين يعني بدي ابني
smart system عشان يحددلي ال fraction اللي ممكن
يصير في العضم ممتاز ايش ال data تتبعتي؟ بقولي
والله انا محتفظ ب100 ألف صورة أشعةتمام؟ X-rays
موجودات للمجال هذه و كلها .. كلها بشخصك بدي أحط
عليها label هذه فيها كسر و بحدد لك مكانه و هذه
فيها شعر و بحدد لك مكانه عشان ال system تبعتك الان
ال raw data تبعتك هي صور الأشعع هايطب ماشي حال
بدنا special scanner اعملناها scanning ودخلناها
على ال system raw data ما زالت في اللحظة اللي
بتقدر تحول الصورة هذه لجدول لجداول تقدر تشتغل
تشتغل عليها mining بتكون أنت فعليا روحت باتجاه ال
task الصحيحة وخلصت من ال raw data ووصلت لوين؟
للمعدن أو لل value اللي أنت بدك إياها مثل تماما
المنقبين عن البتروللأن هو أخد وصل إلى بير النفط أو
حصل على البترول لكن هذا البترول أو هذا البترول
الخام غير مناسب للناس فماشي بروح مساعده فيه؟
بتدخلوا ع مصانع التكرير عشان يصدر منه البنزين
والسولار إلى آخرين وبالتالي أنا بدي أروح ال road
بحيث أنها تصبح suitable أعالجها بحيث أنها تصبح
suitable لل task أو لل analysis اللي أنا بدي أشتغل
عليهطبعا الأن لما بتكلم على ال data preparation
عادة هي عبارة عن software by-blind أو coding by
-blind شو يعني by-blind يا شباب؟ خط .. خط إنتاج
method بتروح بتدور على ال missing data و بتعالجها
method تانية أو data تانية بتعالج ال inconsistent
data تالتة بتعالج مثلا ال noise dataوكل مخرج يعني
الآن بدخل ال raw data لل missing ال output تبع ال
missing بروح بعد ده و بدخله عليه as input لل noise
data و ال noise data بتروح لل inconsistent بعد
معالجها طبعا وبهك كل مرحلة لحد ما بصل لوين في
الآخر أن ال data هذه مناسبة أصبحت صحيحة لل task
اللي أنا بدي أشغل فيها وبالتاليهذا بيقول إن الناس
اللي بدأت تشتغل في ال data science أو في ال data
preparation أو ال data preprocessing أو ال data
wrangling لازم يتمتع بمجموعة من الصفات اللي لها
علاقة بالإحصاء على سبيل المثال ليش؟ لأن أنت بدك
تتعرف على البيانات بدك
skills زي ما قلنا سابقة multidisciplinary
الcourse تبع ال data mining بدك statistic بدك
database بدك programming وكل ال skills هذه بتخدمك
في موضوع ال preparation بالدرجة الأولى طيب
بما أنه احنا حاليا هيلزمنا شغل و نقول programming
و نتكلم على pipeline بال بايثون قلتلك انا بحطتلك
روابط تنزل الاناكندا مين نزلها شباب جهازه؟واحد
اتنين تلاتة اربعة خمسة ستة سبعة تمانية تسعة انتوا
ملاحظينوا يا شباب ان المادة مافيش فيها معمل نزل ال
python anaconda distribution او ال spider anaconda
distribution على جهازك عشان تبدأ تشتغل ليش انا
قلتلك نزله هيريحك من كل المكتبات وينزلكيها حزمة
واحدة بينما لو بدك تشتغل بالpy charmهتضطر تنزل ال
libraries واحدة ورا التانية فانت رايح راسك واشخل
على ال distribution جاهزة بتريحك على الأقل في
موضوع ال installation
هي IDE شاملة المكتبات كلها تبع ال data science
وبالتالي بدل ما انا اروح احول ال IDE تبع ال by
charm تمام عشان يسموها data science distribution
أحيان بسموها الآن بدل ما اروح انا نزل المكتبات
واحدة ورا التانية هو كل المكتبات جاهزة ضمن ال
setup file اللي بنزل وبالتالي مش هعمل download من
ال internet لأي شيء الآنطبعا المهم اذا ما اقول ان
احنا ممكن نستخدم الـ Python و هذه كلغة برمجة مهمة
جدا ليش مع ال Java؟ مابديش Java ال support إلها
أكثر و هنشوف الآن بعض الشغلات فعليا أسهل مليون مرة
ماكنت أنا بدي أشتغلها وين؟ بال Java و هديك مثال
الآن مثال بسيط جدا المكتبات اللي بتلزمني في ال
Python إذا أنا بدي أشتغل على ال PyChart معناته
ملزمني ال non-pyالـ numerical arrays في الـ Python
و بالزمن البانداز اللي هي عبارة عن data framework
من أجل أن أعمل store و retrieve لل data و أطبق
عليها بعض ال method الجاهزة اللي لها علاقة في ال
preparation من الشغلات البسيطة اللي ممكن تكون
motivation كويسة بالنسبة لنا جميعا كيف التعامل مع
ال python لو أنا أجيت قلتلك في عندي two
dimensional array
تلاتة في تلاتة و بدي منها تاخدلي الصف أو العمود
الأخير لحاله ك one dimensional array ايش ال code
اللي ممكن تكتبه بيه جافر؟ بتروح اعرف ال array one
dimensional هقولله integer ال array تبعتي A مثلا و
قوللي يا أخي إن هاد اسمها X بدها تساوي new integer
تلاتة صح؟ بعدين هروح أقوله four integer I equal
zero ال I أقل أو تساوي اتنين I plus plus A of I
equal X of اتنين ايه؟ قداشها دي؟ I اتنين مصبوط؟
بال بايثون بكل بساطة باجي بقوله a تساوي x
او
حتى ممكن هذا مكتوب هاش هيك بس يبقى فاق نل لا four
ولا حاجة الفكرة وين يا شباب انه فعليا من ناحية
simplicityفعلي أسهل وهي فرصة .. فرصة إلك تتعلم لغة
جديدة ال four هي ال four و ال F هي ال F نفس ال
concept بس ال syntax هو شويه اللي هيخلف .. يخلف
معاك الآن هاد الآن في الشغلات اللي زي هاي ال
python بتريحك جدا في الكتابة هاي هاد التلت أسطر هي
عبارة عن نص سطر فعليا لا أنا محدد يعرف data type
ولا أنا محدد يعرف ال four بس اللي بلزمني أحدد
أبعاد العمود اللي أنا بدياه و لحاله بيشتغل الشغلة
التانيةممكن انا الان هل في مجال يكون في عندي
تسميات لل
attributes اللي موجودة عندي لأ مافيش مجال مع ال
band as بصير في مجال اضيف تسمية لل array او لل
data set و بصير بروح بقوله ان ال A equal X of T
ثلاثة و خلصت وبالتالي فيها شغل اسهل كتير من ال
Javaوغيرها ايه؟ هنشوف بعض الأكواد اللي برضه بسهولة
اللي هنفهمها برضه خلال المحاضرة هاي ان شاء الله
تعالى طيب ننتقل مع طريق ال libraries اللي في
عينينا بتلزمنا في ال data preparation بالدرجة
الأولى تعالى أخد مثال بسيط في ال code اللي موجود
قدامنا ال code اللي موجود قدامنا عمل import لل
bandits وروح
تعرف ال bandits هي عبارة عن data frameworkللتعامل
واحدة من الاقتراحات تبعتها ان انا ممكن انشئ جدول
جديد انشئ جدول جديد فروح قلت له البانداس دوت data
framework وزودت ال data framework ال constructor ب
.. بإيش يا شباب
جييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييييي
الريه ال value تبعته تمام ال index هي optional
بالنسبة إلينا بنضيفها بعد ال json عشان أقوله والله
فعلا هي ال items أو هي ال index اللي أنا بدي أشتغل
معاها بغض النظر حتفرج كتير الآن لو أنا أقول
dictionary كام واحد هيقول okay معاك موافق معاك بس
بالمناسبة dictionary لأن فقط في عندي two values Q
value فقط لما يكون في عندي أكتر من valueتمام؟ طبعا
ال array كلها as single value anyway في الآخر
روحته انا بقوله اطبعلي ال data framework هذا
فهيطبعلي يا شباب الشكل اللي قدامك هاي زي ما بظهر
على ال console لاحظ؟ لو انا بدي اطبع في مجلة ..
هذا كان بيعمله بال Java عبارة عن ايه؟ شرعي ما
حيكون array of objects مصبوط؟وبدي loops وبدي كده
ودي ربالك اخد ال method فحتى داخلي دوامة مختلفة
تماما فهي ال framework من ناحية إنشاء data طبعا ال
task تبع إنشاء ال data مش مهم مش مش إلك الآن ليش؟
لأن ال data set يا أستاذ تامر موجودة وخالصة ال
data set موجودة وخالصة طبعا إيش المطلوب مني؟
المطلوب مني أقرأها في موضوع قرايتها مجرد أروح
أستخدم ال pandas أقوله readcsv او read excel file
حسب ال file الموجودة فيه ال data بيقرأ ال data set
مباشرة و ببني لك data framework كامل عليها و هيك
برضه بتكون التعامل معاها سهل تعالى نشوف بس ال code
هذا بشكل سريع إيش بساوي الآن في عند ال print خلاص
أصبحت معروفة ال head ال data set dot head أو ال
tail ال head بتجيب أول خمس صفوف عينة أول صفوف
الخمسة و ال tail بتجيب أخر خمسة في عندالـ Data
Type أو الـ D-Type اللي بتجيب الـ Structure تبعتها
إيه في الـ Attribute وإيش الـ Type تبعت كل واحد
فيهم وطبعا هذه مجرد أنت عشان تكون عندك صورة واضحة
عن الـ Data Set اللي بتشتغل عليها إذا أنا قلتله
Shape تخيل إن الـ Attribute عندي أهمام أو الـ Data
Set تبعتي بتتكلم على 100 ألف record تمام؟ و 15
Attribute
لما أروح أقوله shape هيطبع .. لأ لأ مش هيرسم هيطبع
الـ 100000 كما 15 لإن
طبعتها و يعمل scrolling عليهم أو كده لأ كلمة ال
shape جيبلي العدد لو أنا قلتله number of
dimensions and them number of dimensions هيقولي
اتنين ليش لإن ال data تبعتي الآن في ال data
framework تبعي بعدين الصفوفوالأعمدة اللي موجودة
عندها الان في عندى method اسمها columns إذا ال
data set اللي أنا قرأتها ال data file أو أول ثقر
فيها عبارة عن ال attribute names أو ال titles تمام
في عندى ال method اسمها الاسمها ال columns بترجعلي
فيهم لوحدهم و بصير فيها دول عبارة عن data set
مستقلة موجودة عندها بعد هي كانتبتريحني من موضوع ال
description وال statistical method لو أنا روحت على
certain attribute وقلتله dot describe
بروح بدي اعمل complete statistical test على ال
attribute هذا ال minimum و ال maximum و ال average
و العدد الفرغات و ال data types بتجيبلي شغلات
كبيرة بتوصف ال data ال attribute هذا و هذا برضه
مهم بالنسبة ليه عشان انا اذا عرفت ال minimum و ال
maximum و جديش عدد الفرغات بصير عارف ان انا بدي
اشتغل طبعا بإمكانك تعمل loop تمر على ال titles
اللي هنا و تعمل description بشكل بدأ ما تكتب كل
واحد بشكل تلقائي طيبهذا الكلام او هذه ال slides ما
جبتهم الا غير من باب ال motivation لإلك ان ال
python سهل و ممكن تعملها او تحتويها تعملها concord
ده او تحتويها بشكل كويس خلال الفصل هذا ال rapid
minor خيار هنشوفه هنشتغل عليه لكن انا بالنسبة لي
قد اعطي plus للي هيشتغل ال python وللي مش هيشتغل
ال python هياخد minus
ممكن تحتوي على بعض ال missing ال inconsistent و ال
noise data الان يا هب noise data شو يعني؟اخدناها
سابقا اكتب اسمك هنا و سجل جوابتنا ولا لأ نقشه يعني
noise data يعني data فيها أشياء ممكن ماتفيدنيش أو
فيها أشياء خاطئ فيها أشياء خاطئ صح بس فيها data
ماتفيدنيش مش صح اكتب اسمك عفواتمام؟ الآن noise
data يعني لو أنا فيه عندي قيم أو فيه عندي أخطاء في
القيم المدخلة مثل الراتب بالسالب تمام؟ طيب عبدالله
صحي محمد الكحلوت من جنبك وقول لي شو يعني
inconsistent data؟ مش عارف لأنك مابتراجعش لأ بديش
إياك أنت يا تامر آه يوسف شو يعني inconsistent
data؟
محمود أبو حية محمود صح محمد أبو حية محمود
أبو حية محمود أبو حية محمود أبو حية محمود أبو حية
محمود أبو حية محمود أبو حية محمود أبو حية محمود
أبو حية محمود أبو حية محمود أبو حية محمود أبو حية
محمود أبو حية محمود أبو حية محمود أبو حيةمثلًا،
تاريخ ميلاده مبارح هو في الـ Age مكتوب لـ 40 سنة
تمام؟ Missing Data هذه كلكم هتجاوبوها طبعًا، فضل
Data مفقودة، إنه فعليًا الـAttribute هذا في
الـRecord هذا الـValue تبعته فاضية، مش موجودة عندي
وبالتالي، أنا لازم هدأ أقولنا سابقًا كان عندنا
مصطلح Garbage In، Garbage Out وبالتالي الـData
Quality شيء أساسي في الـData Miningجودة البيانات
شيء أساسي في الـ Data Mining وبالتالي، إذا أنت
فعليًا بدأت تشتغل وجد في الموضوع الـ Data
Preparation عبارة عن خطوة مهمة للـ Serious والـ
Effective والـ Real Data Mining Process إيش علامات
جودة .. علامات جودة الـ Data Set اللي موجودة عندى؟
تقريبًا هي نفس الأسئلة اللي كنا بنطرحهاسابقا عشان
تصحيح ال data ال accuracy جداش ال data تبعتي هذه
دقيقة جداش ال data تبعتي صحيحة هي فكل
ما كانت نسبة دقتها أعلى كل ما كانت هذه أفضل طبعا
مصدرها مصدرها يعني بين جسينانت الآن ال data اللي
فيها ال values انت بتقدر تتحقق من كل record Raw by
Raw؟ أكيد لأ، لكن لما أنا باعرف أن ال data set هاي
طالعة مثلا من ال MIT على رأي رامي، تمام؟ ولا طالعة
من جامعة إياد الشامي، لأ أكيد اللي طالع من ال MIT،
من ال MIT، مصبوط؟ شكرا، شكرا على الثقة يا هاشم،
الآن الفكرة وين يا جماعة الخير؟الفكرة أنه مش كمان
شوف ال source اللي هي ال believability جداش أنا
بواثق فيها في مصدرها لكن الآن بتكلم على جودة
البيانات جودة البيانات عادة مش أنا صاحبها ال data
لما انجمعت كانت صحيحة لما انجمعت اه صح بأثق في
المصدر لكن جداش ممكن المصدر هذا يخطئ في الإدخال
جدّاش ال instrument اللي كنت انا بعتمد عليها في
القراءات دقيقة بلاش نتكلم على مصدرها انا والله
واثق ان اللي حاجيني من ال MIT تمام لكن كانوا
مسترخصين وماخدين بعض ال sensors من Taiwan بينما في
sensors وضحها افضل وبالتالي ال data set اللي بيصير
فيها علامة استفهام لأن بعض ال equipments تبعتها في
ال range تبعت ال error تبعتها عاليةفهذه المقصودة
بالـ Accuracy على خلاف الـ Believability جديش أنا
واثق من مصدر البيانات و في البيانات اللي موجودة
عندي هيت لاحظ كمان مرة أنا ما زلت بأتكلم على عوامل
انه كيف بدي أو بدي أحاول أشك .. كيف بدي أقيس جودة
أو إيش هي علامات جودة ال data set يعني لو قلنا لك
في تفاحة و قلنا شو رأيك فيها جودة التفاحة هاي جديش
عبداللههي عبد الله، أيوة عبد الله، بناء على إيش؟
بطلع فيها، الله التفاحة مبينة، جديدة وطازة وبتلمع،
تمام؟ هاي واحد، ريحتها فواحة، مافيش فيها لا ضرب
يمين ولا شمال، ولا محمد عضها، مصبوط؟ وبالآخر، في
الآخر هاي العلامات، أنت بعينك بتقدر تحددها، طيب،
الآن completeness، جداش ال data هايكاملة وبحيث
انها توافق ال task اللي انا بدي اياها وسألنا سابقا
على ال different sources و ال relevant و من ال
expert ليش؟ عشان انا اكون متأكد ان ال data ال 6
باعتى هاي فعليا بتنجز consistent ال consistency
جداش ال data هاي consistent ما هو يعني لما اتكلمنا
في ال consistency انه ما هو المفهوم ان اعدل في
مكانومقنوط من التعديل في مكان تاني بس ماعدلتش فيه
فبتصير inconsistent values الموجودة اللي عندي
timeline is .. هاي شغلة مهمة يا جماعة الخير عشان
يقوللي ان ال data .. ال data set اللي موجودة عندي
هل بتحل المشكلة اللي أنا بتشتغل عليه ولا لأ؟ يعني
أنا بدي أحاول أعمل prediction ما هو إذا حطيت ال
mail معناته هتصير أنك عندك .. في عندك مشكلة في ال
consistencyمصبوط؟ لأ خلّينا .. احنا عمّالا بدنا
نصلح مش اللي بنخبص تمام؟ وبالتالي ال data must be
inferred إيش الحلول المتاحة قدامي في التعامل مع ال
missing data؟ الآن ال missing سواء كانت في one
value أو في two values في ال record تمام؟ في الآخر
ال record هذا فيه missingلكن سؤال مهم جدا، هل ممكن
كل ال record يكون missing؟ بكونش موجود أساساً،
فعلى الأقل ال record بيكون فيه one value والباقي
ممكن يكون null، مصبوط، حسب المصدر ففي الآخر، بغض
النظر، كان في عنده one value، one missing value or
more فهذا ال record بيحتوي على missing أو هذا ال
attribute الآن صار بيحتوي على missing أسلم حلإن
أحذف الـ rows اللي بتحتوي على ال missing و أريح حل
تمام
عشان أنا بدي أحط حلول صحيحة و بدي أجيب value صحيحة
عشان أحصل الحل صح أو عفوا أصلح حل صح الآن لو كانت
ال data 6 اللي عندي 100 ألف row وبعد عملية الحذف
بعد عملية الحدث صارت اللي هي 95 ألف raw أنا
بالنسبة لي مش فارق كبير مش big deal مش زعلان كتير
أقولك لو صارت 50 ألف برضه بالنسبة لي مش كتير لأن
ال data لسه still enough يعني فيها كم .. لأ بقى
ممكن أستخرج منه لكن لو ضاليت حافظ على ال 100 ألف
أحسن وأحسن
لأن احنا اتكلمنا سابقا how much big is your data؟
كده حجم البيانات اللي عندك؟ لأن كل raw بمثابة
تعزيز لل pattern أو تعزيز لل knowledge اللي انا
بدأ استخرجها لكن في المقابل اللي كانوا عندي الف
record صاروا تسعمية و خمسين acceptable لكن صاروا
خمسمية لا يعني وقفعلى الرغم ان هد نص و هد نص 50
ألف نص 50% بس العدد بيفرج معايا 500 رو is not
enough to train or to build a model في معظم
الأحيان طب مش الحل بدك تجيب data set تاني لو
متوفرة طب مش متوفرة عند غير الألف هدولبدي أبدأ
أعبي ال missing data بدي أبدأ أعبي ال missing data
اللي موجودة عندهم كيف بدي أعبيها؟ manually بشكل
manual يعني بدي أمر على كل row أو كل عمود row by
row و أعبي ال value اللي فيه ممكن
شباب ال manual filling لا يعني بالضرورة ان انا 100
% صحتمام؟ انا حارجة لما بدي اتكلم على ال manual
filling بدي اروح اقوله دين ال document الأصلية
تبعتك اللي اعتمدتها او وين ممكن الاجي القيمة هذه
ففي جهود لكن مش .. و لو انا رجعت لل guessingفي
موضوع الـ Gessing الأصل يكون .. يعني لما بدي أخمن
بدي هتكون ال value تبقى .. بدي تكون فيه confident
يعني لما قلنا قبل شوية متزوج أو ال status ال
marital status متزوج married و فيه pregnant و
مفقود عند ال gender مافهمش .. مافيش عاجلين اتنين
بيختلفوا على إن هو دي femaleمصبوط؟ وبالتالي هذا
الكلام في هذه الشغلات بيصير ال guessing محمود الآن
باجب أقول أن والله الطلاب اللي موجودين عندى في
المدرسة أعمارهم تتراوح من عشرة لتلات عشر سنة ولاجي
الطالب عمره مش موجود و تاريخ ميلاده مش ملاجيه لو
حذفته تمام؟ احنا الآن خلصنا من موضوع الحذف بدي أخل
ال dataبدي أخل ال data، إيش عبيها؟ لو حطيتها 12
بالمتوسط، بيمشي الحال، أثبت؟ هاي ال guessing ممكن
لو أنا شوفت عمر الولد أو أروح أسأله فلان، أنت في
أي صف؟ طلع فيك هيكد، جالك في صف سادس
ماشي، مصبوط ولا لأ؟ إذا أنت حاسيته أنه والله ممكن
تطالب هذا يكون مثلا أعاد سنة أو تنتين فممكن تحطه
في بناء .. خلاص بتصير happy guessing محمود و هذا
الكلام يصير تمام لكن
عملية التعبئة ال manual أو التعبئة اليدوية للقيم
المفقودة مملة و غير مشدية، خلّيها هيليش غير مشدية؟
لأنه ما أكلفك مقارنة بالجهد اللي هيصير مش مشدية
كتير automatic برمجيا برمجيا الخيارات اللي قدامي
أن أروح على كل ال missing و أحط فيها global
constant شو يعني global constant؟ أي رمز بحيث أن
الرمز هذي يصير unknown
بعرف إنها missing وفي نفس الوجد لو بدوا ينبنى
عليها decision لاحقا في حالة ال unknown بيكون كذا
على سبيل المثال if كذا else if كذا else if كذا طب
ال else الأخيرة لو ما كانت ولا واحدة من هدول في
حالة ال switch case case case كذا في الآخر بحطله
default لو ماكنتش ولا واحدة من هدول بصير بقوله أنا
في حالة ال unknown ممكن أخد decisionتمام؟ هذه ميزة
أو أهمية للجلوبال constant لكنه مش مفضل برضه ليش؟
لأن كل ما كانت ال rule تبعتي مبنية على fixed value
يكون أحسن كنت بقى تقول حاجة جوابت عليك؟ ماشي الحال
ممكن أعبيها automatic بال mean أو ال median
بالمتوسط الحسابي أو بالوسط الحسابي للأرقام اللي
كانت عندنا هنالأن هاي ال attribute واحد،
اتنين، تلاتة، أربعة وفي قيمة مفقودة لو أنا قلت بدي
أعبيها بالمتوسط الحسابي تلاتة و تلاتة ستة و أربعة
عشرة عشر عشرة على أربعة اتنين و نص انا بدي integer
تلاتة
السؤال جدّيش خطأ إيه هان؟جديش خطأ .. لأ لأ سيبني
بعد الـRoundation أنا حطيت تلاتة و هي المفروض تكون
اتنين مثلا بس التنين مش موجودة عندى أساسا انا جديش
انا فقدت مش كتير مصبوط و لو حطيتها خمسة او حطيتها
اربعة برضه انا مفقدتش كتير ليش؟ لأنه في عبارة
عمالك ..حوالين ال range اللي انا بقى اشتغل فيه و
هادي برضه بيلاحظ و كأني بقى بيستخدم ال mean عشان
يعمل infered value تمام؟ مش معروفة طيب ال median
ايش ال median يا شباب الوسط والحسابي الوسط
والحسابي يعني بدي احطهم بالترتيب بما
ان هدول الأعداد اللي عندي فردية معناتهبرضه اجت
عندى التلاتة الان كوسط حسابى، مصبوط؟ لأن ال data
اللى انا كتبتها على اللحه هيكت جاية الان فى كمان
واحد احسن من هيك قالك اذا كان في عندك labelled او
الجدول اللى عندك هذا مصنف او معموله category سابق
جالك هذا ايه بي ايه بي ايه جالك مافيش داعي تاخد ال
mean لكل ال data set او لكل ال attribute خد ال
mean فقط يا محلاوي الان جالك مافيش داعي تاخد
المتوسط الحسابي لكل ال data set خد المتوسط الحسابي
للفئة اللي فيها ال record هذا ال category high مين
الفئة اللي فيها ال label هذا المفقودمين الـRows
اللي فيهم الـA هي واحد واتنين هي تلاتة والاربعة هي
سبعة سبعة على تلاتة اتنين الأولى و الأخيرة الأولى
و الأخيرة خمسة على اتنين اتنين و نص اعملها
roundation تلاتة ابلك تعمل truncation اتنين ففي
الآخر هذه القيمة كمان أدق من المين السابقة ليش
لأنها مرتبطالـ category يعني عمّا أنا في عندى ..
اه هي اجتهاد فراصة دول مش مشكلة تمام؟ فممكن انا
اختار ال mean أو ال median بناء على ال category مش
على كل ال data set وهذا بيكون أفضل ممكن أروح أدور
على ال most frequent data إيش يعني ال most
frequent؟ القيمة الأكثر تكرارا بما أنه هي القيمة
الأكتر تكرارا لجيت مثلا 70% من ال values
most probable هتكون اتنين او شو رايكوا فهذه
الشغلات هذا الشغل بيصير ايش automatic طبعا ممكن
انا لما اتكلم على ال most probable ممكن استخدم حتى
بعض ال machine learning task او algorithm زي ال
بايثون او decision tree عشان يحددل ايش او يختار
القيمة لل missing اللي موجودة عندي بالنسبة لأكواد
ال بايثون
هنحطر أرسم الجدول هذا لكن بعيد عن ال code صاروا
أربع أعمدة صحيح؟ attribute 1, 2, 3و ال label Raw 2
3 4 5 6 حاجة اقول في ال data هان 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 و بالنسبة لل category
A B A D D A او هذا احط
ال A فوق بالشكل هذا الان ال data set هاي اللي
موجودة قدامي بدي اعملها filling ماعناش مشكلة مع
مين مع ال values طب في حالة ال label
في حالة ال label شو أسأل فيها هذه الشباب أسلم حاجة
نحذفها لأن ال target أو العقل يعني أنا مش عارف هذا
الشخص مريض أو غير مريض ربح ولا خسر، مظبوط؟ مش عارف
وبالتالي في حالة زي هذه بروح بحذف ال record اللي
مافيش Target لأن نسبة خطأ إيهان هتكون أكبر هذه
واحدةالان بما ان الحذف هو الحل الأمثل بالنسبة لي
الحل الأمثل فانا ممكن اروح احدد ال rows ال raw
اللي انا بده احذفه مثلا بده احذف ال raw رقم هي
واحد اتنين تلاتة اربع خمسة ستة سبعة هاروح اقوله
بكل بساطة ال data set تبعتي dot drop بديله ال
index تبع ال raw اللي هي هانقولنا عياشأربعة أربعة
in place كبولياري true لأنه إذا أنا قلتله false
هذا يعني انه انا بحاجة للأ ل data واحد بيصير كذا
لإنه هيعمل generate ل new data set بعد الحدث إذا
أنا قلتله in place ما تحدث على نفس ال data set
اللي احنا شغالين عليهاتمام؟ هاي الفرق ما بين هاي
للـ true و للـ false ال axis عشان يقوللي أنت بدك
تحذف من الصفوف ولا من الأعمي ده طيب تعالي ناخد
مثال هاي القرية تبعتنا و ليكن هذه القرية تبعتني
اسمها data اسمها data و أنا قررت أحذف row أو أحذف
عمود هاي ال code بس تغيير ال argument بيحذف الصف
أو العمود لو أنا بدي أعمله بال Javaأو بدك تقوم
ببرنامج لحد في العمود أو الصف بدك تعمل for loop و
بدك تعرف ال array ب dimension أقل، مصبوط؟ سواء كان
dimension أو بتعرف الصف أو عمود أقل وبالتالي بدك
تسير تاخد تنقل من array ل array و لما تصل لل
certain row أو ال certain attribute تعمله ignore
وتاخد اللي بعده، مصبوط؟ بينما هان فعليا سطر واحد
فكانت حلت المشكلةهي الفكرة انك تروح تعمل
implementation للشغل من الصفر بس بس فعليا انت الان
انت وين ك user او ك developer لما اعرف ان الان في
حد فيكوا بيروح بيعمل implementation لل power
method بال java بيروح بيقول ولا بيستخدم مهدود
power طب ما احنا بنعرف كيف نعملها implementationبس
مستخدمهاش ليش لأنه جاهزة نفس ال complexity صحيح بس
من إلي أنا ك developer صار أسهل إلي في الاستخدام
طيب فأنا ممكن أحدث صفقة أو عمود حسب حاجتي مع تغيير
ال axis إذا أنا بدي أحدث ال attribute لو لاجيت فيه
null certain attribute وليه يكون ال label على سبيل
المثال أو ال A أو ال B بدي أحدث يعني إذا مجرد
ألاقي ال ..فراغ في العمود هذا بدي أحذفه وقولنا هذا
أكتر كلام موين مع ال label بما أن ال label هذا
موجود مش .. اعفوا .. ال label هذا مفقود فال row
هذا بدي أحذفه يعني بين جثيم بدي أحذف ال rows اللي
فيها ال label مفقودبدي أحذف الـ rows اللي فيها ال
label مفقود يعني بينجو سين الحذف هيكون تبع لل null
في certain attribute كل اللي بيلزم يعرف إيش ال
title أو إيش ال index تبعته فبقول له ال data
bandas.not null هان إيش .. إيش اللي صار فعليا هنا
هو أخد نسخة من ال data اللي إلها ميناللي فيها قيم
و تجاهل الـ null يعني بينجو سين هو راح يعمل
generation لـ new data set فيها واحدة، اتنتين،
تلاتة، اربعة، خمسة، ستة، six rows فقط بس الآن لأ
لما كون ان انا استخدمت نفس ال data framework name
فحطه اعمل override تمام؟ بس الأصل ان هو هيبقى يعمل
generate ل new data setو هك أنا خلصت من ال rows
اللي مافيش إلها label إذا أنا وين ما بلاجي في الصف
null بغض النظر في كل ال data ال 6 تبعتي وين ما
بلاجي null بدي أحد في ال row بلجي على ال command
الأخير data.drop and a not availableمش بروح بساوي
بيصير يعمل skiing على ال rows ال rows ال ال row
اللي فيه null بيحذفه بدون ما تحدد هنا كان بناء على
certain attribute أخد لك اللي فيهم ال data و ساب
ال null لكن هنا هيمر على ال row ده عدتها set هي ال
row الأول في null في غضب نظر في أي مكان هيحذفه
وبالتالي هذا هي انحدف وهذا هي انحدف وهذا هي انحدف
شو صار في ال data set كلها الحدثة فضيت في ال data
set اللي انا عملها sample عشان هيك هذا كويس و مريح
بس متى مباشرة بروح بقوله print print data dot
shape هيقوللي مثلا 100 ألف record و 15 attribute
بعد ما بقى نفذ العملية هذه بروح بقوله print كمان
مرة ال data dot shape هيديني
رقم جالي خمس تلاف وخمستعش لا يا عميخلاص ما هي
already انا حلقتها في ال data 6 جديدة فالفكرة بصير
اقدر افهم انا قدش حجم الجزء اللي انحذف و هاد
بالنسبالي اريح عملية حذف لو انا فعليا حافظت على
الداء .. خلّيني أقول نسبة وجود البيانات بشكل كويس
يعني زي ما قلنا سابقاً هي كانت مائة ألف وقال لي
صار في عندك خمسين ألف record okay ممكن أمشي فيها
لكن إذا قال لي و الله أظل .. أظل عندك خمسة وتسعين
ألف يكون أحسن وأحسن لكن قال لي خمس ألف لأ يعني هذه
العملية مابتنفعش لازم أعمل refill لـAlternative
وبالتالي أسهل حاجة إيش أسوي أسهل حاجة الحدث بس
مايكونش بأثر على حجمالـ dataset اللي عندك تخزين
البيانات manual أو
بدي أعب ال missing هذه بشكل manualشكل manual okay
معناته انا بدي اعرف ال attribute هذا او عفوا ال
value هذه في اي صف و اي عمود بدي اعرف ال index
تبعتها ممكن انا اكتب code عشان يعبيها و ممكن اكون
افتح ال data set من خلال ال excel sheet تبعتي و
اروح اعديلها بشكل مباشر و اعمل reload لل data لكن
اذا بتعتمد على ال index في عند index location 9.2
الصف التاسع العمود التاني حط ال value بالشكل هذا
إذا أنا بدي أحطها بالـ mean أو بدي أخزن الـ value
automatic بالـ mean أو الـ median الأمر بسيط جدا،
الآن ال data 6 تبعتي مع
ال attribute أو ال data مع ال attribute، مع A1 شو
بدها تساوي؟ نفس ال attribute A1
dot في الNA شو يعني في الـ NA؟ في الـ attribute
الفلاني اللي هو أي واحد عبي الـ not available ب
certain value لو أنا قلتله 15 أو 10، هياخدوا الـ
15 والـ 10 هيعبيها في كل الـ attribute، عفوا، في
كل الـ rows الفاضية في الـ attribute هذافي الـ net
available لكن انا بدي ايه يروح يحسب للمتوسط تبع
العمود هذا فبروح باخد ال data كمان مرة ال a1 ضد ال
mean as a function او
ممكن اخد ال mean هذي as a value سابقا و ادله اياها
فمش فارق كتير معايا وبهيك اصبحت انا باخد ال mean
تبعت ال value اللى موجود عنه طبعا ممكن بكل بساطة
استبدلها بال median بال maximum بال most frequent
أحيانا حسب حاجتي و طبعا كله لما بتكلم على ال
minimum و ال maximum و ال median و ال frequent
كلها عبارة عن method function جاهزة ماعليك لغاية
تستبدل و تشوف ال function المناسبة لك ال noise
data بالنسبة
لل noise dataأحنا متفقين أن الـ noise data يعني ال
data موجودة مش مفقودة لكن ال data خطأ ال data
خاطئة والأسباب تقريبا نفس الأسباب السابقة ممكن ال
system أو أثناء ال data collection أصبح في عندي
filler معين في الآلة في ال thermometer أو في ال
data entry أصبح في عندي مشكلة يعني في لحظة من
اللحظات كان في عندي الميزان طلعت على الميزان اللي
هو بالدين يقول 200 كيلوطبعا نطي تجارة و شرحت
الجاكيت و طلعت تاني على الميزان لما قولي 91 مثلا
اه هي consistent طب القرائع اللي كانت في الأول ايه
سببها الجاكيته مية و مش عارف قديش كيلو الجاكيته
نشاطر الله ما شاء الله عليك او ممكن كان فيها 100
ألف دولار الجاكيته تمام؟
ممكن اتصار في عندي اثناء ال data transmission نقل
البيانات عبر الشبكة اتصار في عندي تغيير بسيطفممكن
يؤثر برضه الـ technology limitation أحيانا بتكون
ال value اللي بده تنقرأ هذه أكبر من .. يعني تخيل
أنه أنا فعليا قيمة عملها ال variable integer بال
Java و القيمة اللي إجت أكبر تمام؟ فوق الأربع
مليارة أو long integer فماشي بيصير فيها؟ بيجيب
لآخر قيمة من السالب .. من السالب طب المفروض
ماتكونش القيمة السالبة inconsistent naming
conventionالمعاني أو في التسميات صار في عندي عدم
أو في تضارب خلنا نقول في التفسير اللي موجود عندها
طبعا ال duplicate record يا شباب أحيانا برضه بدها
معالجة كنوع من الأخطاء اللي موجودة عندها كيف بده
يعالج ال noise data معالجة ال noise data إما طريقة
بيسميها ال binning أو ال regressionclustering أو
فعلياً بتعمل .. و هدول طبعا كلها آلات أو ممكن
algorithms و ممكن أن ادخل ال computer أو الآلة مع
الإنسان بالنسبة لل binning بالنسبة
لل binning ال binning مفهومها انه هروح على ال
attribute هذا اخد ال values تبع ال attribute اللي
عندي هان ارتبها رقم واحد ارتبها و بعدين اروح
اجسمها لفئات تعالى نشوف عفوافي موضوع البناء فالان
هذه ال data اللي قداني هي عبارة عن sorted data بدي
أكتبها بشكل مختلف هي مثلا خمس عشر أربعة تسعة واحد
وعشرين أربعة وعشرين تمانية وعشرين تمانية خمس عشر
موجودة احنا قلنا خمسة وعشرينوكمان مرة 21 26 و 34
هذه ال values الموجودة لعندي هي ال data هيك جاية
ال sequence بال sequence هذا في ال attribute أول
خطوة في موضوع ال binning بتعمل sort رتبتهم تصعدي
فترتبوا ال data الآن بالنسبة لل binning يا شباب
بإمكانك تشتغل على ال equal frequencyيعني تكون كل
مجموعة نفس العدد أو تشتغل على ال equal depth زي ما
صار في ال histogram تمام؟ تصير تحدد range وتعب كل
ال values اللي بتجي اوين؟ في ال range هذا بينما
بال equal frequency معناته كل range له نفس العدد
من ال elements كل value .. range له نفس العدد من
ال elementsفبجسمهم بالتساوي الان هنا في كلام بسيط
لازم تفهمه انا بدي احاول اتخلص من ال noise data او
قيمة خطأ تمام؟ انا فعليا القيمة الخطأ هذا مش جادر
امسكها لحد اللحظة انا مش عارف هي الأربعة ولا
الاربعة وتلاتين ولا التمانية ولا التسعة انا مش
عارف مين فيهم الخطألكن في الأخر في قيمة خبأة
موجودة وانا بدي أعملها smooth عادة الناس اللي
بيشتغلوا بالدهان بعد ما بدهان روح بعد فترة مش بيمر
إيده على ال surface بحيث بيحاول يحسوا ناعم بالدرجة
المطلوبة أو لأتمام؟ ليش بتطلعش بالعين؟ لأنه غير
كافي بالنسبة له في اللحظة اللي بيحس فيها خشونة
فبرجعاش بنعمها مرة تانية أو بيعملها bullish الآن
انت بقى بتعمل bullish بال-binning وحشتغل معاك على
ال equal frequency في ال equal frequency كل مكان
عدد ال bins أكثر وعناصر ال element فيها أكبر بكون
أحسن كهلكت بقولك كيف يعني لو أنا قلتلك هدول 12
element
12 element جسمليهم لـ 2 bins ماتوا 6 و 6، مصبوط؟
6 وهي 6 التانيات الآن اللي بيصير لاحقا ان كل 6
أرقام هدول سواء هدول أو هدول بيستبدلوا بقيمة واحدة
فقط لقيمة المتوسط الحسابي على سبيل المثال بينما لو
انا قلتلك اعملهم 4 binsبتصير في عندي تلتات كل
ما زاد عدد ال frequency ال bins ضمن ال range معين
وعدد ال element اللي موجودة في الداخل اكتر بكون
مناسب والمثال اللي انا هضربه شكلنا .. هتخلص
محاضرتنا لو احنا مش مخلصين هنا لو كان عندي مائة
ألف طالب و بتوقع الأعمار من عشرينلأربعين سنة وبدي
أعمل smoothing لل attribute هذا بدي أعمل binning
كام bin بتختارح عليا؟ 25 ألف على أربع فئات زميل
لهان بيقول أربع فئات أو أربع مجموعات كل واحدة
بتحتوي على 25 ألف العدد اللي بيقوله كويس ليش؟ لأن
في الآخر لما بيستخدم المتوسط الحسابيتمام؟ متواصل
الحساب بمعناته انا فعليا لو كانت ال value عالي
هتروح .. الآن واحد بين تلاتة تأثيره تلت واحد بين
عشرة .. على عشرة واحد بين مية و واحد من مية على
ميت ألف او على خمسة و عشرين ألف يكاد يكون يروح
باتجاه الصفر مصبوط في التأثير ال average طيب، لكن
أنا بقول الأربعة غير مناسبة تلاتة،
ليش تلاتة؟ عشرين، تلاتين، أربعين؟طب و ال 21 وين
راح؟ و 22 وين راح؟ و 25 وين راح؟ ما okay .. انا
برضه بقول غير كافي هذا الكلام انا بقول بدي أعملها
عشرين بن عشرين مجموعة عشرين .. واحد و عشرين ..
اتنين و عشرين .. من عشرين لاربعين في عندي واحد و
عشرين بن بدي أعملهم واحد و عشرين بن او عشرين بن ..
بينفع؟ اه بينفع جداش عدد كل element في .. عدد كل
bin ال element فيها جداش؟خمس ألاف، مائة ألف على
عشرين، خمس ألاف، واحد على خمس ألاف بتهيألي برضه
النسبة مقبولة، بتروح، مابتبينش، وبالتالي أنا بحط
الأعمار ضمن الأعمار المحدودة أو الدقيقة، بدل ما
يصير أبو تسعة عشر يصير خمسة أو عشرين أو عشرين،
وأبو سبعة عشر يصير عشرين، لأ، طب ما كل واحد يصير
إيش؟ ضمن ال range الحقيقي اللي هو فعليا ضمن السنة
الحقيقية اللي هو موجود فيها
مافيش حاسيب .. المين التبعاتهم هتكون نفس ال value
بيبطل في عندي outlier فيهم أو بيبطل noise ال noise
احنا بنتكلم عن قيمة اتنين تلاتة بس معقول تكون في
عندي خمس تلاف واحد من الميت ألف فيهم نفس الخطأ مش
منطق تمام؟ فبجسمتهم bins هيا ده bins لأربعة على
أربع element ل frequency تبعتهم أربعة بعد هيك بدي
أعبيها بال meanباخد المتوسط الحسابي للمجموعة
الأولى كان 9 المتوسط الحسابي للمجموعة التانية 23
المتوسط الحسابي للمجموعة التالتة 29 إيش حصل أنا
بعد ذلك يا شباب ال data هذه هترجع لأصلها ال 15 كان
في المجموعة الأولى صح صار مكانه 9 الأربعة في
المجموعة الأولى 9 9 21 كانت في المجموعة التانية
صارت 23 2328 كانت في المجموعة التالتة صارت 29
تمانية في المجموعة الأولى تسعة خمسة و عشرين في
المجموعة التانية تلاتة و عشرين الواحد و عشرين
تلاتة و عشرين ستة و عشرين في المجموعة التانية صارت
تسعة و عشرين وهذه صارت تسعة و عشرين هذه لأن انا
اشتغلت على اربعة pins و استخدمت المين الحل الآخر
ان ممكن انا اشتغل علىالـ boundaries شو هي ال
boundaries؟ انا هاجي اقول هيه بعد ال sort القيم ال
boundary هاي او القيم الحدودية هذه بدي احافظ عليها
و بدي اغير كل اللي في الداخل حسب هي أقرب لمين تسعة
أقرب لتسعة .. للأربعة ولا الخمس .. تمانية أربعة
ولا خمساتعاش؟ أربعة أربعة معناته دي أربعة تسعة
أربعة ولا خمساتعاش؟أربعة الفرق هنا خمسة و الفرق
هنا ستة معناته هنا أربعة و نفس الكلام واحد و عشرين
هذي هتظل واحد و عشرين و هذي هتصير خمسة و عشرين هذي
تمانية ستة و عشرين و هذي ستة و عشرين و أربعة و
تلاتين و هيك صار في عندي الأن أكتر من طريقة عشان
أتعامل مع ال pins وبهيك يصير في عندي data set
smooth لكن كمان مرة برجع بقولككل مكان عدد ال bins
أكبر ب frequent او ب items أكبر بيكون أفضل بالنسبة
لك لأنه بتحاول تحط ال data في الريال case تبعتها
وبهلك احنا بننهي محاضرتنا ان شاء الله و بنحاول
نكمل المحاضرة الجاية في الموضوع ال regression و ال
clustering