首页 > 其他分享 >基于机器学习的阿尔兹海默症智能分析预测系统

基于机器学习的阿尔兹海默症智能分析预测系统

时间:2024-09-05 23:25:54浏览次数:7  
标签:阿尔兹 auc 海默症 得分 智能 train valid

温馨提示:文末有 CSDN 平台官方提供的学长 QQ 名片 :) 

1. 项目简介

        阿尔兹海默症(Alzheimer's Disease, AD)是一种常见的神经退行性疾病,主要影响老年人的认知功能。随着全球人口老龄化的加剧,阿尔兹海默症的患病率逐年上升,对社会和个人健康造成了巨大的负担。因此,开发一种能够有效预测和辅助诊断阿尔兹海默症的智能系统具有重要意义。本项目旨在利用机器学习技术,结合临床数据和生物标志物,通过 XGBoost 机器学习模型来预测阿尔兹海默症发病风险,测试集预测 AUC 达到 97.9%,并利用 Flask、Bootstrap、Ajax 构建一个智能分析预测系统,以期在早期阶段识别阿尔兹海默症患者,为临床治疗提供支持。

<iframe allowfullscreen="true" data-mediaembed="bilibili" frameborder="0" id="ypk77Yaa-1725549408866" src="https://player.bilibili.com/player.html?aid=113085599777805"></iframe>

基于机器学习的阿尔兹海默症智能分析预测系统

2. 数据探索式可视化分析

        为了更好地理解数据分布和特征之间的关系,我们首先进行了数据探索式的可视化分析。这一步骤对于发现异常值、理解数据分布以及发现潜在的模式至关重要。

        关键技术点:

  • Pandas: 用于数据处理和清洗。
  • Matplotlib: 绘制基本图表。
  • Seaborn: 进行更复杂的统计图形绘制。
  • 柱状图和饼状图: 直观展示类别数据和比例数据。

2.1 数据集读取与预处理

        该数据集是2149名被诊断患有阿尔茨海默病或有阿尔茨海默病风险的患者的健康记录的综合集合。数据集中的每个患者都有一个唯一的ID号,范围从4751到6900。该数据集涵盖了广泛的信息,这些信息对于理解与阿尔茨海默病相关的各种因素至关重要。它包括人口统计细节、生活习惯、病史、临床测量、认知和功能评估、症状和诊断信息。

English Field NameChinese DescriptionValue Range / Meaning
Age年龄60至90岁
Gender性别0=男性,1=女性
Ethnicity种族高加索人、非裔美国人、亚洲人、其他
Education Level教育水平无到高等教育
Body Mass Index (BMI)身体质量指数(BMI)15至40
Smoking Status吸烟状况1=吸烟,0=不吸烟
Alcohol Consumption酒精摄入量0至20单位
Physical Activity体育活动时间0至10小时
Diet Quality饮食质量评分0至10分
Sleep Quality睡眠质量评分4至10分
Family History of Alzheimer's家族阿尔茨海默病史1=有,0=没有
Cardiovascular Disease心血管疾病有/无
Diabetes糖尿病有/无
Depression抑郁症史有/无
Head Injury头部受伤有/无
Hypertension高血压有/无
Systolic Blood Pressure收缩压90-180 mmHg
Diastolic Blood Pressure舒张压60-120 mmHg
Total Cholesterol胆固醇总量150-300 mg/dL
LDL Cholesterol低密度脂蛋白胆固醇(LDL)50-200 mg/dL
HDL Cholesterol高密度脂蛋白胆固醇(HDL)20-100 mg/dL
Triglycerides甘油三酯50-400 mg/dL
Mini-Mental State Examination (MMSE) Score简易精神状态检查(MMSE)得分0至30分,分数越低表示认知功能障碍越严重
Functional Assessment Score功能评估得分0至10分,分数越低表示功能障碍越严重
Memory Complaints记忆抱怨1=有,0=没有
Behavioral Problems行为问题有/无
Activities of Daily Living (ADL) Score日常生活活动(ADL)得分0至10分,分数越低表示日常活动能力受损越严重
Confusion and Disorientation混乱与定向障碍有/无
Personality Changes人格变化有/无
Difficulty Completing Tasks完成任务困难有/无
Forgetfulness健忘有/无
Alzheimer's Diagnosis Status阿尔茨海默病诊断状态1=确诊,0=未确诊
Doctor in Charge主诊医生保护患者隐私的信息占位符
df = pd.read_csv("./alzheimers_disease_patient_data.csv")

## 列名汉化 
df.rename(columns={ "Age": "年龄", "Gender": "性别", "Ethnicity": "种族", "EducationLevel": "教育水平", "BMI": "身体质量指数(BMI)", "Smoking": "吸烟状况", "AlcoholConsumption": "酒精摄入量", "PhysicalActivity": "体育活动时间", "DietQuality": "饮食质量评分", "SleepQuality": "睡眠质量评分", "FamilyHistoryAlzheimers": "家族阿尔茨海默病史", "CardiovascularDisease": "心血管疾病", "Diabetes": "糖尿病", "Depression": "抑郁症史", "HeadInjury": "头部受伤", "Hypertension": "高血压", "SystolicBP": "收缩压", "DiastolicBP": "舒张压", "CholesterolTotal": "胆固醇总量", "CholesterolLDL": "低密度脂蛋白胆固醇(LDL)", "CholesterolHDL": "高密度脂蛋白胆固醇(HDL)", "CholesterolTriglycerides": "甘油三酯", "MMSE": "简易精神状态检查(MMSE)得分", "FunctionalAssessment": "功能评估得分", "MemoryComplaints": "记忆抱怨", "BehavioralProblems": "行为问题", "ADL": "日常生活活动(ADL)得分", "Confusion": "混乱与定向障碍", "Disorientation": "迷失方向", "PersonalityChanges": "人格变化", "DifficultyCompletingTasks": "完成任务困难", "Forgetfulness": "健忘", "Diagnosis": "诊断状态", "DoctorInCharge": "主诊医生" },inplace=True)

df.info()

 2.2 类别标签数量分布

tmp = df["诊断状态"].value_counts().to_frame().reset_index().rename(columns={"count":"数量"})

tmp["诊断状态"] = tmp["诊断状态"].map(lambda x:"是" if x == 1 else "否")
tmp["百分比"] = tmp["数量"].map(lambda x:round(x/tmp["数量"].sum()*100,2))

labels,values,percent = tmp["诊断状态"].tolist(),tmp["数量"].tolist(),tmp["百分比"].tolist()

        可以看出,诊断为阿尔兹海默症的患者占 35.37%,这是一个类别不均衡的二分类问题,需要采用采样算法去平衡数据集的占比。

2.3 特征与目标的相关性分析

fig,ax = plt.subplots(1,1,figsize=(20, 16))
cmap = sns.diverging_palette(230, 20, as_cmap=True)
sns.heatmap(df.corr(), annot= True, cmap=cmap, vmax=.5, center=0,
            square=True, linewidths=.5, cbar_kws={"shrink": .5})
ax.set_xticklabels(labels=df.columns, rotation=90, fontsize=12)
ax.set_yticklabels(labels=df.columns, rotation=00, fontsize=12)
plt.show()

        可以看出:与诊断为阿尔兹海默症的相关性较高的特征有:MMSE、功能评估得分、记忆抱怨、行为问题、ADL得分等,其中ADL得分、MMSE得分、功能性评估得分呈现较强负相关,另外2个呈现较强的正相关。

 2.4 阿尔兹海默症患病与年龄分布

        可以看出,阿尔茨海默症的发病风险随年龄增长而增加,尤其是在70岁及以上的人群中更为突出。60岁以上的老年人更容易受到阿尔茨海默症的影响,尤其是70岁及以上的老年人。虽然总人口中大多数人在没有阿尔茨海默症的情况下,但是随着年龄的增长,患病比例也在逐步提高。

2.5 阿尔兹海默症患病与性别分布

        从这两张饼图来看,似乎并没有明显的性别差异导致阿尔茨海默症的风险高低。男性和女性在患病率上的差异并不显著。

2.6 阿尔兹海默症患病与种族分布

        可以看出,高加索人是阿尔茨海默症的主要受影响群体,其次是非裔美国人,再次是亚洲人,最低的是其他人。

2.7 阿尔兹海默症患病与功能评估得分分布

plt.figure(figsize=(12, 8))
sns.violinplot(x='诊断状态', y='功能评估得分', data=df)
plt.title('功能评估得分与患阿尔兹海默症的相关性分布', fontsize=20)
plt.xlabel('诊断状态', fontsize=16)
plt.ylabel('功能评估得分', fontsize=16)
plt.show()

        小提琴图是一种用于展示连续变量分组分布的统计图形,它结合了箱线图和密度图的特点,能够清晰地展现各个组别内数据的分布情况和频率。功能评估得分与阿尔茨海默症的诊断状态有关联,未患阿尔茨海默症的人群通常得分较高且分布较为集中,而患有阿尔茨海默症的人群得分较低且分布较分散。这也符合预期,因为功能评估得分通常反映个体的能力和表现,较高的得分可能意味着较好的认知能力和身体机能,反之亦然。

2.8 阿尔兹海默症患病与日常生活活动(ADL)得分分布

        从这些重要特征的分布可以看出:简易精神状态检查(MMSE)得分、记忆抱怨、日常生活活动(ADL)得分,对于是否患阿尔兹海默症,具有较明显的分布区分性,这将会为模型提供很好的特征值。

3. 样本采样均衡与扩充处理

        在处理不平衡的数据集时,数据集扩充技术显得尤为重要。不平衡数据集是指目标变量的各类别之间存在显著数量差异的数据集,在这种情况下,模型可能会偏向于多数类,导致少数类别的预测性能较差。为了解决这个问题,我们可以使用imbalanced-learn库中的两种常用方法:过采样和欠采样。

        (1)过采样 (RandomOverSampler)

        过采样是指增加少数类样本的数量,通常通过复制现有的样本或合成新的样本实现。RandomOverSampler是一种简单直接的方法,它随机重复少数类样本以平衡数据集。

        (2)欠采样 (RandomUnderSampler)

        欠采样是指减少多数类样本的数量,以平衡各类别之间的比例。RandomUnderSampler同样是一个简单直接的方法,它随机选择多数类样本的一部分,使多数类与少数类的数量相同。

        (3)结合使用过采样和欠采样

        在某些情况下,同时使用过采样和欠采样的方法可以达到更好的效果。例如,先使用RandomUnderSampler减少多数类样本的数量,然后再使用RandomOverSampler增加少数类样本的数量。

# Separate features and target variable
X = df.drop(columns=['诊断状态'])
y = df['诊断状态']

# Count the occurrences of each class
class_counts = y.value_counts()

# Calculate the target count for each class
target_count = min(class_counts)

# 此处省略部分关键代码
# ....

# Apply resampling
# 此处省略部分关键代码
# ....

print('X_over:', X_over.shape)
X_resampled, y_resampled = under_sampler.fit_resample(X_over, y_over)
print('X_resampled:', X_resampled.shape)

# Concat
df_resampled = pd.concat([pd.DataFrame(X_resampled, columns=X.columns), pd.DataFrame(y_resampled, columns=['诊断状态'])], axis=1)
df_resampled.shape

4. 基于机器学习的阿尔兹海默症患病预测建模

        在完成数据预处理之后,我们采用XGBoost算法构建了预测模型。XGBoost是一种高效的梯度提升框架,适用于大规模数据集。

        关键技术点:

  • XGBoost: 构建模型。
  • 模型训练: 使用训练数据集训练模型。
  • 特征重要性: 评估模型中各个特征的重要性。
  • AUC评估: 通过计算模型的曲线下面积(Area Under the Curve, AUC)来评估模型性能。
  • ROC曲线: 绘制接收者操作特性(Receiver Operating Characteristic, ROC)曲线。
  • 混淆矩阵: 计算分类结果的准确性和其他指标。

4.1 多模型预测性能对比初探

        利用切分的数据集对 "Ada Boost", "Gradient Boosting", "Logistic Regression", "Support Vector Machine", "XGBoost" 6个基础模型进行了初步试探,选择默认参数最后的模型,以后续进行针对性的优化:

4.2 Xgboost 模型继续优化

df_columns = X_train.columns.values
print('===> feature count: {}'.format(len(df_columns)))

xgb_params = {
    'eta': 0.1,
    'colsample_bytree': 0.4,
    'max_depth': 8,
    'lambda': 2.0,
    'eval_metric': 'auc',
    'objective': 'binary:logistic',
    'nthread': -1,
    'silent': 1,
    'booster': 'gbtree'
}

dtrain = xgb.DMatrix(X_train, y_train, feature_names=df_columns)
dvalid = xgb.DMatrix(X_valid, y_valid, feature_names=df_columns)

watchlist = [(dtrain, 'train'), (dvalid, 'valid')]

        利用验证集的预测指标,去优化 eta、lambda 等参数,得到最优参数组合,利用最优参数进行模型训练:

model = xgb.train(dict(xgb_params),
                      dtrain,
                      evals=watchlist,
                      verbose_eval=10,
                      early_stopping_rounds=100,
                      num_boost_round=4000)

         训练日志:

[0]	train-auc:0.84304	valid-auc:0.75025
[10]	train-auc:0.99302	valid-auc:0.97291
[20]	train-auc:0.99644	valid-auc:0.98094
[30]	train-auc:0.99884	valid-auc:0.98591
[40]	train-auc:0.99925	valid-auc:0.98565
[50]	train-auc:0.99980	valid-auc:0.98726
......
[310]	train-auc:1.00000	valid-auc:0.99140
[320]	train-auc:1.00000	valid-auc:0.99135
[330]	train-auc:1.00000	valid-auc:0.99150
[340]	train-auc:1.00000	valid-auc:0.99150
[350]	train-auc:1.00000	valid-auc:0.99150
[356]	train-auc:1.00000	valid-auc:0.99135

4.3 特征重要程度情况

        可以看出,最重要的几个特征分别是BMI、酒精摄入量、饮食质量评分、ADL得分、HDL、LDL、收缩压、MIMSE得分、年龄、舒张压、记忆衰退等。

4.4 模型性能评估

4.4.1 AUC 指标评估

# predict train
predict_train = model.predict(dtrain)
train_auc = evaluate_score(predict_train, y_train)

# predict validate
predict_valid = model.predict(dvalid)
valid_auc = evaluate_score(predict_valid, y_valid)

# predict test
dtest = xgb.DMatrix(X_test, feature_names=df_columns)
predict_test = model.predict(dtest)
test_auc = evaluate_score(predict_test, y_test)

print('训练集 auc = {:.7f} , 验证集 auc = {:.7f} , 测试集 auc = {:.7f}\n'.format(train_auc, valid_auc, test_auc))
训练集 auc = 1.0000000 , 验证集 auc = 0.9914012 , 测试集 auc = 0.9797993

4.4.2 测试集预测 ROC 曲线

4.4.3 测试集预测结果混淆矩阵计算

5. 基于机器学习的阿尔兹海默症智能分析预测系统

5.1 系统首页

5.2 阿尔兹海默症在线检测

6. 结论

        本项目旨在利用机器学习技术,结合临床数据和生物标志物,通过 XGBoost 机器学习模型来预测阿尔兹海默症发病风险,测试集预测 AUC 达到 97.9%,并利用 Flask、Bootstrap、Ajax 构建一个智能分析预测系统,以期在早期阶段识别阿尔兹海默症患者,为临床治疗提供支持。

 欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。技术交流、源码获取认准下方 CSDN 官方提供的师姐 QQ 名片 :)

