Ali Ahmed55 نشر 2 فبراير أرسل تقرير نشر 2 فبراير السلام عليكم هو لو عندي قيمه من 0.0 الي 2.0 واستخدم الIterativeImputer طلع غير القيمه دي ولكن في نفس الفتره يعني مثل 0.1و 1.8 هل ده يكون طبيعه والا دي بيانات مش دقيق ؟ ودي البيانات قبل iterativelmputer hla_match_c_high 2.0 18565 1.0 5536 0.0 79 Name: count, dtype: int64 ودي بعد استخدم الIterativelmputer hla_match_c_high 2.0 18973 1.0 5566 1.6 1334 1.5 1042 1.7 547 1.8 418 1.4 239 1.3 206 1.2 149 0.0 86 1.9 75 1.1 68 0.9 28 0.8 20 0.7 16 0.4 8 0.1 7 0.5 6 0.2 5 0.3 4 0.6 3 Name: count, dtype: int64 2 اقتباس
0 Chihab Hedidi نشر 2 فبراير أرسل تقرير نشر 2 فبراير نعم هذه النتيجة طبيعية عند استخدام IterativeImputer، فهذا النوع من الـ imputation يعتمد على بناء نموذج إحصائي للتنبؤ بالقيم المفقودة بناء على العلاقات بين المتغيرات الأخرى في البيانات. و بما أن IterativeImputer يحاول التنبؤ بقيم مفقودة كناتج لمعادلات رياضية، فإنه يولد أرقاما مستمرة وليس فقط القيم الأصلية، و أيضا إذا لم تحدد قيود على نطاق القيم أو تجعل المتغير مصنفا، فالنموذج سيتعامل معه كمتغير رقمي عادي، مما يؤدي لإنتاج أرقام عشرية. و إذا كان المتغير يمثل فئات مثل درجات توافق، فمن الأفضل التعامل معه كمتغير تصنيفي وليس رقمي مستمر، وفي هذه الحالة يمكنك استخدام SimpleImputer مع طريقة مثل most_frequent أو KNNImputer للحفاظ على القيم الأصلية. 1 اقتباس
0 Mustafa Suleiman نشر 2 فبراير أرسل تقرير نشر 2 فبراير IterativeImputer يعتمد على نماذج إحصائية كالانحدار الخطي أو أشجار القرار لتقدير القيم المفقودة، وتلك النماذج تُنتج توقعات مستمرة (أرقام عشرية)، حتى لو كانت البيانات الأصلية منفصلة أي أعداد صحيحة. بمعنى لو النموذج يتنبأ بقيمة بين 1 و2 (مثل 1.8)، فسيُدخلها كقيمة عشرية بدلًا من تقريبها إلى 2. والسلوك متوقع لأن IterativeImputer مصمم للتعامل مع البيانات العددية المستمرة بشكل افتراضي، لكن لو متغيرك يمثل فئات أو أعدادًا صحيحة (مثل عدد التطابقات الجينية)، فإن القيم العشرية لا معنى لها وذلك يعني مشكلة في النموذج أو طريقة التعامل مع البيانات. بالتالي لو المتغير يجب أن يكون عددًا صحيحًا، فالقيم العشرية غير منطقية وتشوّه تفسير البيانات. ولو المتغير يمثل درجة مستمرة، فتكون القيم مقبولة، لكن يُفضَّل التحقق من سياق البيانات فهي الأساس. أي تفقد هل المتغير يجب أن يكون، فئويًا/منفصلًا، كـ 0 = لا يوجد تطابق، 1 = تطابق جزئي، 2 = تطابق كامل. أو عدديًا مستمرًا مثل نسبة التطابق الدقيقة. في الحالة الأولى استخدم SimpleImputer مع إستراتيجية most_frequent (إدخال المنوال) بدلًا من IterativeImputer. في الثانية استخدم IterativeImputer ثم قَرِّب النتائج إلى أقرب عدد صحيح: from sklearn.impute import IterativeImputer import numpy as np imputer = IterativeImputer() data_imputed = imputer.fit_transform(data) data_imputed = np.round(data_imputed).astype(int) 1 اقتباس
0 Ali Ahmed55 نشر 2 فبراير الكاتب أرسل تقرير نشر 2 فبراير الف شكراا جدا لحضرتكم جزاكم الله كل خير اقتباس
السؤال
Ali Ahmed55
السلام عليكم
هو لو عندي قيمه من 0.0 الي 2.0 واستخدم الIterativeImputer طلع غير القيمه دي ولكن في نفس الفتره يعني مثل 0.1و 1.8 هل ده يكون طبيعه والا دي بيانات مش دقيق ؟
ودي البيانات قبل iterativelmputer
ودي بعد استخدم الIterativelmputer
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.