我有一个格式的数据集:
Keywords Disease/Drugs
bradycardia, insomnia, hypotension, hearinglos... NSAIDS Poisoning
vomiting, nausea, diarrhea, seizure, edema, an... NSAIDS Poisoning
pancreatitis, gi, symptoms, restlessness, leuk... Chronic abacavir use (Nucleoside Analog Revers..
ards, apnea, hepatotoxicity, dyspnea, pulmonar... Chronic stavudine and didanosine use (Nucleosi...
有许多数据,但它是以这种格式。
将上述数据转换为格式,爆炸,并根据,
创建新行
Keywords Disease/Drugs
bradycardia NSAIDS Poisoning
insomnia NSAIDS Poisoning
pancreatitis Chronic stavudine and didanosine use (Nucleosi...
现在,在对输入列Keywords
进行编码之后,我使用DecisionTreeClassifier
创建了预测系统。
此外,我还发现了十大预测:
p_probability = model.predict_proba([[t]])
best_n = np.argsort(p_probability, axis=1)[:,-10:]
当我输入像bradycardia
这样的单一症状时,它显示了10个最好的预测。
另外,当我输入一个5种症状的列表时,它会显示出50个最好的预测。
由于一份症状清单可能有常见的疾病/药物,我想创建一个系统,当输入任何数量的症状列表时,只显示10个最佳预测。
发布于 2021-11-14 12:08:14
我知道你有疾病的关键词和给那个病人的药物。考虑到问题的质量,我真诚地建议你不要做任何ML,而只是做一些基本的统计。
如果你想看bradicardia
的前10名最佳药物,最好的方法可能是做一次频率计数。这样你就可以找到治疗bradicardia
的最常用的药物了。
给出一份症状清单,找出以前的症状,然后关闭过去提供的药物。就像查询一样,如果一个人表现出与您的新病人相同的症状,如果您发现过去的查询具有相同的症状,则可能需要推荐相同的症状。然后将下一个关闭查询排序到查询。
这将没有ML。使用ML时,您需要对数据集进行适当的清理,并构建一个排名系统。首先,我将推荐您使用逐点排序系统。
尽管如此,我仍然认为你应该先尝试没有ML。
发布于 2021-11-15 03:22:42
你应该以不同的方式准备你的训练数据。通过将关键字在不同的行中爆炸,您将丢失有关疾病/药物症状相关性的信息。
例如:恶心+失眠症->睡眠障碍患者。而1例恶心+腹泻->食物中毒患者。
给定您的数据集,您必须对关键字进行一次热编码,并将它们用作训练模型的功能。
然后给出一个新的病人信息:
你把它编码为:
用你的模型来预测它,和以前一样。
p_probability = model.predict_proba([[t]])
best_n = np.argsort(p_probability, axis=1)[:,-10:]
通过这种方法:
发布于 2021-11-16 14:59:13
我想这是一个特殊的NLP问题,您基本上处理的是将x“转换”为y的问题。因此,您可以查看“序列到序列”学习(神经翻译模型),其中您试图“翻译”一个关键字或一组关键字为药物:
bradycardia
-> NSAIDS Poisoning
Keras/Tensorflow有许多有用的来源,例如:
https://datascience.stackexchange.com/questions/103922
复制相似问题