Ali Ahmed55 نشر 29 ديسمبر 2024 أرسل تقرير نشر 29 ديسمبر 2024 السلام عليكم الكود الاول X = data_train[['cyto_score', 'tbi_status', 'graft_type', 'vent_hist']] y = data_train['efs_time'] X = sm.add_constant(X) model_ols = sm.OLS(y, X).fit() وبين الكود ده model_ols = ols(formula='efs_time ~ C(cyto_score) + C(tbi_status) + C(graft_type) + (vent_hist)' , data=data_train).fit() اقتباس
0 Mohammad Ibrahim8 نشر 6 مارس أرسل تقرير نشر 6 مارس في الكود الاول يتم التعامل مع المتغيرات كما هي (سواء كانت رقمية أو فئوية ( Categorical )) واذا كانت بعض هذه المتغيرات فئوية فيجب تحويلها مسبقًا باستخدام pd.get_dummies أو LabelEncoder، لكي يتعامل معها النموذج بشكل صحيح . اما في الكود الثاني يتم استخدام الصياغة المعتمدة على formula وهي الطريقه الافضل C(variable_name) تعني أن المتغيرات cyto_score, tbi_status, و graft_type فئوية (Categorical)، مما يعني أن المكتبة ستحولها تلقائيًا دون الحاجة الي تحويلها مسبقا . المتغير vent_hist لم يتم وضعه داخل C(), مما يعني أنه متغير عددي ولن يتم تحويله. الفرق بين الكودين : الكود الأول لا يتعامل مع المتغيرات الفئوية بشكل تلقائي، و يتطلب تحويلها يدويًا . الكود الثاني يقوم بذلك تلقائيًا باستخدام C(). في الكود الأول، يجب إضافت الحد الثابت يدويًا باستخدام sm.add_constant(X). في الكود الثاني، يتم تضمينه تلقائيًا. الكود الثاني أكثر كفاءة عندما تحتوي البيانات على متغيرات فئوية، لأنه يحولها تلقائيًا دون الحاجة إلى معالجة إضافية. 1 اقتباس
السؤال
Ali Ahmed55
السلام عليكم
الكود الاول
وبين الكود ده
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.