简易糖尿病胰岛素注射量推荐系统运行记录(github项目)

news2024/11/17 7:19:32

前言
在github上找案例推理相关实现代码,找到这个项目,记录一下运行过程。项目地址:https://github.com/jcf-junior/Diabetes-CBR

运行记录

运行项目的前提是已经装好的所有request的包,电脑里已经安装过mongodb数据库。

原项目直接运行会报错,需要修改一下,我直接放上已经修改好的代码。

(1)get_parameters.py

from db_connection import *

# 从配置文件获取k值
p1=config["parameters"]["p1"]  # "k,3"
k=int(p1.split(",")[1])

(2)k_nn.py

from db_connection import *
from recommended_bolus import *
from find_neighbors import *
from get_parameters import *

# 设置输入参数
nearest_neighbors = find_nearest_neighbors(new_case["data"], k, selected_distance_metric)

(3)将 config 中 selected_algorithm 的值改成k_nn。

做完以上的修改就可以开始运行项目了。

1. 运行 db.py

连接 mongodb 数据库,在 mongodb 中创建新的数据库 cbr,在 cbr 中新建 config 和 inputs 两个表格,config 存储用户选择的案例检索算法和计算两个案例之间相似度的算法,inputs 存储用户输入的推荐所需参数。

在这里插入图片描述

2. 运行 generator.py

随机生成10个糖尿病案例,添加到 cases 表格中,作为案例库。

import random
from pymongo import MongoClient

# 连接到 MongoDB
client = MongoClient("mongodb://localhost:27017")

# 获取数据库
db = client['cbr']

# Get the cases collection
cases_collection = db['cases']

# 随机生成10个案例
cases = []
for i in range(10):
    case = {}
    case["Preprandial BG"] = random.randint(50, 250)   # 餐前血糖
    case["IOB"] = round(random.uniform(0, 1), 2)
    case["BG Target"] = random.choice([100, 110])
    case["CHO"] = random.randint(25, 80)   # 碳水化合物含量
    case["Patient weight"] = random.randint(50, 140)    # 患者体重
    case["ICR"] = random.randint(8, 23)
    case["ISF"] = random.randint(25, 55)
    case["Physical activity preprandial - Duration"] = random.randint(0, 100)   # 餐前身体活动时长
    case["Physical activity preprandial - Heart rate"] = random.randint(40, 110)   # 餐前身体活动心率
    case["Physical activity preprandial - Intensity"] = random.randint(0, 6)     # 餐前身体活动时长
    case["Physical activity postprandial - Duration"] = random.randint(0, 100)    # 餐后身体活动强度
    case["Physical activity postprandial - Intensity"] = random.randint(0, 6)     # 餐后身体活动时长
    case["Time of day"] = f"{random.randint(0,23)}:{random.randint(0,59)}"     # 当前时间
    case["Recommended Insulin Bolus"] = round(random.uniform(0, 12), 2)      # 推荐胰岛素注射量
    cases.append(case)

# 向 MongoDB 中添加案例
cases_collection.insert_many([{"type" : "cases", "data": case} for case in cases])   # 案例库中每条案例以字典的形式存储

3. 运行main.py

返回推荐的胰岛素注射量。运行结果如下:

在这里插入图片描述

【注】如果数据库中已经创建好 cases、inputs 等表格,那就直接运行 main.py 就行,不用每次都运行 db.py 好generator.py两个文件。

总结

(1)该项目的输入设计的不太好,是直接固定在db.py文件中的,不能由用户手动输入,是需要改进的;
(2)计算案例相似度部分,由于案例各属性都是数值型的,所以便于实现,但文本型数据的计算还要再找找别的代码;
(3)该项目整体对于我还是有用的,继续加油吧,这该死的项目进展会 😦

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/419780.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux XFS文件系统的备份与还原

文章目录Linux XFS文件系统的备份与还原XFS文件系统备份xfsdump语法xfsdump备份完整的文件系统用xfsdump进行增量备份XFS文件系统还原xfsrestore语法用xfsrestore观察和xfsdump后的备份数据内容简单恢复level 0 的文件系统恢复增量备份数据仅还原部分文件到xfsrestore交互模式L…

深入剖析Android视图层次结构,为什么UI界面如此多样化?

简述 在Android Framework中,渲染机制是指如何为应用程序的用户界面绘制和布局视图(View)。Android的视图层次结构(View Hierarchy)是由视图树中的每个节点表示的 。当更新视图树时,Android会执行以下流程…

记一次内存泄漏问题的排查

阶段一: 前段时间,突然发现服务在毫无征兆的情况下发生了重启。去看了一下容器退出的日志,发现内存利用率超过了100%,导致容器重启,进一步看了skyWalking,发现heap内存超了,当时只是简单的以为是…

HTML2.1列表标签

列表标签种类 无序列表 有序列表 自定义列表 使用场景:在列表中按照行展示关联性内容。 特点:按照行的形式,整齐显示内容。 一、无序列表 标签名说明ul无序列表整体,用于包裹li标签li表示无序列表的每一项,用于包…

【iOS】—— 消息传递和消息转发

