随机森林算法实现冠心病疾病预测

一、冠心病

诊断:心脏病的诊断是根据临床症状和检查结果进行的。检查的类型将根据医生的判断进行选择,包括心电图、心脏计算机断层扫描(CT)、血液检查和运动压力测试。
通过查阅心脏病危险因素的信息,发现了以下因素:高胆固醇、高血压、糖尿病、体重、家族史和吸烟。另一种说法认为,无法改变的主要因素是:年龄增长、男性性别和遗传。地中海贫血,这个数据集中的一个变量,是遗传的。可以改变的主要因素有:吸烟、高胆固醇、高血压、缺乏运动、超重和患有糖尿病。其他因素包括压力、酒精和不良的饮食/营养。

二、代码实现

导入了各种Python库,包括用于数据处理(numpy, pandas)、数据可视化(matplotlib, seaborn)、机器学习模型(RandomForestClassifier, DecisionTreeClassifier)、模型评估(roc_curve, auc, classification_report, confusion_matrix)、特征重要性分析(eli5, shap)以及偏部分依赖图(pdpbox)等。主要用于数据分析和机器学习模型的构建与评估

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

import seaborn as sns 

from sklearn.ensemble import RandomForestClassifier

from sklearn.tree import DecisionTreeClassifier

from sklearn.tree import export_graphviz 

from sklearn.metrics import roc_curve, auc  

from sklearn.metrics import classification_report 

from sklearn.metrics import confusion_matrix

from sklearn.model_selection import train_test_split #for data splitting

import eli5 #for purmutation importance

from eli5.sklearn import PermutationImportance

import shap #for SHAP values

from pdpbox import pdp, info_plots #for partial plots

np.random.seed(123)   #设置随机种子,以确保结果的可重现性

pd.options.mode.chained_assignment = None  #hide any pandas warnings  #隐藏Pandas警告,在数据操作过程中避免产生不必要的提示信息

导入数据

dt = pd.read_csv("C:\Users\pc\PycharmProjects\cornary artery\heart.csv")

数据讲解
age:人的年龄
sex:这个人的性别(1 =男性,0=女性)
cp:所经历的胸痛(值1:典型心绞痛,值2:非典型心绞痛,值3:非心绞痛,值4:无症状)trestbps:患者入院时的静息血压(mm Hg) chol:患者的胆固醇测量值(mg/dl)
fbs:人的空腹血糖(> 120mg /dl, 1 = true;0 = false)
restecg:静息心电图测量(0 =正常,1 =有ST-T波异常,2 =根据Estes标准可能或明确显示左心室肥厚)thalach:人的最大心率达到异常:运动引起的心绞痛(1 =是;0 = no)
oldpeak:运动相对于休息引起的ST降低(ST与心电图图上的位置有关)。斜率:峰值运动ST段的斜率(值1:向上倾斜,值2:平坦,值3:向下倾斜)ca:主要血管的数量(0-3)
thal:一种叫做地中海贫血的血液疾病(3 =正常;6 =固定缺陷;7 =可逆性缺陷)目标:心脏病(0 =否,1 =是)

dt.columns = ['age', 'sex', 'chest_pain_type', 'resting_blood_pressure', 'cholesterol', 'fasting_blood_sugar', 'rest_ecg', 'max_heart_rate_achieved',

       'exercise_induced_angina', 'st_depression', 'st_slope', 'num_major_vessels', 'thalassemia', 'target']

下面代码片段主要是针对数据集中的某些列进行了值的转换和替换,使得这些列中的数值更易于理解和分析。通常情况下,这种操作用于将数值型的分类变量转换为对应的文本标签,以便在数据分析和可视化过程中能够更直观地理解数据含义。

dt['sex'][dt['sex'] == 0] = 'female'

dt['sex'][dt['sex'] == 1] = 'male'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值