心脏病预测:机器学习在医疗领域的应用

在当今的医疗领域,机器学习技术的应用正变得越来越重要。本文将探讨如何利用机器学习对心脏病数据集进行分析和预测,以期提高医疗诊断的效率和准确性。通过分析UCI在线存储库中的心脏病数据集,能够预测患者是否患有心脏病,从而为医生提供快速的诊断支持。

目录

  • 概述
  • 导入库
  • 从CSV文件读取数据
  • 数据分析
  • 相关性矩阵
  • 训练-测试分割
  • 算法实现
  • 最终模型实现
  • 结论
  • 常见问题解答

导入库

import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import warnings from sklearn.model_selection import KFold, StratifiedKFold, cross_val_score from sklearn import linear_model, tree, ensemble

从CSV文件读取数据

在本节中,将加载并查看CSV文件及其内容。数据集来源于UCI在线存储库,包含14个属性/特征,包括目标变量,如年龄、性别、胆固醇水平等。

dataframe = pd.read_csv("/content/heart.csv") dataframe.head(10)

从数据集中,可以看到连续型、序数型和二进制型三种数据类型。

数据分析

让获取一些关于数据集的基本信息。

dataframe.info() dataframe.isna().sum()

从输出中,数据不包含空值和重复值,因此数据是好的,可以进一步分析。

相关性矩阵

通过可视化数据特征来发现它们之间的相关性,从而推断出重要特征。

plt.figure(figsize=(15,10)) sns.heatmap(dataframe.corr(), linewidth=.01, annot=True, cmap="winter") plt.show() plt.savefig('correlationfigure')

从上面的热图中,可以了解到胸痛(cp)和目标之间存在正相关。这意味着胸痛风险较大的患者更有可能患有心脏病。除了胸痛,thalach、slope和resting与目标之间也存在正相关。

训练-测试分割

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=40)

将整个数据集分成训练集和测试集,其中包含75%的训练集和25%的测试集。可以将训练集用于分类器训练模型,测试集用于通过不同分类器预测模型的性能。

算法实现

# 逻辑回归 from sklearn.model_selection import cross_val_score, GridSearchCV from sklearn.linear_model import LogisticRegression lr = LogisticRegression(C=1.0, class_weight='balanced', dual=False, fit_intercept=True, intercept_scaling=1, l1_ratio=None, max_iter=100, multi_class='auto', n_jobs=None, penalty='l2', random_state=1234, solver='lbfgs', tol=0.0001, verbose=0, warm_start=False) model1 = lr.fit(X_train, y_train) prediction1 = model1.predict(X_test) from sklearn.metrics import confusion_matrix cm = confusion_matrix(y_test, prediction1) cm
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485