基于python实现机器学习的心脏病预测系统
以下是一个基于 Python 实现的简单心脏病预测系统代码示例,我们将使用 Scikit - learn 库中的机器学习算法(这里以逻辑回归为例),并使用公开的心脏病数据集。
步骤:
- 数据加载与预处理:加载心脏病数据集,对数据进行划分和标准化处理。
- 模型训练:使用逻辑回归算法训练模型。
- 模型评估:评估模型的性能。
- 预测:使用训练好的模型进行预测。
代码实现:
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, classification_report
# 1. 数据加载与预处理
# 从 CSV 文件中加载心脏病数据集
url = "https://archive.ics.uci.edu/ml/machine-learning-databases/heart-disease/processed.cleveland.data"
column_names = ['age', 'sex', 'cp', 'trestbps', 'chol', 'fbs', 'restecg', 'thalach',
'exang', 'oldpeak', 'slope', 'ca', 'thal', 'target']
data = pd.read_csv(url, names=column_names)
# 处理缺失值
data = data.replace('?', pd.NA)
data = data.dropna()
# 分离特征和目标变量
X = data.drop('target', axis=1)
y = data['target']
# 将目标变量转换为二进制(0 表示无心脏病,1 表示有心脏病)
y = y.apply(lambda x: 1 if x > 0 else 0)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 数据标准化
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
# 2. 模型训练
# 创建逻辑回归模型
model = LogisticRegression()
# 训练模型
model.fit(X_train_scaled, y_train)
# 3. 模型评估
# 在测试集上进行预测
y_pred = model.predict(X_test_scaled)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"模型准确率: {accuracy:.2f}")
# 打印分类报告
print("分类报告:")
print(classification_report(y_test, y_pred))
# 4. 预测示例
new_patient_data = [[63, 1, 3, 145, 233, 1, 0, 150, 0, 2.3, 0, 0, 1]]
# 对新数据进行标准化处理
new_patient_data_scaled = scaler.transform(new_patient_data)
# 进行预测
prediction = model.predict(new_patient_data_scaled)
if prediction[0] == 1:
print("预测结果: 有心脏病")
else:
print("预测结果: 无心脏病")
代码解释:
-
数据加载与预处理:
- 使用
pandas
库从 UCI 机器学习库中加载心脏病数据集。 - 处理缺失值,将
?
替换为NaN
并删除包含缺失值的行。 - 分离特征和目标变量,并将目标变量转换为二进制。
- 使用
train_test_split
函数将数据集划分为训练集和测试集。 - 使用
StandardScaler
对数据进行标准化处理。
- 使用
-
模型训练:
- 创建逻辑回归模型并使用训练集进行训练。
-
模型评估:
- 使用测试集进行预测,并计算准确率和分类报告。
-
预测示例:
- 提供一个新患者的数据,对其进行标准化处理并使用训练好的模型进行预测。
注意事项:
- 可以尝试使用其他机器学习算法(如决策树、随机森林等)来提高模型性能。
- 数据集可能需要进一步的特征工程和调优,以获得更好的预测结果。