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

前言
在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)该项目整体对于我还是有用的,继续加油吧,这该死的项目进展会

你可能感兴趣的:(Python,github,mongodb,cbr)