20180811-0827医疗大数据初赛总结

在这里插入图片描述

介绍下本人。中山大学,医学生+计科学生的集合体,机器学习爱好者。

再说说这个比赛的背景。为了不让数据泄露,主办方真是花尽了心思,搞了个云桌面,在云桌面里搞了个内网服务器。。也就是无法联网,装包什么的只能用本机来copy了。

不过还好,整个比赛搞了三天三夜搞完了,线上auc0.85,排名18,无baseline第一次从头到尾的尝试,之前也做过其他比赛,但是都是有大佬bl的。。

1、搭环境

(1)从本机下载云桌面(云机)中服务器centos系统(云服)对应anacoda文件。从本机拷贝至云机,云机中通过winscp上传至云服。
在这里插入图片描述
(2)在本服中安装anaconda

sudo wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.0.1-Linux-x86_64.sh

(anaconda3对应py35)

sudo wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda2-2.4.1-Linux-x86_64.sh

(anaconda2对应py27)

执行安装过程

sudo bash

Anaconda3-5.0.1-Linux-x86_64.sh

提示你,是否阅读协议,回车接受

In order

to continue the installation process, please review the

license
agreement.
Please,

press ENTER to continue

是否接受协议,yes

Do you

accept the license terms? [yes|no]

安装位置确认,回车

Anaconda3

will now be installed into this location:
/home/anaconda3


Press ENTER to confirm the location


Press CTRL-C to abort the

installation


Or specify a different location below

提示你如果要让bashrc起作用,要打开一个新的终端。但测试不起作用。

For this change to

become active, you have to open a new terminal.

于是,我就直接配置环境变量

sudo vim

/etc/environment

把自己的安装目录添加到后面

:/home/anaconda3/bin

立即激活环境变量

source

/etc/environment

测试是否安装成功

如果安装成功,会显示出当前conda的版本

conda

4.3.30

激活环境

conda activate

如果要退出环境的话,执行:

source

deactivate

(注:本机装anaconda是在官网下载,在anaconda prompt中通过pip或者conda install 装包。(conda不行的用pip))

(3)装包

①在本服中创建envs环境,装所需要的各种包。把envs文件夹拷贝至云机,再通过云机winscp上传至云服文件夹下。
在这里插入图片描述

在本服中创建envs环境,普通用户创建环境,在/home目录下
1)创建环境
在这里插入图片描述
2)激活环境
在这里插入图片描述

②也可以在本服中创建envs环境,在envs环境中装好包(激活虚拟环境后装包),从本服这里把相关包拷贝至云机,云机通过winscp上传至云服目录下
在这里插入图片描述
在这里插入图片描述
(注:云服没联网,不能直接创建envs,也不能直接装包,除了anaconda自带的在安装anaconda时候已经有了。不能在网页中打开jupyter)

(4)部分包(如lgb)依赖gcc环境,需要升级glic。详见文件夹。
在这里插入图片描述

①先在本机下载云服对应版本的gcc文件(包括依赖的),拷贝至云机,winscp上传至云服,在云服装好gcc并编译成功;

②在本机下载云服提示的glic版本,拷贝至云机,winscp上传至云服,安装。

2、装软件pycharm并连接至云服。详见文件夹下
在这里插入图片描述

3、分析赛题。

(1)搞明白三年期,确定训练集数据时间范围:详见。构造可用最大随访时间,其他表的时间范围与它比较筛选。打标签筛选。
在这里插入图片描述
(2)分析特征:

①通过对个人信息、随访表、门诊表、手术表、生化表的ID计数(ID出现的次数),发现门诊表、手术表、生化表的ID数远小于个人信息、随访表,即大部分人没有门诊、手术、生化记录。所以可以考虑不使用这几张表。(merge时候只merge所需要的表)

②发现大量ID重复的,所以要合并同个ID对应的记录,例如选取均值、中位数、最大最小值、平均时间间隔、最大时间间隔、生化阳性阴性次数等作为特征。对于文本特征,可以采用jieba或countvector选取(还不会),也可以手动提取关键词所在的行分析上述计数特征。

③去除一些指标异常值过于明显的:心率>220(房颤300-600)、glu>100、身高>300的。

(3)业务分析:

①只要有了冠心病不会逆转,只可能临床治愈、没有冠心病症状、心功能好,可还是有冠心病;

②60%-70%冠脉患者有高血压,高血压患者冠心病比正常高3-4倍。高血压(收缩压>140和或舒张压>90)。

③影响冠心病的因素:收缩压、舒张压,吸烟,糖尿病、高甘油三酯血症、高胆固醇血症(TC>=5.7、LDL-C>3.3、HDL-C<1)、血同型半胱(>10)、凝血8因子升高、血小板功能升高、胰岛素抵抗,肥胖(>标准体重(=身高-105)kg的20%或BMI(=kg/m^2)>24),家族史(冠心病、糖尿病、高血压等小于50岁),A型性格,口服避孕药,饮食习惯,心衰史、血运重建,疼痛时间,肺水肿、杂音、低血压、心动过速,年龄>75(>40,男>55,女>65),性别(男>女),外科手术、休克;

