هنا سوف نتحقق من الأعمار العشر وتهميتها.
الإستنباط: هنا يمكننا أن نرى أن العمود العمري 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 أنواع من آلام الصدر
- الوضع على الأقل
- حالة متعبة قليلاً
- مشكلة متوسطة الحالة
- حالة سيئة للغاية
تحليل 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 ويتم استخدامها وفقًا لتقدير المؤلف.