شعار زيفيرنت

التنبؤ بأمراض القلب باستخدام التعلم الآلي

التاريخ:

هنا سوف نتحقق من الأعمار العشر وتهميتها.

الإستنباط:  هنا يمكننا أن نرى أن العمود العمري 58 يحتوي على أعلى تردد.

دعنا نتحقق من نطاق العمر في مجموعة البيانات.

الحد الأدنى للعمر: 29 العمر الأقصى: 77 متوسط ​​العمر: 54.366336633663366

يجب أن نقسم ميزة Age إلى ثلاثة أجزاء - "شاب" و "وسط" و "شيخ"

يونغ = البيانات [(data.age> = 29) & (data.age <40)] الأوسط = البيانات [(data.age> = 40) & (data.age <55)] Elder = data [(data.age > 55)] plt.figure (figsize = (23,10،1.5)) sns.set_context ('notebook'، font_scale = XNUMX) sns.barplot (x = ["الأعمار الصغيرة" ، "الأعمار المتوسطة" ، "الأعمار المسنة"] ، y = [len (Young)، len (Middle)، len (Elder)]) plt.tight_layout ()

الإخراج:

التنبؤ بأمراض القلب

الإستنباط: هنا يمكننا أن نرى أن كبار السن هم الأكثر تضررا من أمراض القلب والشباب هم الأقل تضررا.

لإثبات الاستدلال أعلاه سنقوم برسم المخطط الدائري.

