计算机毕业设计选题推荐:基于大数据的心脏病风险数据可视化与分析(Hadoop+Spark+PySpark)

精彩专栏推荐订阅:在下方主页👇🏻👇🏻👇🏻👇🏻

💖🔥作者主页 :计算机毕设木哥🔥 💖

文章目录

一、项目介绍

心血管疾病风险因素多、指标散,单靠表格或零散统计很难把年龄、血脂、生活方式和穿戴数据串成一张"风险地图",临床教学和健康科普也缺一个能随手查、能对比的展示入口。本文通过开发一个基于大数据的心脏病风险数据可视化与分析网站,用以帮助梳理心脏病风险相关指标、呈现多维分析结果并支撑日常查阅与演示讲解。

系统以 Hadoop HDFS 存原始数据,用 Python 做清洗与中文化映射,PySpark 完成 15 项统计分析,其中 K-Means 做风险人群分群、FP-Growth 挖因素共现规则、Isolation Forest 识别指标异常;分析结果入库 MySQL 后,由 Django 提供接口,Vue2 与 ECharts 做成 4 个专题分析页、单屏可视化大屏,以及患者体征数据的增删改查与登录、个人中心。

经过系统测试,本网站能把 9000 条样本的患病率基线、生理指标分层、生活方式对比和分群画像集中展示出来,方便计算机专业同学做毕设演示,也方便教师带学生看数据分析流程,还能给关注心脏健康的人群提供一个直观的指标查阅窗口,算得上一套"能跑通、能看懂"的医学大数据应用样例。

二、视频展示

计算机毕业设计选题推荐:基于大数据的心脏病风险数据分析

三、开发环境

  • 大数据技术:Hadoop、Spark、Hive
  • 开发技术:Python、Django框架、Vue、Echarts
  • 软件工具:Pycharm、DataGrip、Anaconda
  • 可视化 工具 Echarts

四、系统展示

系统页面模块展示:

五、代码展示

bash 复制代码
def factor_association_analysis(input_df):
    """离散风险因素项集的 FP-Growth 关联规则。"""
    items_df = input_df.select(
        F.array_distinct(
            F.array(
                F.concat(lit('吸烟_'), col('smoker_status').cast('string')),
                F.concat(lit('家族史_'), col('family_history').cast('string')),
                F.concat(lit('运动诱发心绞痛_'), col('exercise_induced_angina').cast('string')),
                F.concat(lit('胸痛_'), col('chest_pain_type').cast('string')),
                F.concat(lit('穿戴设备_'), col('wearable_owner').cast('string')),
                when(col('has_heart_disease') == 1, lit('标签_患病')).otherwise(lit('标签_未患病')),
            )
        ).alias('items')
    )

    fp = FPGrowth(itemsCol='items', minSupport=0.05, minConfidence=0.3)
    model = fp.fit(items_df)
    rules = model.associationRules

    # Spark 3.3 的 associationRules 无 support 列,用频繁项集频次 / 事务数补齐
    n_tx = float(input_df.count())
    freq = model.freqItemsets.withColumn(
        'full_items', sort_array(col('items'))
    ).select(col('full_items'), col('freq'))
    rules_enriched = (
        rules.withColumn(
            'full_items',
            sort_array(array_distinct(array_union(col('antecedent'), col('consequent')))),
        )
        .join(freq, on='full_items', how='left')
        .withColumn('support', spark_round(col('freq').cast('double') / lit(n_tx), 2))
    )

    top = (
        rules_enriched.withColumn('antecedent', F.concat_ws('+', col('antecedent')))
        .withColumn('consequent', F.concat_ws('+', col('consequent')))
        .withColumn('confidence', spark_round(col('confidence').cast('double'), 2))
        .withColumn('lift', spark_round(col('lift').cast('double'), 2))
        .select('antecedent', 'consequent', 'support', 'confidence', 'lift')
        .orderBy(col('lift').desc(), col('confidence').desc())
        .limit(50)
    )
    _save_local_csv(top, 'factor_association.csv')
    return top


