Python机器学习:糖尿病数据集分析与预测

文章目录

一、数据处理

1、加载数据集

        使用 pandas 加载本地 CSV 文件,展示数据的前5行、结构信息和描述性统计量,帮助理解数据特征的分布情况。

file_path = "E:\data.csv" 
data = pd.read_csv(file_path)
print("数据集前5行:\n", data.head())
print("\n数据集信息:\n")
data.info()
print("\n数据集描述统计:\n", data.describe())
2、数据清洗与处理

        删除对分析和模型无关的列(如 PatientIDDoctorInCharge 等)。检查并确认数据集中不存在缺失值。对数值列处理可能存在的无穷大或缺失值。

columns_to_drop = [
    'PatientID', 'DoctorInCharge', 'Smoking', 'AlcoholConsumption', 
    'PhysicalActivity', 'DietQuality', 'SleepQuality', 'HeavyMetalsExposure', 
    'OccupationalExposureChemicals', 'WaterQuality', 'MedicalCheckupsFrequency', 
    'MedicationAdherence', 'HealthLiteracy'
]
data.drop(columns=columns_to_drop, inplace=True)
print("\n数据集列名:\n", data.columns)
missing_values = data.isnull().sum()
print("\n缺失值统计:\n", missing_values[missing_values > 0])

二、数据可视化

1、年龄分布

通过直方图展示患者年龄的分布情况,结合核密度估计(KDE)分析数据分布的连续性。

2、性别分布

使用饼图展示数据集中男女比例情况,帮助快速了解性别构成。

3、健康指标与糖尿病诊断的关系

通过箱线图逐一比较关键健康特征(如 BMIFastingBloodSugar 等)在不同诊断结果(0=无糖尿病,1=有糖尿病)下的分布差异,揭示相关性。

4、相关性分析

计算数据集中所有特征的相关性矩阵,并通过热力图可视化,帮助识别对糖尿病诊断可能有重要影响的变量。

三、机器学习建模

1、数据集构建

特征与标签分离,剔除 Diagnosis 列作为标签,其他列作为特征。
划分训练集和测试集,比例为 80%:20%。
使用 StandardScaler 对特征进行标准化处理,确保模型收敛和性能稳定。

data.fillna(data.mean(), inplace=True)
X = data.drop(columns=['Diagnosis']) 
y = data['Diagnosis'] 
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
2、模型训练与评估
逻辑回归模型

使用逻辑回归对数据进行分类,通过分类报告、准确率和 ROC 曲线(AUC=0.87)评估模型性能。准确率为 84.57%。

随机森林模型

使用随机森林分类器进行训练,表现优于逻辑回归,准确率达 91.76%,AUC 提升至 0.94。

XGBoost模型

通过 XGBoost 分类器进一步优化,准确率提升至 92.82%,分类报告显示模型在精确度和召回率上都有优异表现,AUC 达到 0.96。

四、总结

        数据集经过清洗与特征选择后,构建了三种不同的机器学习模型:逻辑回归、随机森林和 XGBoost。三者性能依次提升,XGBoost 模型表现最佳。可视化手段有效帮助分析了年龄、性别分布以及关键健康指标与糖尿病诊断的关系。模型评估中,XGBoost 在精度、召回率、F1 分数和 ROC 曲线表现上均优于其他模型,适合用于此类医学诊断任务。

猜你喜欢

转载自blog.csdn.net/weixin_62375676/article/details/144803897
今日推荐