前言
经过了差不多一个月的不断实验数据工程又跑模型,最终还是发现诊断文本单特征最靠谱了。其他特征与flag关联都挺一般的,官方是根据评分来划分flag的:>5为1,<5为0.由此锁定Caprini模型评估表格中高分重点指标即可预测评分指数从而预测风险。本文提供做标签化文本预测和做文本分析预测思路,但仅提供处理思路,后续比赛结束代码开源,可参考。
?
提示:以下是本篇文章正文内容,下面案例可供参考
一、诊断文本标签化预测
诊断 | 结缔组织病 | 高血压肾损害 | 脊椎源性痛综合征 | 结肠恶性肿瘤 | 开角型青光眼 | 肺恶性肿瘤 | 胃炎 | 肺恶性肿瘤 | 胃恶性肿瘤 | 肺继发恶性肿瘤 | 脑梗死 | 躯干三度烧伤 | 特发性肾积水 | 肝硬化伴食管静脉曲张破裂出血 | 冠状动脉粥样硬化 | 胃炎 | 腹痛 | 头位顺产 | 为肿瘤化学治疗疗程 |
等这些单文本特征,由于这些特征符合Caprini模型表格:
进行评分等级风险的。而对于其他数据特征如D二聚体或凝血酶时间等特征来说关联性太小,和其他flag为0的数据拉不开太大差距(这就是人工标签和算法标签的差距,如果不能让人工标签做到尽可能精确,那只能让算法更趋近于人工的算法)?。
对这些特征进行标签化:
?如上述对整个文本诊断特征进行处理(得和预测文本一起进行标签化)。当然预测文本也是一样进行标签化处理。
随后进行你们想使用的机器学习模型或是深度学习模型进行预测即可。
二、词袋模型文本特征预测
此方法和上文思路仅是多了一个参考Caprini模型表格进行文本词向量划分。这里提供python处理方法:
首先利用jieba库进行词性划分:
?例如这个效果进行词向量分类从而构建词袋模型分类。
#创建一个空集
def createVocabList(dataSet):
vocabSet = set([])
for document in dataSet:
vocabSet = vocabSet | set(document) #创建两个集合的并集 划掉重复出现的单词
return list(vocabSet)
#处理样本输出为向量形式
def setOfWords2Vec(vocaList , inputSet):
returnVec = [0]*len(vocaList)#创建一个其中所含元素全为0的向量代替文本
for word in inputSet:
if word in vocaList:
returnVec[vocaList.index(word)] += 1
else:
print("the word:%s is not in my Vocabulary!"" % word")
return returnVec
如果对文本词向量处理不是很了解的话可以看我另一篇文章:
机器学习:基于概率的朴素贝叶斯分类器详解--Python实现以及项目实战https://blog.csdn.net/master_hunter/article/details/109630661?spm=1001.2014.3001.5502之后构建完词袋模型对不同词向量根据其标签打上即可完成,随后进行预测调参数即可。
三、总结
总之我觉得挺遗憾的,最后卷的居然是单特征,而其他给的二十多个维度的特征数据全部浪费了没用用上去。当然第二总方法肯定会比第一种方法得分更高但是第一种更快出结果。
|