الألوان = ['أزرق' ، 'أخضر' ، 'أصفر'] تنفجر = [0,0,0.1،10,10،1.2] شكل plt (حجم الصورة = (1.1،XNUMX)) sns.set_context ('دفتر ملاحظات ، font_scale = XNUMX) plt. فطيرة ([لين (يونغ) ، لين (وسط) ، لين (إلدر)] ، ملصقات = ["الأعمار الصغيرة" ، "الأعمار المتوسطة" ، "الأعمار المسنة"] ، تنفجر = تنفجر ، الألوان = ألوان ، تلقائي = '٪ XNUMXf ٪٪ ') plt.tight_layout ()

الإخراج:

الإخراج | التنبؤ بأمراض القلب

الجنس ("الجنس") تحليل السمات

plt.figure (figsize = (18,9،1.5)) sns.set_context ('دفتر ملاحظات ، font_scale = XNUMX) sns.countplot (بيانات [' جنس ']) plt.tight_layout ()

الإخراج:

تحليل السمات الجنسية | التنبؤ بأمراض القلب

الإستنباط: من الواضح هنا أن ، نسبة الذكور إلى الإناث حوالي 2: 1.

الآن دعونا نرسم العلاقة بين الجنس والميل.

plt.figure (figsize = (18,9،1.5)) sns.set_context ('notebook'، font_scale = XNUMX) sns.countplot (data ['sex']، hue = data ["slope"]) plt.tight_layout ()

الإخراج:

مخرجات تحليل الجنس

الإستنباط: من الواضح هنا أن قيمة المنحدر أعلى في حالة الذكور (1).

تحليل نوع آلام الصدر

plt.figure (figsize = (18,9،1.5)) sns.set_context ('دفتر ملاحظات ، font_scale = XNUMX) sns.countplot (بيانات [' cp ']) plt.tight_layout ()

الإخراج:

 

ألم في الصدر

الإستنباط: كما رأينا ، هناك 4 أنواع من آلام الصدر

  1. الوضع على الأقل
  2. حالة متعبة قليلاً
  3. مشكلة متوسطة الحالة
  4. حالة سيئة للغاية

تحليل cp مقابل عمود الهدف

التنبؤ بأمراض القلب

الاستدلال: من الرسم البياني أعلاه يمكننا عمل بعض الاستدلالات ،

  • الأشخاص الذين يعانون من ألم في الصدر أقل عرضة للإصابة بأمراض القلب.
  • من المحتمل أن يُصاب الأشخاص الذين يعانون من ألم شديد في الصدر بأمراض القلب.

من المرجح أن يعاني كبار السن من ألم في الصدر.

تحليل ثال

plt.figure (figsize = (18,9،1.5)) sns.set_context ('دفتر ملاحظات ، font_scale = XNUMX) sns.countplot (بيانات [' thal ']) plt.tight_layout ()

الإخراج:

تحليل ثال

الهدف

plt.figure (figsize = (18,9،1.5)) sns.set_context ('دفتر ملاحظات ، font_scale = XNUMX) sns.countplot (بيانات [' الهدف ']) plt.tight_layout ()

الإخراج:

الهدف | التنبؤ بأمراض القلب

الإستنباط: النسبة بين 1 و 0 أقل بكثير من 1.5 مما يشير إلى أن ميزة الهدف غير متوازنة. لذلك بالنسبة لمجموعة البيانات المتوازنة ، يمكننا استخدام دقة الدرجات كمقاييس تقييم لنموذجنا.

هندسة الميزات

سنرى الآن الوصف الكامل للبيانات المستمرة بالإضافة إلى البيانات الفئوية

categorical_val = [] Continous_val = [] للعمود في data.columns: print ("--------------------") print (f "{column}: {data [عمود] .unique ()} ") إذا كان len (البيانات [عمود] .unique ()) <= 10: categorical_val.append (عمود) else: CONTENTous_val.append (عمود)

الإخراج:

مخرجات هندسة السمات | التنبؤ بأمراض القلب

الآن نحن هنا أولاً ستقوم بإزالة العمود الهدف من مجموعة الميزات الخاصة بنا ثم سنقوم بتصنيف جميع المتغيرات الفئوية باستخدام طريقة get dummies التي ستنشئ عمودًا منفصلاً لكل فئة ، افترض أن متغير X يحتوي على نوعين من القيم الفريدة ، ثم سينشئ عمودين مختلفين للمتغير X.

categorical_val.remove ('الهدف') dfs = pd.get_dummies (بيانات ، أعمدة = categorical_val) dfs.head (6)

الإخراج:

الإخراج | التنبؤ بأمراض القلب

الآن سنستخدم طريقة قشارة قياسية لتقليل حجم البيانات بحيث لا ترفع القيم المتطرفة أيضًا ، تؤدي مجموعة البيانات التي يتم تحجيمها إلى وحدات عامة إلى الحصول على دقة أفضل.

sc = StandardScaler () col_to_scale = ['age'، 'trestbps'، 'chol'، 'thalach'، 'oldpeak'] dfs [col_to_scale] = sc.fit_transform (dfs [col_to_scale]) dfs.head (6)

الإخراج:

الإخراج | التنبؤ بأمراض القلب

تصميم

تقسيم مجموعة البيانات الخاصة بنا

X = dfs.drop ('الهدف' ، المحور = 1) y = dfs.target X_train ، X_test ، y_train ، y_test = train_test_split (X ، y ، test_size = 0.3 ، random_state = 42)

خوارزمية تعلم الآلة KNN

knn = KNeighboursClassifier (n_neighbours = 10) knn.fit (X_train ، y_train) y_pred1 = knn.predict (X_test) print (دقة_تسجيل (y_test ، y_pred1))

الإخراج:

0.8571428571428571

1. قمنا بعمل تصور للبيانات وتحليل بيانات المتغير المستهدف ، وميزات العمر ، وما إلى ذلك إلى جانب التحليل أحادي المتغير والتحليل ثنائي المتغير.

2. قمنا أيضًا بجزء هندسي كامل للميزات في هذه المقالة والذي يستدعي جميع الخطوات الصحيحة اللازمة لمزيد من الخطوات ، مثل
بناء نموذج.

3. من دقة النموذج أعلاه ، KNN تعطينا الدقة التي تبلغ 89٪.

التعليقات الختامية

ها هو الريبو الصفحة لهذه المقالة. آمل أن تكون مقالتي قد أعجبت به عن الكشف عن أمراض القلب باستخدام ML. إذا كان لديك أي آراء أو أسئلة ، فقم بالتعليق أدناه.

اقرأ على AV المدونة حول التنبؤات المختلفة باستخدام التعلم الآلي.

عني

تحياتي للجميع، أنا أعمل حاليا in TCS وقبل ذلك ، عملت كمحلل لعلوم البيانات in زوربا للاستشارات الهند. إلى جانب العمل بدوام كامل ، لدي اهتمام كبير في نفس المجال ، أي علم البيانات ، إلى جانب مجموعات فرعية أخرى من الذكاء الاصطناعي مثل رؤية الكمبيوتر ، والتعلم الآلي ، والتعلم العميق. لا تتردد في التعاون معي في أي مشروع في المجالات المذكورة أعلاه (لينكدين:).

آمل أن تكون مقالتي عن التنبؤ بأمراض القلب قد أعجبك؟ يمكنك الوصول إلى مقالاتي الأخرى المنشورة على Analytics Vidhya كجزء من Blogathon الصفحة .

الوسائط الموضحة في هذه المقالة ليست مملوكة لشركة Analytics Vidhya ويتم استخدامها وفقًا لتقدير المؤلف. 

بقعة_صورة

أحدث المعلومات الاستخباراتية

بقعة_صورة