精彩专栏推荐订阅:

1. Python数据挖掘精品实战案例

2. 计算机视觉 CV 精品实战案例

3. 自然语言处理 NLP 精品实战案例

标签:阿尔兹,auc,海默症,得分,智能,train,valid
From: https://blog.csdn.net/andrew_extra/article/details/141941961

相关文章

  • 构建STM32智能平衡车项目:PID控制算法与蓝牙通信技术
    一、项目概述项目目标和用途本项目旨在设计和实现一款基于STM32单片机的平衡车。平衡车是一种新型的个人交通工具,广泛应用于短途出行、休闲娱乐等场景。通过本项目,我们希望能够实现一款具备良好稳定性和操控性的平衡车,能够在不同的地形上自如行驶。解决的问题和带来的价......
  • 人工智能基础入门:从理论到实践
    大家好,今天给大家介绍人工智能基础入门:从理论到实践,文章末尾附有分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!可进群免费领取。人工智能基础入门:从理论到实践在21世纪的科技浪潮中,人工智能(ArtificialIntelligence,AI)无疑是最为耀眼的明星......
  • Python编程基础与人工智能实战
    大家好,今天给大家介绍Python编程基础与人工智能实战,文章末尾附有分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!可进群免费领取。Python编程基础与人工智能实战在人工智能(AI)的广阔领域中,Python作为一门高效、易学的编程语言,凭借其丰富的库和框......
  • 探索无限知识,儿童百科全书智能体点亮孩子的智慧之旅
    本文由ChatMoney团队出品介绍说明在孩子充满好奇与探索欲望的成长道路上,知识是他们最宝贵的财富。而我们的儿童百科全书智能体,就像一座知识的宝库,为孩子们打开了一扇通往世界的神奇大门。儿童百科全书智能体是专为孩子们精心打造的知识伙伴。它涵盖了丰富多样的领域,从神秘的......
  • 照明风暖浴霸语音控制芯片,智能声控开关芯片方案NRK3301
    照明风暖浴霸通过特制的防水红外线热波管,与换气扇的巧妙组合,将浴室的取暖、红外线理疗、浴室换气、装饰等多种功能结合于一体的浴用小家电产品;为了提升产品的卖点,许多厂商都在尝试加各色各样的功能,某厂家加入了NRK3301离线语音识别方案后,在市场占有率提成了30%。NRK3301语音识别芯......
  • 【32项目】基于stm32f103c8t6的智能拐杖(文章末尾含完整代码)
    一.设计背景当我们带着家中的老人出去游玩时,难免会遇到有时老人走丢的情况,加上一般他们没有随时携带手机的习惯,很难找到他们,于是我们设计了一款智能的拐杖,通过通过GPS、电子罗盘等模块,来获取经纬度和磁北的夹角,然后通过对方的经纬度计算距离和角度,指向对方的位置,显示为对方的......
  • AI数字实时互动新探索,打造高拟真专属AI智能体
    我们打造了一款满足想象与应用的智能体——AI实时互动。   谈谈AI智能体   当AI变得足够聪明时,用户与AI的交互将变得真实自然。于是,构建高拟真AI与用户的实时交互,已经成为企业提升数智化生产力的新思路。在这个交互过程中,存在一个极具活力的对象,就是智能体(AIAge......
  • 低压配电系统中的无功补偿设备——智能电力电容器
    摘要:智能电力电容器是低压配电系统中用于节能、降低线损、提高功率因数和电能质量的新一代无功补偿设备。它由智能测控单元、投切开关、线路保护单元、低压电力电容器等构成,改变了传统无功补偿装置体积庞大和笨重的结构模式,适应了现代电网对无功补偿的更高要求。关键词:智能电......
  • 人工智能证书靠谱吗?含金量如何?
    证书的出台背景:为进一步贯彻落实中共中央印发《关于深化人才发展体制机制改革的意见》和国务院印发《关于“十四五”数字经济发展规划》等有关工作的部署要求,深入实施人才强国战略和创新驱动发展战略,加强全国数字化人才队伍建设,持续推进人工智能从业人员能力培养和评价,工业和......
  • 高智能化 智能传感器让数据采集和计算变得简单 实现自动检测和自动计算
    高智能化智能传感器让数据采集和计算变得简单实现自动检测和自动计算智能传感器是一种具有自动检测、自动识别和自动计算功能的传感器。它将传感器相关数据(如传感器型号、量程、K值、B值、编号等)写入电子标签,并将电子标签嵌入到传感器内部。在读取传感器数据的同时,智能传感......