بسم الله والحمد لله والصلاة والسلام على رسول الله
أهلا وسهلا بكم إخواني وأخواتي في لقاء أو في تسجيل
لكن هذه المرة شغل عملي بالبايثون ل data preparation
المثال الذي أنا هشتغل عليه إن شاء الله تعالى سيغطي
كثيرًا من الجوانب المهمة التي ممكن تلزمكم سواء خلال
الـ course أو لاحقًا طبعًا، لن أخفيكم، أنا هشتغل على الـ
database الـ iris، طبعًا الـ database صغيرة نوعًا ما
عملت عليها بعض الـ modification أو بين قوسين استحدثت
بعض المشاكل فيها، يعني أضفت كمان attribute، عملت
redundant rows، أضفت
العمود الـ raw id، الـ raw number الذي قدامنا، شايفينه؟
نحن هنا، وعملت فيها بعض الـ noise data، دخلت values
كبيرة جدًا، يعني مثلًا بدل ما هي تكون مثلًا خمسة فاصلة
واحد، زي القيمة التي ستظهر، دخلت واحدة و خمسين
وخمسين، طبعًا واضح أنه سيكون الاتجاه خاطئًا، عشان
أحددها، هذه كلها قياسات دخلتها بالسالب، دخلت قيمة أو
اثنتين بالسالب، عشان أنا أقدر أعملهم handling، فلنّينا
نشوف مع بعض، طبعًا أنا هشتغل على الـ .. الـ .. الـ buy
charm الأصلي، والأصل أن يكون فيه، عندي أنا، أفتح ملف
وأعمل load للـ data set، لكن عشان أخرج من جزئية أن
والله كل مرة أريد أن أكرر نفس العمل السابق إلى آخره،
سأشتغل معكم، أن أعمل خلال الـ .. الـ Jupyter notebook،
والـ Jupyter notebook هي عبارة عن نظام interpreter،
ليس نظام compiler، طبعًا نعرف الفرق بين الاثنين، أنه بالـ
interpreter أنا أشتغل statement by statement، و
أعمل run وأنتقل لما بعدها، بينما بالـ
بالـ compiler، لا، أنا أشغل دائمًا البرنامج من البداية،
عشان هيك بتلاقي الـ Google colab، معظم الـ online
editors أو التي لنقل online platforms التي
موجودة لـ data science أو لـ machine learning
تشتغل عليها موضوع الـ Jupyter notebook أو نظام الـ
notebook، لنقل بشكل سريع، ما الذي قمت به،
طبعًا كل هذا لا يخفى على أحد منكم، أنه أنا عملت
import للـ pandas، وهي الـ library المسؤولة عن قراءة
الـ data framework، وأنا من الآن، الـ data تبعتي
موجودة في iris file، موجود على نفس المجلد الذي
موجود عليه الملف الذي موجود عندي هنا، فببساطة أنا عملت
عشان أتأكد أن عملية القراءة تمت بشكل صحيح، فذهبت
عملت data.head، طبعًا في ميزة هنا، أيها الكرام، أنا
لست بحاجة، في الـ notebook أو في الـ Jupyter notebook،
أن أستخدم جملة print، مجرد أنني أذهب إلى الـ
مجرد أن أكتب اسم الـ variable، فيقوم بتنفيذ الكثير من الـ
tasks، وهي أيضًا ميزة أسهل من موضوع الـ printing أو
الجزء .. هذه الأشياء الكثير من الكتابة وأنا أعمل print
أو أطلب منه أن يطبع لي بعض الـ values الموجودة
عندي، سأقوم بإعادة التشغيل من البداية، فقط لأتأكد
أتأكد
ممتاز، الخطوة الأولى تمت، تم قراءة الـ data file، وهي
تبدأ بـ header file، طبعًا يمكنك وضع عدد الـ headers
التي تريدها، ثلاثة أو خمسة أو عشرة، ما تريد، من الـ
values الموجودة عندك، طيب أول خطوة أنا أريد
أن أفعلها، أريد أن أحاول استقراء الـ data التي عندي بشكل عام،
أو أريد أن آخذ نظرة على الـ data الموجودة، قلنا لابد
من فهم الـ data بشكل جيد، طبعًا أنا أعود وأقول أن الـ
iris، جميع الأعمدة التي فيها عبارة عن numerical، فهذه
values، باستثناء الـ label، الـ values الموجودة
عندي، هذه من A1 إلى A5، هي عبارة عن قياسات لزهرة
السوسن، طبعًا أيها الكرام، العمود الخامس، أنا هذا
أنا أنشأته إنشاءً، بناءً على عمل معين، لأرى العلاقة بينها عند
الـ correlation، ونعمل عليها، تمام، الآن كل ما أريد
أن أفعل هو import للـ
matplotlib
library matplotlib.pyplot
وطبعًا أنا ممكن أستدعي الـ class هذا بشكل مباشر، لكن
أنا ممكن أختصر الـ class as plt، كما وضعنا
لـ pandas إذا كنا نستخدم الـ pd، سأذهب الآن، الـ data
التي عندي، اسمها data، إذا شئت، أنا أُقلل load الذي
عندي، سأقول له d تساوي data، لأظهر، أكتب الـ d فقط، و
سأقول له الـ d.، يوجد لدينا function اسمها hist، و
المقصود فيها الـ histogram، و plt.show
مجرد استدعاء الـ Python library اسمها
mathematical plotting library for python
matplotlib، وأريد أن أرسم الـ data، هذه الجملة فقط، لأني
لا أريد أن أكتب كلمة data، سأضع حرف الـ D وأمضي على
السريع، يعني لأريح نفسي، كما أقول لكم، هذا ما
طبعًا هنا مباشرةً، طبعًا التي التي التي التي التي التي
التي التي التي التي التي التي التي التي التي
التي التي
الآن أقول أن تم رسمها، طبعًا الرسمة أين هي؟
لابد أن أراها، أين هي؟
لابد
أن أراها
سأقوم بعمل insert cell locally، مع أنه من المفترض أن
التزامن بين الاثنين يكون تامًا، هنا الـ cell
هو الـ library أو الناتج الذي ظهر عندي، طبعًا هنا، نرى
الـ histogram، توزيع الـ data بين A1, A2, A3, A4,
A5, A6، طبعًا، هذا هو الصحيح، طبعًا عندما قلت لكم أنا
أجري العمل على تسجيل الفيديو، واجهت مشكلة أنني لا أعرف
ما الذي تعطّل لدي في الـ python، واضطررت أن أنزل من جديد،
صار يظهر عندي الـ histogram، الذي أنا في الحقيقة، حتى اللحظة، لست
قادراً على فهمه، أشياء، على كل حال، طبعًا، هو استثنى الـ raw
number الذي موجود عندي هنا، الـ
الـ الخامس، لم يمثلني لأنه ليس فيه distribution، قال لي
والله في واحد، معظم الـ distribution في عندي
value كبيرة جداً، واضح أنه في عندي value كبيرة جدًا، و
الباقية، تكاد القيم لا تظهر بالنسبة لها،
التوزيع بين العناصر الموجودة عندي، واضح أنه
أربعة أو خمسة، بينها علاقة ربما لست
أعرفها، خليني، لكن بالمجمل، هو يعطيني، أنا، الـ histogram
يعطيني الصورة عن الـ data الموجودة، فلننتقل
للخطوة التالية، الآن لو أتيت على سبيل المثال،
كلنا متفقون أن العمود الأول، هذا الذي هو الـ raw
number، غير مفيد، وأنا أريد هذا العمود، أريد
أن أحذفه، بكل بساطة، أذهب وأقول d.
drop الـ
drop هذه تحتاج مني اسم الـ raw number، طبعًا
الـ axis تساوي 1، الـ x axis، طبعًا التي تمثل الصفوف،
تمثل 0، والأعمدة تمثل 1، طبعًا يوجد لدينا
command in place، هذا مهم جدًا، أجعلها true، يعني
التعديل يكون مباشرًا، صحيح، طبعًا بعدها،
ممكن أن أذهب وأقول له الـ d. head فقط 3، فقط لأن
أنا أريد أن أرى العناصر الموجودة، ماذا سيحدث لها؟
ممتاز، تم حذفها، سأقول، كل ما فعلته هنا لأنني
ذهبت وقلت له d.drop، أعطيته اسم الـ attribute الذي
أريده، ومن ثم أنا ذهبت، قلت له، هذا الحدث في
الإشارة من مجموعة الأعمدة، والـ inplace، طبعًا،
هذا نفس الكلام نفسه، لأنه لماذا، لماذا
الـ axis مهم، أيها الكرام، لأنني أيضًا، نفس الـ
function هذه من الـ data framework التي هي D، التي
هي الـ pandas كـ framework، أنا أستخدم الـ method
تبعها، الـ drop، أيضًا، أستخدمها للصفوف، وبناءً على
ذلك، أنا لابد أن أحدد الـ axis، طبعًا أنا ممكن أذهب، أنا
أكتب هنا قائمة بالـ rows أو بالأعمدة التي أريد
إياها، لو أنا أريد أن أحذف مجموعة من الأعمدة، أريد أن أقول
A1 و A2 و A3، طبعًا، أذكرهم كنص، كما كنا ..
كما رأينا في المثال السابق، ممتاز، النقطة التي
بعدها، ننتقل الآن، يعني أنا قد حذفت
العناصر التي ليست لها لازمة عندي، فلأبقَ في
موضوع حذف الصفوف، عندما نتكلم، أنا أريد أن أحذف صفًّا
معينًا، نأخذ كمثال ونحاول، طيب الآن لو أنا أريد أن أبحث
عن الـ duplicates، الآن أنا أريد أن أمشي على الـ
duplicates وأرى أين يوجد duplicates في الـ rows، و
أذهب وأحذفها، كما قلت لكم، الـ data هذه عملت
عليها شئياً، اصطنعت فيها بعض الأخطاء، من أجل أن أُظهر
البيانات الموجودة عندي، إذا أنا الآن أريد
أن أشتغل على الـ duplicates، معناته سأذهب وأقول له D.drop_duplicates
drop_duplicates
طبعًا مهم في موضوع الـ duplicates، عندما أريد
أن أحذفها، أنني أفهم القيم التي أريدها أن تتكرر، هل
التكرار قيمة معينة في عمود معين، يعني على سبيل
المثال، لو أنا الآن ذهبت وكتبت له، وقلت له أنا أريد
التكرار فقط في عمود A5، معناته، الثلاث قيم هذه
التي ظهرت أمامي، وكل الـ values الموجودة، point
ثلاث في خمسة، تحدد أم لا، أريدها في عمودين
اثنين وثلاثة، اثنين وثلاثة، اثنين وثلاثة، أم أريدها
في أربعة أعمدة، أو أربعة أعمدة، أو ما شابه، عشان
هكذا، دائمًا أول attribute الذي يطلبه مني في الـ
duplicates، هي الـ subset، الـ subset هنا هي عبارة
عن مجموعة الـ attributes التي أريدها، ما هي الـ
attributes التي أريدها؟ مرّة أخرى، هي A واحدة، هي
كانت، أنا أقول له، أين يوجد rows التكرار
تبعها، أو القيمة تتكرر فيها، الـ values تبع A1
يعدّها as duplicate rows، إذا أنا وضعت هنا
مرّة أخرى A2، معناته أنا أقول له أين يوجد rows A1
و A2 متشابهتان، فهذه duplicate rows، أتمنى أن تكون
الصورة واضحة، في A3، خليني فقط أجربها على سبيل
المثال على A1
Okay، ما أقول، عملت هذه أيضًا، جيد، خمسة،
طيب، الـ values التي بعدها، هي، أنني أريد أن
أقول له ماذا سيحدث لها في موضوع الـ keep في حالة وجود
duplicates، ماذا سيحدث؟ لأن يوجد لدينا ثلاثة خيارات في
الـ keep، في الـ False، لا تحتفظ بشيء، يعني
جميع الـ rows المكررة احذفها، هل هذا الكلام منطقي؟ يعني
لا يبقى أي row، في الـ attribute A5 قيمته 0.310، على
سبيل المثال، إذا أنا وضعت الـ False، فتبقى القيمة
التالية التي بعدها هي الـ first، فتبقى الـ False
بتؤخذ، False
فهكذا لا يُخزّن شيء، first
احتفظ بالقيمة الأولى فقط، أو القيمة التي تجدها، أو
الـ last، في الآخر
قبل هيك في عندي doc describe الـ function هاي
describe نعم
معلومات كاملة عن الـ Attribute Statistical
Description المتوسط الحسابي، الـ Standardization
الـ Minimum، المتوسط، أو الربع الأول، أو الربع الثاني
أو الربع الثالث، طبعاً بيقول لي فيه إن الـ maximum
value هذي سبعة و خمسين، سنتي، سبعة و خمسين سنتي قياس
الزهرة، هذا الكلام يكاد يكون مستحيل، طبعاً في عندي
قيمة سالبة، هان هكذا، أنا صرت أنا قادر أشوف إيش الـ
data أو وين مشاكل الـ data، بالإضافة للموضوع، طبعاً مش
مبين الـ missing عندي هان إلا غير من خلال الـ count
إلا من غير من خلال الـ count، ممتاز، معناته أنا صار
في عندي الآن
معرفة الـ Missing اللي موجودة، طبعاً ممكن أنا أحصل
للـ Missing، لو كتبت الـ .. أو عملت الـ code التالي
أنا بدي أروح أقول له الـ missing equal
PD.BANDAS.DATAFRAME وانشغل
DataFrame جديد، وأسمي الـ attribute اللي فيه
missing، والـ value تبعته، الـ D.IS NULL، وأقول له
sum، هذه الـ function المفروض إنها بدها تمر على كل
الـ data frame اللي موجود عندي، والـ data وإن في عندي
Null تروح تحاول تعدّلها، تبعاً لمين؟ الـ attributes
اللي موجودة عندها، okay، عشان يجيب لي الـ value اللي
موجودة، أنا بضرب هقول له هات لي الـ missing اللي عندك
هدول، هيديني ثابت، جملة الطباعة، run وإن أنا أخطأت، آه
في أقواس هنا
هي راح جاب لي الـ a1, a2, a3, a4, a5، والـ label، هدول
طبعاً قال لي إن هذه عدد الـ missing اللي موجود عندك
موجودة في a1, a3, a2، الآخرين، طبعاً ليش أنا أعمل
هيك يا جماعة الخير؟ طبعاً هي البيان اللي أحصلها
من هنا، لكن برضه هي في طريقة ثانية ممكن أحصر الـ
missing بشكل واضح مع كل attribute، طبعاً لو أنتَ
سألتني، الـ missing اللي هان شو ممكن أسوي فيه؟ ممكن
أعبيه بالـ mean، أو أعبيه بالـ median، مش فارقة كتير
معايا، ممكن أعمله drop، بس الـ label اللي هان، حتماً
لازم أعمله drop، لأن هذا ما بينفع يظل، ليش؟ لأن أنا
عندي قياسات ومش معروف نوع الزهرة، فأنا لازم أعمله
drop، طيب بما إنه صار لنا نتكلم على الـ drop، خليني
أروح أحذف الـ .. الـ attribute اللي فيها الـ label
أولاً، وهي اللي بدي أحطها هنا comment، drop rows with
null value in a certain attribute، اللي هسويه الآن، هروح أنا أقول
اللي هو data equal data، الـ data frame اللي
موجود عندي، الـ data، أو الـ data.label.
not null
not null هكذا
أنا قاعد بقى أقول له نفذ لي إياها، وهذه الجملة تماماً
تكافئ جملة ثانية هكتبها الآن، ممكن أنا أروح أقول له
data equal
data frame اللي موجود عندي، بداخلها بيدي
.not null
null، والـ not null هاي بدي أزودها بالـ data باسم الـ
attribute اللي موجود عندنا، اللي هي مين؟ الـ label
سواء نفذت الجملة اللي فوق أو نفذت الجملة اللي تحت
الـ two، هيدوني نفس النتيجة، وهي إنه هيعمل drop
لـ الـ attribute اللي فيه الـ label، يبقى
فيه missing، هيرن، عشان نتأكد بدي أعيد الـ code تبع الـ
missing هذا الآن، ها، وهيرن، لاحظوا إنه ما فيش عندي
missing الآن في الـ label، طبعاً سواء نفذنا الجملة
الأولى يا جماعة الخير، أو الجملة الثانية، نفس الكلام
لكن مع اختلاف طبعاً، بنعتمد على الـ data أنا جا
عنها، اللي بقوله، خلص الـ data دي بتساوي d.where الـ
label not null اللي هي الـ values تبعته exist أو not null
تمام، هي كانت، أنا عملت drop، طيب بما إن وصلنا نتكلم
عن handling للـ missing، وهي أول واحدة عملناها هان
خليني أروح بعد هي كده، إيش نساوي؟ أروح نعمل الـ fill
بالاعتماد على الـ a2 و a3، هبتروح نعمل لهم fill بالـ
mean، طبعاً ليش ما بدي أعبي a1 بالـ mean؟ عندي 57
مقارنة بين الـ a1 و a3، خمسة وخمسة كبيرة، المين فلو
أنا بدي أخزن الـ median، بيمشي حالها، القيمة الوسيطة، و
قلنا الـ median فيها ميزة، إن لما بيعتمد عليها
ممكن تضيع تأثير الـ value الكبيرة الموجودة، وحد
هنرجع كمان مرة بنعالج الـ noise، خلينا فقط مع المين
هروح أبدأ بـ data of a واحد، بدها تساوي data of a
واحد.fillna، اللي هي not available، بإيش بدي
أعملها؟ في الـ data of a واحد
.mean، كمان هذه الأولى هنسخها
لـ a اتنين
طبعاً يا جماعة الخير أنا بقى أشتغل، ولا يهمني أين
الخطأ أو الـ missing اللي موجودة، إذا أنا بدي الـ
missing، ممكن في عندي conditions، هنشوفها كمان شوية
زي ما لما بتدور على الـ maximum value، اللي هي
السبعة و خمسين، ممكن أنا أروح أطبق عليها بشكل كويس
انسخ هاي تلاتة
طبعاً أنا عملت هدول بالـ mean، وهدول بالـ median، ووراهم
مباشرة بدي أقول له هات لي إيش؟ حسب لي الـ missing
حطيتهم في نفس الـ cell عشان ما يكونش عندي مشكلة، وإن
شاء الله، آه، ليش هيك؟
مش خطأ، ودليل إنه ما ضلش في عندي values مفقودة
بالموجود، طب لو أنا راح قلت له d.describe
أوكي، كله صاروا 151، مصبوط، هي كان ما بيعيش الخياشة ده a
value is trying to be set to a copy of a slice
from that frame work، هي أشبه بالـ warning، نعم هذا هو
a setting with copy warning، هو بيحذرني إنه بيصير في
عندي تعديل على الـ data، بناءً على الـ data الموجودة، هو
عمال بيقول، استخدم loc، أو عمال بيقول استخدم iloc
بدل، مش قضيتنا كتير، بس في الآخر أنا هي الـ value
تبعتهم، أعمل لها iloc، ومفروض الآن ما فيش عندي
missing مطلقاً، طيب ننتقل بعد هيك للجزئية، إن والله
شو وضع الـ noise data؟ وين الـ noise data تبعي؟ طبعاً
أنا ممكن أستدل على noise data، أولاً بما إنه أنا
بتكلم على measurement، معناته هذه مش سالب تلاتة، هذه
تلاتة، وبما إنه أنا بتكلم على Measurement لوردة، برضه مش
منطقي يكون في عندي الـ maximum value هي 57، عشان هي
دائماً دراسة مفيدة للـ data، أو الـ contents اللي
موجودة عندي في كل الـ data set، طيب إيش الحل؟ كيف
بدنا نشوف، طبعاً هذه إشارات عندي، طبعاً في عندي طريقة
ثانية كمان، ممكن أنا أروح أشتغل عليها، لو أنا قلت
هذه الـ attributes equal، اللي هي الـ list تبعنا
اللي فوق، خليني بس أنسخها بدل ما إيش أكتب من ثاني
okay
هو، عاد تظهر، وضالة في الـ list، يعني، أوى المشكلة في
الموضوع، لأ، بدي أعدّل عليها، الـ label أنا مش بحاجة
ألاقيه، okay، هذه مجموعة الـ attributes اللي موجودة
عندي، فأنا بدي أروح أعمل .. بدي أرسم figure، هي plot
plt.figure، حجم الـ figure قد إيش؟ هي big size
مثلاً، دعوني أختار عشرين، عشرة، تمام، الـ figure هذا
يحتاج الـ data دي، of attributes اللي هم الخمسة
attributes اللي موجودة عندي، طبعاً الـ label اللي احنا
بدنا إياها هي nominal، لأنها مرتبة، تمام، أو بدي أروح .
attributes
.boxplot
الـ box plot يا جماعة الخير، هذه عبارة عشان تحدد الـ
outlier اللي موجود عندي، ممكن أضع للرسمة title، plt
.title، هذا الكلام ممكن يلزمَني في شرح التسجيل
الجديد اللي هو إيش؟ اللي له علاقة بالـ visualisation
iris attributes، وفي
الآخر بدي أروح أقول له show للرسم اللي موجود عندي
و run، آها، تمام، لاحظوا معايا الآن، هذه الرسمة جاب لي
الـ data، طبعاً واضح، بقول، الـ data الـ range تبعي
المسموح فيه، الـ outlier المسموح فيه، اللي هو داخل
المربعات السوداء، طبعاً اللي دول، من الخطوط السوداء
طبعاً إحنا لما نرسم الـ outlier، لاحظوا إن إن شاء الله
تعالى هنفهم الكلام بشكل كويس، بشكل أحسن، لكن واضح إن
هذه outlier، وهذه outlier، لأنهم بعاد تماماً، هذه جايّة
مع الـ fit، خليني، طبعاً لو أنا بدي أغير القيمتين هدول
القيمتين هدول، إحنا شفناهم، عاملين، وهي هذه سالب
تلاتة، وهذه سبعة وخمسين، سبعة وخمسين، تمام، طيب بدنا
الآن نشوف كيف بدي أتعامل مع الـ noise data اللي
موجودة، مع الـ noise data، بدنا ننتقل، ونكتب code
نشوف كيف بدي أتعامل، أو بدي أتخلص من الـ code مع الـ
noise data اللي موجودة
طيب أول حاجة أنا بدي أعرف الـ 57 هذه اللي في الـ
attribute الأول، جاية في أي row، عشان أروح فوق، أو
أروح أعدلها أو ما شابه، أنا okay، بعرف في العمود
الأول، لكن في أي row ما بعرف، تمام، determine the
noise value
location، أو بين قوسين الـ row، الآن عشان أحدد الـ row
اللي موجود، أو اللي فيه الـ data، طبعاً أنا عندي الـ
data، وأنا بعرف إنه موجود في الـ attribute الأول
فأنا بروح بقول له، اديني الـ row وين، إن الـ attribute
عفواً، a1 equal
57، إيش اللي أنا سويته هنا؟ هنا رحت وقلت له أنا بدي
الـ row، الـ row اللي فيه a1 equal 57، a1، لاحظوا أنا
بإعتماعي على الـ data، طبعاً هو لو كان فيه أكثر من
واحد شو يصير؟ هيديني الـ rows اللي موجودة عندهم، فراح
قال لي الـ row 113، هي الـ row 113، طبعاً هنقول لكم يا
جماعة الخير، معالجة الـ noise data غالباً manual، طبعاً
الـ data preparation معظمها manual، تمام، وبالتحديد
الـ noise ذاتَه، أنا حددتها الآن، معناته لو كان في عندي
أكثر من row، أكثر من row، هتكون موجودة عندي، يعني لو
على سبيل المثال، على سبيل المثال بدي أنا أروح أكتب
code مشابه للـ code هذا، بس من باب العلم
يعني أروح أقول له a5 بدأ تساوي تلاتة مثلاً، و
لاحظوا، هذاني القائمة، وبالتالي أنا بدي أعمل
handling لكل واحد من هدول بشكل مستقل، لما يكونوا
لكن هدول أنا ما بيهمنيش، أنا اللي بيهمني هالـ 113
تمام، طب مع الـ 113 هذا شو أنا بدي أروح أساوي الآن؟
بدي أعدل الـ value، الآن هذا الـ value مكتوب يا جماعة
الخير 57، 5
شغلة قبل أخيرة، لما أنا بدي اشتغل على موضوع الـ
correlation، أنا الـ data موجودة عندي، والـ attributes
اللي عندي كلها numeric، معناته أنا بدي أطبق الـ
correlation، في عندي method اسمها dot correlation
شوفي
مسحت الـ command، run، راح حسب الـ person الـ
correlation، وقال لي والله هي الـ attributes اللي عندك
لكن واضح أن في عندي على، طبعاً القطر، يا جماعة الخير
المفروض كله يكون ايش؟ واحد، لأن الـ attribute مع نفسه
واحد، الـ attribute الأول والثاني ما فيش dependency
مطلقاً، الأول والثالث فوق الخمسين، فوق الثمانين، الأول
والرابع فوق الثمانين، الأول والخامس فوق الثمانين
لكن الثالث والرابع 95%، الثالث والخامس 95%،
الرابع والخامس 99%، طيب الآن بس أنا بدي أحذف واحد
من الـ correlation اللي هو الخامس هذا، طب أنا بدي
أقول أن والله الـ attributes اللي عندي الـ
correlation تبعته فوق فوق الـ 97%، هي اللي بدي
أحذفها، أنتم بالمثال كان عندكم فوق الـ 80%، الآن
أجيب في الواجبات الآن يا جماعة الخير لهذا الكلام، ليش؟
لأن أنا فعلياً فعلياً الـ attribute الخامس هو عبارة
كان عن واحد ونص، حاصل ضرب الـ values اللي موجودة
تعالوا احسبوها أنتم هيك، واحد ونص في
1.5، 4، 6، 1.5، هنتلقى طبعاً صار في بعض التغييرات على
الـ values، 1، 2، 1.5، الفكرة أنه أنا طبعاً عملت
rounding للـ values اللي موجودة، عشان يصير فيه
اختلاف، ما تصيرش يعني مية في المية، فجأة هو بس واضح
أن الـ value تسعة، تلت تسعات يعني، وكانها واحد، طب ايش
الحال؟ أوكي، الـ attribute هذا أنا بدي أحذفه، كيف بدي
أروح أحذف الـ attribute؟ كيف بدي أحذف الـ attribute
يا جماعة الخير؟
قلنا فيه نقطة، رقتين اللي هي حدف الـ attribute بس
هذا، مع الـ null أولاً، حذفنا الـ attribute الأول، drop
أو الـ function اسمها drop، drop
a5, replace
وأروح أقول له احسب الـ correlation مرة ثانية، هي run
ممتاز، هي جاني الـ data، طار الـ attribute، والـ
correlation، طبعاً هذه من الأصل أنها ما تتغيرش، لكن
الحسبة بتظل نوعاً ما فيها اختلافات بالنسبة للكل، طيب
خلصنا الآن في موضوع الـ correlation، شفنا موضوع الـ
data، ضل آخر جزئية كنت أنا بدي أعرفها منكم اللي هي
جزئية تقسيم الـ data لـ two different sets، وكتبتهم
على الـ file اللي موجود هنا، طيب الآن عشان أنا أجزم الـ
data from escalare.model
underscore selection
هذا الكود بينفذ stratified sampling على الـ data
الموجودة، طبعاً احنا كنا طالبين منكم الـ data set اللي
موجودة عندكم، هي الـ data أو الـ data اللي أنتم
حملتوها، تجسّمها، بتكلم عشان تفاصيل ثانية لحد اللحظة
طبعاً هدفي إلى استخدام الـ train test split، هذا ممكن
يرجع لي بمجموعتين، وممكن يرجع لي بأربعة، ممكن يرجع لي
بمجموعتين، وممكن يرجع لي بأربعة، لكن أنا بدي اشتغل
فقط على نظام مجموعتين، ولما بنحتاج الأربعة بنتكلم
عليهم، فالمجموعة الأولى أنا بدي اسميها train set، كما
ثانية test set، equal اللي هو اللي .. خليني بس أقوله
as، طبعاً هذه ميزة الـ as، TTS، TTS، وTTS هذا اللي هي
train test split، بياخذ مني الـ data اللي هي دي
بياخذ مني الـ test أو الـ train size، والباقي طبعاً
بياخذ النسبة التالية، point، ثلاثة من عشرة، كده أنا
عم بقول له بدي للـ test set حجمها ثلاثين في
المئة من الـ data set اللي موجودة عندي، ومن ثم أنا
بدي أروح أتحقق، هي في عندي الـ train، والسبعين في
المئة حتظهر للـ train، هي train
set.head ثلاثة، ونفس الكلام test set.head ثلاثة
وهي run، هد
النتائج، ثمانية فيهم، عاد عشان هدول جابهم كل واحد لحال، و
غالباً، هدول الأخيرة
غالباً هذه الأخيرة، بدي أعملهم كل واحدة لحالي بشكل
مستقل، هاي run هاي
الـ train set، وهي الـ test set، run
طبعاً، ادّى الـ two different sets موجودة، ضل هلّأ موضوع
موضوع الـ train set اللي أنا أكتبها على الـ
موضوع كتبتها على الـ disk، بسيط جداً، أنا للآن في عندي
الـ pandas، dot، زي ما كنت بقوله، read csv، بروح بقوله to
csv، وبديله اسم الملف، أي train set
tsv .. يا عفو، إن هاد الـ train set، train set، run، و
بقى آخذ test set بنفس الكيفية، test set، dot
underscore csv
testset.csv، run، وبهيك احنا بنكون إن شاء الله
انتهينا من الـ application، بس عشان أنا أتأكد، ممكن
أروح أدور على الـ files اللي موجودة عندي، احنا من
الأسماء هو طبعاً الأسماء كلها مرتبة، ترتيب train set
وهي train set، وهي test set، الآن seconds ago، هاي الـ
data موجودين كـ excel file أو كـ csv file، إن شاء
الله، بتكون المعلومات سهلة، بتعيدوا الفيديو مرة
وثنتين، بحيث إنكم تستوعبوا، وإن شاء الله تعالى الله
يعطيكم العافية، والسلام عليكم ورحمة الله وبركاته