④诊断:影像,血肌酐、心肌损伤标志物增高(肌红蛋白、肌钙蛋白、CK-MB)、ctnt增高;

⑤症状:收缩期血压增高、脉压增高、低血压,腹主动脉瘤、胸主动脉瘤(胸痛、气急、吞咽困难、咯血、压迫喉返神经),乏力,恶心、呕吐,休克;

⑥用药:(β阻剂)洛尔、硝酸酯、(ca阻剂)帕米、阿司匹林、氯吡格雷、他汀、肝素

(4)纳入特征:(所有特征需要先筛选时间小于可用最大随访时间的部分分析)

①信息特征:性别、年龄(高血压确诊时间-出生日期or最后一次随访时间-出生日期)、冠心病标志。其他特征del掉再去重(所有特征均相同的行去重)。

②随访表:有症状的次数(除掉无症状剩下的人计数,空值即无症状的人次数补0,或者树模型自动补0)、收缩压最大值和均值、舒张压最大值和均值、心率最大值和均值、空腹血糖最大值和均值、身高最大值和均值、体重最大值和均值、BMI最大值和均值。其他特征del掉再去重(所有特征均相同的行去重)。

③门诊诊断表(找出与心胸有关的诊断名):不同人每次门诊时间间隔(最小、最大、平均)、不同人确诊高血压后心胸疾病门诊次数、不同人每次门诊的心胸疾病诊断数目。其他特征del掉再去重(所有特征均相同的行去重)。

④门诊手术表(找出与肌钙蛋白、肌酸激酶有关的门诊手术名,应该是门诊化验的意思):不同人每次门诊手术时间间隔(最小、最大、平均)、不同人确诊高血压后心胸疾病门诊手术次数、不同人每次门诊手术的心胸疾病诊断数目。其他特征del掉再去重(所有特征均相同的行去重)。

⑤门诊处方表(找出与心脏疾病相关的用药:硝酸、匹林、格雷、肝素、洛尔、普利、沙坦、地平、帕米、硫卓、他汀):不同人每次处方时间间隔(最小、最大、平均)、不同人确诊高血压后心胸疾病处方次数、不同人每次门诊手术的心胸疾病处方数目。其他特征del掉再去重(所有特征均相同的行去重)。

⑥住院诊断表(找出与心胸有关的诊断名):不同人一次住院长度、不同人每次住院时间间隔(最小、最大、平均)、不同人确诊高血压后心胸疾病住院次数、不同人每次住院的心胸疾病诊断数目。其他特征del掉再去重(所有特征均相同的行去重)。

⑦住院手术表(找出与心有关的住院手术名):不同人每次住院手术时间间隔(最小、最大、平均)、不同人确诊高血压后心疾病住院手术次数、不同人每次住院手术的心疾病诊断数目。其他特征del掉再去重(所有特征均相同的行去重)。

⑧住院医嘱表(找出与心脏疾病相关的用药:硝酸、匹林、格雷、肝素、洛尔、普利、沙坦、地平、帕米、硫卓、他汀):不同人每次住院医嘱时间间隔(最小、最大、平均)、不同人确诊高血压后心胸疾病住院医嘱次数、不同人每次门诊手术的心胸疾病住院医嘱数目。其他特征del掉再去重(所有特征均相同的行去重)。

⑨生化表:结果数值与正常值上下限比较,判断阴阳性次数,空值不填补。其他特征del掉再去重(所有特征均相同的行去重)。

(4)合并:

from文件名import*,合并处理过的所有表,公共列为ID,每次打印一下内存。最后合并的表整体去重一下。

(5)训练:

分割训练集、验证集、测试集,打印shape。直接喂进lgb和xgb。

(6)结果处理:

先将结果线性加权。

发现得到的结果里面有重复的ID,去重。

剩下部分有重复ID对应的score取平均值。

最后与题中ID列左merge。

4、一些tip:

(1)转化时间格式,变成py能计算天数的;

(2)填补缺失值时,先判断所填补列的类型:若其中的数字是object类型,填补’-1’;若是数值类型,填补-1;

(3)每次合并完、筛选完打印下shape[0]行数;

(4)两个中括号代表生成了表:pre[[‘ID]]——生成一个只有一列ID的表;pre[[‘ID,’score’]] ——生成一个有一列ID和一列score的表;单中括号只表示所引用列的内容;

(5)merge的时候,先去重,否则会幂次扩增,直接爆炸;

(6)生成新表后del原表,生成新特征后del原特征,防止内存爆炸;

(7)在一个文件夹的时候,引用另一个文件:from文件名import*;

(8)喂到网络里时,先打印训练集、验证集、测试集、预测集的shape;

(9)提交结果,看清楚ID列用哪个。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值