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

news/2024/9/23 20:22:34/

前言
在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.ppmy.cn/news/42969.html

相关文章

含分布式电源的配电网日前两阶段优化调度模型(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Qt·核心机制

★了解Qt和C的关系 ★掌握Qt的信号/槽机制的原理和使用方法 ★了解Qt的元对象系统 ★掌握Qt的架构 ★理解Qt的事件模型,掌握其使用的时机 目录 一、信号与槽 二、元对象系统 三、Qt的架构 四、Qt的事件模型 信号与槽、元对象系统、事件模型是Qt机制的核心&…

104.(cesium篇)cesium卫星轨道模拟

听老人家说:多看美女会长寿 地图之家总目录(订阅之前建议先查看该博客) 文章末尾处提供保证可运行完整代码包,运行如有问题,可“私信”博主。 效果如下所示: 下面献上完整代码,代码重要位置会做相应解释 <html lang="en"> <

从零学习python - 13模块的导入与使用(实现单例模式)

模块基础知识 # 项目 > 包 > 模块 > 变量\方法\类 # 在python中,模块是代码组织的一种方式,把功能相近的函数或类放到一个文件中,一个文件(.py)就是一个模块,模块名就是文件名去掉py后缀. # 好处:提高代码可复用性和可维护性,一个模块编写完成后,很方便在其他项目中导…

day9 条件变量的基本使用

目录 条件变量 条件变量 应用场景&#xff1a;生产者消费问题&#xff0c;是线程同步的一种手段&#xff1b; 必要性&#xff1a;为了实现等待某个资源&#xff0c;让线程休眠&#xff0c;提高运行效率&#xff1b; 等待资源&#xff1a; //1、一直等待资源 int pthread_c…

016 - 如何写一个 C++ 类

到目前为止&#xff0c;我们学了类 class&#xff0c;本期我们要尝试着从头开始写一个类。 本期不会讲的太深。我们不会写非常复杂的类&#xff0c;我们要会完成一个基本的 log 类&#xff0c;来演示一下我们已经学过的相关知识。 接下来的几期&#xff0c;我们会继续学习类。…

QT Graphics View坐标系转换

背景 在做绘图处理时&#xff0c;Scence作为场景&#xff0c;大小是无限的&#xff0c;而View作为一个观察镜头&#xff0c;观察范围是有限的。 那么有限的View观察无限的Scence区域&#xff0c;必然要选定一个观测锚点。 所以View具有一个centerOn(QPointF pos)函数&#xff…

SFSpeechRecognitionTask.error 错误码对照表

iOS 语音识别引擎中常见错误对照表 加注释了 error An error object that specifies the error that occurred during a speech recognition task. iOS 10.0 macOS 10.15 Mac Catalyst 13.1 Declaration property(nonatomic, readonly, copy, nullable) NSError *error;…