1.项目背景
糖尿病是一种影响全球数百万人的慢性疾病,对公共健康构成重大威胁。准确预测糖尿病的发病风险对于早期干预和预防至关重要。通过机器学习模型分析影响糖尿病的主要因素,可以帮助医疗从业者更好地了解病因和风险因素,从而制定有效的预防和治疗策略。本项目通过可视化分析对数据进行初步探索,再通过斯皮尔曼相关性检验和卡方检验探究患糖尿病的影响因素,因为考虑到患高血压和患糖尿病有的显著性,使用结构方程构建了高血压引发糖尿病的模型和糖尿病引发高血压的模型,通过对比两个模型之间的拟合优度,得出究竟是哪个病症引发另一个病症,最后建立了随机森林模型,在不知道临床测量结果的前提下,去预测某人是否会患有糖尿病,并且研究了影响模型的重要特征,可以帮助医疗从业者进行早期干预和预防。
2.数据说明
| 字段名 | 说明 | 
|---|---|
| PatientID | 患者ID | 
| Age | 年龄(岁) | 
| Gender | 性别,0:男,1:女 | 
| Ethnicity | 种族,0:白种人,1:非裔美国人,2:亚洲人,3:其他 | 
| SocioeconomicStatus | 社会经济地位,0:低,1:中,2:高 | 
| EducationLevel | 教育水平,0:无,1:高中,2:学士学位,3:更高 | 
| BMI | 体质指数(体重(kg)/身高(m)^2) | 
| Smoking | 吸烟状况 | 
| AlcoholConsumption | 饮酒量 | 
| PhysicalActivity | 每周体育活动时间(分钟) | 
| DietQuality | 饮食质量 | 
| SleepQuality | 睡眠质量 | 
| FamilyHistoryDiabetes | 家族糖尿病史 | 
| GestationalDiabetes | 妊娠糖尿病 | 
| PolycysticOvarySyndrome | 多囊卵巢综合症 | 
| PreviousPreDiabetes | 既往糖尿病前期 | 
| Hypertension | 高血压 | 
| SystolicBP | 收缩压(mm Hg) | 
| DiastolicBP | 舒张压(mm Hg) | 
| FastingBloodSugar | 空腹血糖浓度 | 
| HbA1c | 糖化血红蛋白 | 
| SerumCreatinine | 血清肌酐 | 
| BUNLevels | 血尿素氮 | 
| CholesterolTotal | 总胆固醇水平 | 
| CholesterolLDL | 低密度脂蛋白胆固醇水平 | 
| CholesterolHDL | 高密度脂蛋白胆固醇水平 | 
| CholesterolTriglycerides | 甘油三酯 | 
| AntihypertensiveMedications | 降压药使用情况 | 
| Statins | 他汀类药物使用情况 | 
| AntidiabeticMedications | 降糖药物使用情况 | 
| FrequentUrination | 尿频 | 
| ExcessiveThirst | 过度口渴 | 
| UnexplainedWeightLoss | 不明原因的体重减轻 | 
| FatigueLevels | 疲劳水平 | 
| BlurredVision | 视力模糊 | 
| SlowHealingSores | 伤口愈合缓慢 | 
| TinglingHandsFeet | 手脚刺痛 | 
| QualityOfLifeScore | 生活质量评分 | 
| HeavyMetalsExposure | 重金属暴露情况 | 
| OccupationalExposureChemicals | 职业化学品暴露情况 | 
| WaterQuality | 水质是否存在污染 | 
| MedicalCheckupsFrequency | 定期体检频率 | 
| MedicationAdherence | 药物依从性 | 
| HealthLiteracy | 健康素养 | 
| Diagnosis | 糖尿病诊断(0=否,1=是) | 
| DoctorInCharge | 主管医生 | 
3.Python库导入及数据读取
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from scipy.stats import spearmanr
from scipy.stats import chi2_contingency
from semopy import Model, Optimizer, calc_stats
from sklearn.preprocessing import StandardScaler
from sklearn