📅  最后修改于: 2023-12-03 15:40:40.752000             🧑  作者: Mango
在医疗领域,如何准确地预测患者是否有心脏病是一个非常重要的问题。逻辑回归是一种分类算法,可以用于预测一个二元分类的结果,如心脏病的存在与否。在本文中,我们将使用逻辑回归来预测患者是否有心脏病。
我们将使用Heart Disease UCI 数据集,该数据集包含303个样本和14个特征。我们将使用其中13个特征来预测目标变量 - 心脏病。以下是该数据集的特征名称和描述:
最后一个特征,target
,是我们要预测的目标变量。它代表患者是否有心脏病(0 = 没有心脏病,1 = 有心脏病)。
在我们开始使用逻辑回归之前,我们需要对我们的数据进行一些预处理。我们将使用Python的pandas库来加载和处理数据。
import pandas as pd
# 从远程URL加载数据并分配列名
url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/heart-disease/processed.cleveland.data'
col_names = ['age', 'sex', 'cp', 'trestbps', 'chol', 'fbs', 'restecg', 'thalach', 'exang', 'oldpeak', 'slope', 'ca', 'thal', 'target']
heart_data = pd.read_csv(url, header=None, names=col_names)
# 删除具有缺失值的行
heart_data = heart_data.replace('?', pd.NA).dropna()
# 将目标变量从整数转换为二进制
heart_data['target'] = heart_data['target'].apply(lambda x: 0 if x == 0 else 1)
# 将分类变量转换为二进制
heart_data = pd.get_dummies(heart_data, columns=['cp', 'restecg', 'slope', 'thal'])
这里我们主要完成以下几个步骤:
我们已经预处理了数据并准备好将其提供给逻辑回归模型。让我们使用Python的scikit-learn库建立模型。
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
# 准备特征和目标数据
X = heart_data.drop('target', axis=1)
y = heart_data['target']
# 拆分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1)
# 建立逻辑回归模型
logreg = LogisticRegression(max_iter=1000)
logreg.fit(X_train, y_train)
# 预测测试集
y_pred = logreg.predict(X_test)
# 输出精确度
accuracy = accuracy_score(y_test, y_pred)
print('Accuracy:', accuracy)
这里我们主要完成以下几个步骤:
train_test_split
函数拆分数据集。在本文中,我们使用了逻辑回归算法来预测患者是否有心脏病。我们首先介绍了我们将要使用的数据集,并对其进行了预处理。然后,我们建立了一个逻辑回归模型,并使用测试集来评估其准确性。最后,我们输出了模型的精确度,并得出结论:逻辑回归可用于预测患者是否有心脏病。