文章目录
前言
心血管疾病是当前全球范围内的重大公共健康问题,其发病率和相关死亡率居高不下。随着生活方式的改变、环境因素的影响以及人口老龄化的加剧,心血管疾病的发病趋势愈加严峻。本文将通过机器学习算法构建预测心血管疾病的模型
一、数据收集
id 账号
Age | Objective Feature | 年龄 以天为单位
Height | Objective Feature | height | int (cm) 身高
Weight | Objective Feature | weight | float (kg) |体重
Gender | Objective Feature | gender | categorical code |性别
Systolic blood pressure | Examination Feature | ap_hi | int |收缩压
Diastolic blood pressure | Examination Feature | ap_lo | int |舒张压
Cholesterol | Examination Feature | cholesterol | 1: normal, 2: above normal, 3: well above normal |胆固醇是否正常
Glucose | Examination Feature | gluc | 1: normal, 2: above normal, 3: well above normal |葡萄糖检测是否正常
Smoking | Subjective Feature | smoke | binary 是否吸烟
Alcohol intake | Subjective Feature | alco | binary |酒精摄入
Physical activity | Subjective Feature | active | binary |体力活动
Presence or absence of cardiovascular disease | Target Variable | cardio | binary |是否患有心血管疾病
二、模型构建
1.引入库
代码如下(示例):
import warnings
warnings.filterwarnings('ignore')
import numpy as np
import pandas as pd
from sklearn import metrics, preprocessing
from sklearn.model_selection import train_test_split, cross_val_score, GridSearchCV
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier
from sklearn.neural_network import MLPClassifier
from sklearn.svm import SVC
from sklearn.metrics import classification_report
from sklearn.preprocessing import LabelEncoder
import matplotlib.pyplot as plt
import seaborn as sns
2.数据导入加载
首先加载数据集,并对数据进行基本的探索性分析,包括查看数据的基本信息、统计摘要、特征分布等。
代码如下(示例):
d = pd.read_csv('D:/Anconda/xinxueguan1.csv')
d.head()
d.info()
print(d.isnull().sum())
-
import语句导入需要的库和模块。 使用pd.read_csv()载入数据集。
-
d.head()和d.info()用于查看数据的前几行和基本信息(列数、非空值等)。
-
d.isnull().sum()检查并打印出每列的缺失值数量。
3.数据清洗
在检查数据并剔除其中包含的错误、重复或无效数据,以提高数据质量。
代码如下(示例):
d.drop(d[(d['height'] > d['height'].quantile(0.975)) | (d['height'] < d['height'].quantile(0.025))].index,inplace=True)
d.drop(d[(d['weight'] > d['weight'].quantile(0.975)) | (d['weight'] < d['weight'].quantile(0.025))].index,inplace=True)
d.drop(d[(d