文章目录
一、数据处理
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、数据清洗与处理
删除对分析和模型无关的列(如 PatientID
和 DoctorInCharge
等)。检查并确认数据集中不存在缺失值。对数值列处理可能存在的无穷大或缺失值。
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、健康指标与糖尿病诊断的关系
通过箱线图逐一比较关键健康特征(如 BMI
、FastingBloodSugar
等)在不同诊断结果(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 曲线表现上均优于其他模型,适合用于此类医学诊断任务。
标签:机器,Python,data,模型,XGBoost,糖尿病,test,数据,columns From: https://blog.csdn.net/weixin_62375676/article/details/144803897