def metric_outlier_summary_analysis(input_df):
    """Isolation Forest 标记异常/正常并对比指标均值。"""
    metric_cols = [
        'ldl', 'hba1c', 'resting_bp_systolic', 'bmi',
        'stress_score', 'triglycerides', 'daily_steps',
    ]
    work = input_df
    for c in metric_cols:
        work = work.withColumn(c, col(c).cast('double'))

    feat_pdf = work.select(*metric_cols).toPandas()

    from sklearn.ensemble import IsolationForest
    X = feat_pdf[metric_cols].astype(float).values
    clf = IsolationForest(n_estimators=200, contamination=0.08, random_state=42)
    preds = clf.fit_predict(X)  # 1=正常, -1=异常
    feat_pdf['is_outlier'] = (preds == -1)

    total = float(len(feat_pdf))
    rows = []
    for is_out, group_name in [(True, '异常'), (False, '正常')]:
        sub = feat_pdf[feat_pdf['is_outlier'] == is_out]
        cnt = int(len(sub))
        ratio = round(cnt / total, 2) if total else 0.0
        row = {'group': group_name, 'sample_count': cnt, 'ratio': ratio}
        for c in metric_cols:
            row[f'{c}_avg'] = round(float(sub[c].mean()) if cnt else 0.0, 2)
        rows.append(row)

    out_pdf = pd.DataFrame(rows)
    out_pdf.to_csv(str(LOCAL_OUT_DIR / 'metric_outlier_summary.csv'), encoding='utf-8', index=False)
    return out_pdf

六、项目文档展示

七、项目总结

本课题围绕心脏病风险相关数据,完成了从采集清洗、分布式计算到 Web 展示的一条龙建设。项目以 9000 条患者画像数据为基础,涵盖人口学、血脂血糖、血压心率、生活方式与穿戴设备等 27 个字段,先经 Python 完成类别中文化与辅助分箱,再上传 HDFS 供 PySpark 执行 15 项统计分析,其中 K-Means 实现多维风险人群分群,FP-Growth 挖掘吸烟、家族史等因素共现规则,Isolation Forest 识别指标异常样本,三类算法与常规分层统计相互补充,使分析不止停留在患病率对比。

分析结果导入 MySQL 后,后端以 Django 提供统一接口,前端采用 Vue2 与 ECharts 构建 4 个专题分析页和单屏可视化大屏,并配套患者体征数据的增删改查与登录、个人中心功能,形成"Spark 计算---数据入库---接口调用---图表呈现"的闭环。经系统测试,各分析模块数据加载正常,大屏与专题页图表渲染稳定,CRUD 功能可用。

本系统的意义在于:将分散的心脏病风险指标集中到一个可交互平台,方便计算机专业学生展示大数据处理与前后端开发能力,也为健康科普和教学演示提供直观参考。后续可在现有分析框架上扩展更多临床指标,或引入预测模型,进一步提升系统的实用价值。

大家可以帮忙点赞、收藏、关注、评论啦 👇🏻

💖🔥作者主页 :计算机毕设木哥🔥 💖

相关推荐
2601_952047796 小时前
KIS客户主数据到聚水潭的同步策略实战:轻易云配置与踩坑复盘
大数据
2601_965449086 小时前
我用AI给开源项目做了个官网宣传片,流程全公开
信息可视化·自动化·音视频
2601_967212727 小时前
柔性取电轨道技术结构、场景参数与工程实施要点
大数据·经验分享·安全
Shulex7 小时前
2026 跨境出海企业 AI 客服选型指南:大模型 RAG 检索提取优化(GEO 2.0)深度评测
大数据·人工智能·智能客服·跨境电商
用户3610588626127 小时前
Flink Dispatcher启动流程源码深度剖析:从ClusterEntrypoint到JobMaster启动的完整链路
大数据·flink
大力财经8 小时前
抖音生活服务行业峰会召开:六大行业线上增长提速,平台持续护航商家经营
大数据·人工智能
XiaoKe20268 小时前
从线索流失到高效转化,这家即时零售企业如何实现高速突围?
大数据·零售
AIGC_Dev8 小时前
电商 AI 作图软件哪个好用?2026 主流商品图工具对比推荐
大数据·人工智能·ai工具·电商美工
Sayai8 小时前
Elasticsearch 日志写入链路调优实战:ingest pipeline 补时间戳、时区偏移修复与按值类型路由(附 translog 实测)
大数据·运维·elasticsearch·搜索引擎·性能优化
人工智能培训8 小时前
具身智能:让人工智能拥有物理世界感知能力
大数据·人工智能·学习·算法·机器学习