消息传递和消息转发 文章目录消息传递和消息转发消息传递(方法调用)IMP指针IMP与SEL的区别与联系SEL是通过表取对应关系的IMP,进行方法的调用快速查找imp过程汇编代码查找过程总结消息发送快速查找imp(汇编):方法缓存慢速查找总结慢速查找消息…

全链路日志追踪

背景 最近线上的日志全局追踪 traceId 不好使了,不同请求经常出现重复的 traceId,或者通过某个请求的 traceId 追踪搜索,检索出了与该请求完全不相干的日志。我领导叫我去排查解决这个问题,这里我把我排查的过程思路以及如何解决…

真题详解(单元测试)-软件设计(五十)

真题详解(0/1背包)-软件设计(四十九)https://blog.csdn.net/ke1ying/article/details/130163955 单元测试 五个特征:模块接口、局部数据结构、重要执行路径、出错处理、边界条件。 模块接口,保证测试模块数据流正确的流入和流出。 测试模块用…

大数据相关知识

1、大数据整体简介 1、1 简介 百度百科这样写道 大数据(big data),IT行业术语,是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优…

C++类的学习1

类的定义一般包括两部分,一是类的属性,二是他所拥有的方法。类的实例化是指给类的加载并初始化过程,比如一个people类,我们具体到每一个人就是类的实例化,此外一个类可以在此类上进行扩展。比如people类,我…

vue项目使用luckyexcel预览excel表格

场景 最近工作中在开发文档上传并能在新窗口打开预览的功能。在此记录下心路历程。 方法 我总共尝试了2种方法预览excel,均可实现。还发现一种方法可以实现,需要后端配合,叫做KKfileview。 1.使用luckyexcel插件实现xlsx的预览 2.使用fi…

组合式升降压PFC的分析方法

1. 组合式升降压PFC的基本原理 组合式升降压PFC采用两组储能元件,基本单元为Cuk,Sepic和Zeta。参考论文《New Efficient Bridgeless Cuk Rectifiers for PFC Applications》中的三种拓扑进行分析。   Cuk型PFC的TypeI如下图所示,正半周Dp一…

Jef-log-tail日志采集工具使用说明

介绍 jef-log-tail是一款基于netty实现的日志采集工具,支持指定目录、指定文件、指定后缀的动态持续日志采集,日常使用场景如:集群部署后将多台主机的日志集中存放到一台日志服务器上,或者将日志统一输出到数据库、redis、kafka、…

STM32实战项目-温湿度传感器

程序功能: 1、软件模拟I2C协议与SHT30数字温湿度传感器通讯; 2、数码管显示环境温湿度; 3、串口打印环境温湿度。 目录 一、硬件电路 二、技术讲解 2.1IIC简介 2.2 IIC总线协议 2.2设备接入 三、SHT30数字温湿度传感器 3.1性能介绍 …

Rollup 实践:插件生态和实用技巧(续)

在前面的文章中,我们已经了解了 Rollup 的性能优化和高级用法。本篇文章将继续探讨 Rollup 的插件生态和实用技巧。 插件生态 Rollup 拥有一个丰富的插件生态,下面我们介绍几个实用的插件: rollup-plugin-terser:使用 Terser 压…

FlowForge 使用教程 团队资源管理

前言 本篇文章结合FF的操作来给大家解释一下,FF在团队管理上都与那些资源可以操作。 团队创建 使用超管第一次登录FF平台,默认什么资源都没有,你只能先去创建一个团队才能继续往下操作。 在FF平台上,团队就代表一个租户,也是一种资源隔离的手段。 创建团队可以通过右上…

Rollup 实践:性能优化和高级用法(续)

在前面的文章中,我们已经了解了 Rollup 的基本概念和配置。本篇文章将继续探讨 Rollup 的性能优化和高级用法。 懒加载 通过 Rollup 的代码分割功能,我们可以实现懒加载,从而减小初始页面加载时间。假设我们有一个动态导入的模块 dynamic.j…

vue项目用后端返回的文件流实现docx和pdf文件预览

前端docx和pdf文件预览实现效果图docx-preview文件预览pdf文件预览写这篇文章的目的,是因为我比较懒,想把代码记录一下,方便日后使用;哈哈,如果你也需要,也可以复制粘贴啊,为了方便自己和需要的…

windows10开发环境下部署kafka消息服务

下载kafka,官方地址https://kafka.apache.org/downloads 百度网盘链接:https://pan.baidu.com/s/1h3iXtfzEIBoajGPId5Dcag?pwd0000 提取码:0000直接把下载的文件解压到某个盘的根目录,要不然后面的命令就会遇到“命令行过长”的报…

linux 系统的一些使用小技巧

实现RedHat非正常关机的自动磁盘修复 先登录到服务器,然后在/etc/sysconfig里增加一个文件autofsck,内容如下: AUTOFSCK_DEF_CHECKyes PROMPTyes 改变文件或目录之最后修改时间(变为当前时间) 执行格式:touch name ( name 可为文件或目录名称…

Matlab vs Python:哪个更适合数据分析和可视化?

当谈到数据分析和可视化时,许多人会思考使用哪种编程语言来实现这一目标。在IT行业,最流行的两种编程语言是Matlab和Python。这两种语言都有广泛的应用,但是对于初学者来说,选择哪种语言可能会有些困难。在本文中,我们…