موقع د. عزيز الجعيد
  • الرئـيـسـية

  • الأقسام

    • علم البيانات والذكاء الإصطناعي

    • ذكاء الأعمال

    • لغة البرمجة بايثون

    • مقالات متنوعـة

    • لغة البرمجة آر R

    • الإحــــــصــــــاء

    • البيانات المفتوحة

  • عـنــي

  • تواصل معي

علم البيانات والذكاء الاصطناعي

  • الرئـيـسـية

  • الأقسام

    • علم البيانات والذكاء الإصطناعي

    • ذكاء الأعمال

    • لغة البرمجة بايثون

    • مقالات متنوعـة

    • لغة البرمجة آر R

    • الإحــــــصــــــاء

    • البيانات المفتوحة

  • عـنــي

  • تواصل معي

الانحدار اللوجستي (logistic regression) باستخدام بايثون Python

27/07/2019 | لغة البرمجة بايثون | تعليق واحد

الانحدار اللوجستي (logistic regression) هو أسلوب إحصائي يستخدم لوصف العلاقة بين متغير تابع (dependent variable) ثنائي (binary) ومتغير مستقل (independent variable) واحد او أكثر وفق الصيغة التالية:

\[
logit(p)=\alpha+\beta X
\]

حيث

\[
logit(p)=\ln{\left(\frac{p}{1-p}\right)}
\]

وكذلك $$p=p(y=1|X)$$.

ملاحظة: في تعلم الآلة، يعرف المتغير التابع (dependent variable) بالمتغير الهدف (target variable). كذلك تعرف المتغيرات المستقلة (independent variables) بمتغيرات التنبؤ (predictor variables) او الخصائص (features).

وهناك عدد من الفروض (assumptions) الهامة التي ينبغي التنبه لها عند استخدام الانحدار اللوجستي وهي:

الآن سوف نوضح كيف يمكن تطبيق نموذج الانحدار اللوجستي على البيانات: Breast Cancer Wisconsin Data Set وذلك باستخدام لغة البرمجة بايثون. المزيد من التفاصيل حول هذه البيانات على الرابط. للقيام بذلك سوف نتبع الخطوات التالية:

1. تحميل البيانات:

In:
import pandas as pd 
wdbc_data = pd.read_csv('wdbc.csv',sep=',')
wdbc_data.head()
Out:
         id diagnosis  radius_mean  ...  concave points_worst  symmetry_worst  fractal_dimension_worst
0    842302         M        17.99  ...                0.2654          0.4601                  0.11890
1    842517         M        20.57  ...                0.1860          0.2750                  0.08902
2  84300903         M        19.69  ...                0.2430          0.3613                  0.08758
3  84348301         M        11.42  ...                0.2575          0.6638                  0.17300
4  84358402         M        20.29  ...                0.1625          0.2364                  0.07678

في هذه الحالة سوف يكون المتغير التابع (المتغير الهدف) هو diagnosis وهو ثنائي كما يتضح من التالي:

In:
wdbc_data['diagnosis'].value_counts()
Out:
B    357
M    212
Name: diagnosis, dtype: int64

حيث يمثل هذا المتغير تشخيص الخلايا السرطانية الى خبيثة (M) او حميدة (B)، وجميع المتغيرات المتبقية هي متغيرات مستقلة (خصائص). سوف يتم تخزين المتغير التابع diagnosis في المتغير y بعد استبدال M بـ 1 و B بـ 0، كذلك سوف يتم تخزين المتغيرات المستقلة في المصفوفة X كما يلي:

In:
wdbc_data['diagnosis']=wdbc_data['diagnosis'].replace('M',1 )
wdbc_data['diagnosis']=wdbc_data['diagnosis'].replace('B', 0)
y = wdbc_data['diagnosis']
X = wdbc_data.iloc[0:, 2:32]

2. تقسيم البيانات الى مجموعة تدريب (train) ومجموعة اختبار (test):

سوف نقوم في هذه الخطوة بتقسيم البيانات الى مجموعتين واحدة لتدريب النموذج والاخرى لاختباره لاحقاً، وذلك باستخدام الكود:

In:
from sklearn.model_selection import train_test_split
y_train,y_test,X_train,X_test = train_test_split(y,X,test_size = .2) 

3. تطبيق نموذج الانحدار اللوجستي:

في هذه الخطوة سوف نقوم بتطبيق النموذج على مجموعة التدريب من خلال الدوال التالية:

In:
from sklearn.linear_model import LogisticRegression
logist_model=LogisticRegression()
logist_model.fit(X_train,y_train)

يمكن الحصول على على قيم المعاملات (coefficients) بإستخدام الدالة:

In:
logist_model.coef_

حيث يجب تحديد المتغيرات المستقلة الهامة التي يجب ان تكون في النموذج واستبعاد الأخرى للوصول لأفضل نموذج يجب تطبيقه، كذلك من المهم التأكد من تحقق الفروض الخاصة بالانحدار اللوجستي، وكذلك التأكد من عدم وجود خطية متعددة (multicollinearity) او قيم متطرفة (outliers).

 4. التحقق من صحة النتائج (validation):

في هذه الخطوة سوف نقوم باستخدام مجموعة الاختبار للتحقق من دقة النموذج المستخدم وذلك من خلال:

  • مصفوفة الخطأ (confiusion matrix):

حيث يمكن استخدام الكود:

In:
from sklearn import metrics
from mlxtend.plotting import plot_confusion_matrix
y_pred=logist_model.predict(X_test)
cm = metrics.confusion_matrix(y_test, y_pred)
plot_confusion_matrix(cm)

والذي يعطي النتيجة التالية:

  • معدل الدقة (Accuracy) والإحكام (Precision) :

وذلك من خلال استخدام الدوال التالية:

In:
print("Accuracy:",metrics.accuracy_score(y_test, y_pred))
print("Precision:",metrics.precision_score(y_test, y_pred))
Out:
Accuracy: 0.96
Precision: 0.97

 

جميع الحقوق الفكرية لهذا المقال محفوظة © موقع د. عزيز، يمنع إعادة نشره في موقع آخر

مقالات ذات صلة:

  • مقدمة في البايثون Python

    بايثون هي لغة برمجة متعددة الأغراض، تعمل على عدد من المنصات مثل ويندوز (Windows) و ماك (Mac OS X) و لينوكس (Linux).... مقدمة في البايثون Python
    اقرأ المزيد
  • قراءة ملفات البيانات في بايثون Python

    في هذا المقال سوف نستعرض كيف يمكن قراءة ملفات البيانات بأنواعها المختلفة باستخدام لغة البرمجة بايثون. في البداية نحتاج... قراءة ملفات البيانات في بايثون Python
    اقرأ المزيد
  • دوال القائمة (list) في بايثون Python

    تعتبر القائمة (list) احد انواع هياكل البيانات شائعة الاستخدام في في لغة البرمجة بايثون والتي يمكن أن تحوي انواع مختلفة... دوال القائمة (list) في بايثون Python
    اقرأ المزيد

التعليقات 1

  1. Fahad Masood Reda بتاريخ يوليو 28, 2019 - 12:22 ص

    Nice and Short Article, Thanks Dr.Aziz

شارك بتعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *


The reCAPTCHA verification period has expired. Please reload the page.

د. عزيز عوض الله الجعيد
دكتوراه في الإحصاء، عالم بيانات، مبرمج، مهتم في التحليل المتقدم، والبيانات الضخمة والذكاء الاصطناعي، لمزيد من المعلومات أضغط هنا

  • YouTube
جميع الحقوق محفوظة © موقع د. عزيز