PythonNotebook介绍
Python Notebook (Jupyter
Notebook) 介绍
1. 介绍
前一段跑别人的 python 代码,扩展名是 ipynb,不能直接用 python
命令执行,于是只好安装了 Jupyter notebook
软件,然后发现它是一个非常好用的程序写作工具。
对我来说,它最大的好处就是文档和程序可以写在一起了。在写程序的时候往往会有一些思路,解释,分析,运行结果等等,需要记下来,比较长的就不太适合在程序里面注释,记在其它地方又容易忘掉。Notebook
完美地解决了这个问题。当然它还有很多其它优点,下面简单介绍一下。
2. Jupyter Notebook
IPYNB 是 ipython notebook 的缩写,它开始只支持
python,后来又支持了其它 40 多种编辑语言,就改名叫 Jupyter
notebook。
Notebook 存储 python 程序的文件是 ipynb,ipynb 一种文本文件,可以用
vi 直接打开,文件中除了程序和说明还有一些结构信息,不能直接用 python
执行,但在 notebook 界面中可以被导出成.py ...
实战天池精准医疗大赛——复赛总结
实战天池精准医疗大赛——复赛总结
#算法实战
1. 说明
精准医疗复赛结束,最终排名在 20
左右。第一名的大神相当厉害,尤其是换数据之后,那分数简直是甩出其他人好几条街,非常想学习一下他的解决方案,可惜答辩定在七月,而且不一定公开,估计到时候都忘了。
我在复赛中用的是个中规中矩的方案,也在这里记录和分享一下,写得比较随性,各位就别当纯技术文档看了。
2. 特征工程
(1) 特征去噪
噪声数据是在最后一天才发现的,原因是训练集加入A榜答案之后,线下分数反而下降了,于是怀疑
A
榜数据是不是有什么问题?在检查过程中,阴错阳差地发现,有一些特殊值高出正常值几十倍,比如说有个
BUN(血尿素氮)为 2055,另外 ApoA1 和 ApoB1
存在数据单位不一致的问题,然后对它们进行了修正。
在本问题中,噪音数据比较容易发现,一方面是特征不多,可以人工过滤,别一方面体验指标有可参考范围,容易界定是否为异常值。如果数据多或者经过了脱敏处理,就需要一些更精确的算法,比如离群点检测等等。
(2) 特征分类
在本问题中,把特征分成两类:基因数据和其它数据。基因数据是以 SNP
开 ...
实战天池精准医疗大赛——复赛之妊娠糖尿病与基因数据分析
实战天池精准医疗大赛——复赛之妊娠糖尿病与基因数据分析
1. 说明
初赛提供的是血常规,肝功能,肾功能,生化的检验结果,预测血糖的具体值。复赛加入了
SNP
的五十多个位点数据,预测被试者是否为妊娠糖尿病,是个二分类问题。下面做了一些简单的数据分析和相关资料采集。
2. 糖尿病相关的 SNP
数据重要性排序
SNP 数据取值为 1,2,3,为枚举值,没有大小关系,因此做 onehot
编码,转换为形如:SNP1_3,表示 SNP1 取值为 3
作为单一特征.相关性排序描述的是单个特征与结果的相关性,决策重要性描述的是单个特征与其它特征组合后与结果的相关性.下面均为重要性前十的特征,数字为重要性评分.
1) 相关性排序(负号为负相关):
2)
决策重要性排序(五次交叉验证模型评分累加):
3) 总结
SNP34,SNP37 在两种排序中均占前 4
位,可以说是重要性最高的特征,SNP21, SNP53,SNP40
在前十中同时出现,也有较高优先级.
3. 糖尿病相关的其它信息
表中表出重要性前十位的特征,数字为重要性评分
1) 相关性排序:
2)
决策重要性排序(五次交 ...
实战天池精准医疗大赛之一_数据分析
实战天池精准医疗大赛之一 _
数据分析
#算法实战
1. 赛题说明
天池精准医疗大赛——人工智能辅助糖尿病遗传风险预测,这是明天即将开始的天池大数据比赛。赛题名字看起来很高深,其实是根据年龄,性别,肝功,血常规等体验指标,预测血糖值。数据挺少的,特征
40 个左右,训练集 5000 多个实例,测试集 1000
个实例。任何机器都能很快跑完。比赛地址:
https://tianchi.aliyun.com/competition/introduction.htm?spm=5176.100066.0.0.57e6e8dfMg8Z8V&raceId=231638
2. 预处理
(1) 缺失数据
有大量的缺失值,特征分四类,分别是乙肝、血常规、肝功能、肾功能,一般的缺失值都是缺失整个类别数据(由于患者未做某项检查)。除血常规以外,其余三项都有大量的缺失值,尤其是乙肝类检查,多一半都是空值。如果去掉这些数据,将会损失
3/4
的数据量。假设:医生不要求做该项检查,说明他认为该项指标基本正常,则在指标的正常范围内取随机值填充。
(2) 其它操作
替换去掉其中中文字符
3. 数据 ...
实战天池精准医疗大赛之三_分类回归与排序
实战天池精准医疗大赛之三
_ 分类回归与排序
#算法实战
1. 说明
开赛第一周挣扎在前 100 的边缘,第二周挣扎在前 20
的边缘,第三周懒得弄了,坐等换数据。初赛的前 100 名可进复赛,所以在前
100
中排名前后也没啥意义,开始的时候觉得自己分数蒙的成份很高,换了数据就完蛋,然后不断改进,坐实;后来就有点瞎叫劲了。又傲娇又胆小,也没结交到队友,至今还是孤军作战。记录一下本周收获,也不知这些都公开之后会不会被打出排行榜
[哭脸]。
2. 分类与回归
所有回归都可以抽象成分类,比如训练集有 100
个数,最差的情况下就是分成 100 个类,或者处理成 99
次二分类。而对于具体数值的回归,可通过其所属类别中的元素计算,比如:中值,均值,期望值,评估函数最佳值等等。
细数参与过的几个比赛:医疗大赛是切分正常和糖尿病,微博互动是切分正常和巨量互动,淘宝穿搭是切分普通组合和常见的组合,人品预测是切分普通和人品不好的,股票是切分普通和大涨的。基本都是从正常中寻找反常数据,几乎都可以当成不均衡的分类问题处理,而且它们有个共同的特点,就是越特殊的值权重越大,比如说预测对一个高血糖 ...
实战天池精准医疗大赛之二_再接再厉
实战天池精准医疗大赛之二 _
再接再厉
#算法实战
1. 说明
之前参加的都是往期赛,新人赛,这是第一人参加正式比赛,先谈谈感受。天池精准医疗已开赛一周,排行搒上大家整体的误差从
0.9 提升到 0.8,也就是说一开始 0.88
分还名列前茅,一周之后,这个分数早已榜上无名了。比想象中激烈,我也是反复出榜(榜单仅列出前一百名),偶尔侥幸进入前十,时刻准备着再次被踢出排行榜,
也算是体验了一把逆水行舟的乐趣。很多时候反复实验仍然提高不了成绩,感觉完全没有方向,大家都在摸索,和一边做一边对照正确答案,确实不一样。也有一些算法,我知道它,却不知道什么时候用它。在此也记录一下经验教训。
2. 特征工程
开始的时候做了一些特征工程,包括填充缺失值,为 SVM
计算排序特征,还找到化验单各项指标的正常的范围值,根据各项指标正常与否做离散特征,根据指标的合格数量计算统计特征等等。但相对于简单地判断中值,均值,效果都没有明显地提高。后来做了标准化,效果挺明显的,而且转换后缺失值就可以直接填
0
了。也分析了一下,为什么正常范围没起到作用,化验之后不都是看这个吗?后来在肉眼观察血糖各个档位特征统 ...
实战天池精准医疗大赛之四_初赛总结
实战天池精准医疗大赛之四 _
初赛总结
#算法实战
1. 说明
这两天因为改赛制,改评测方法,钉钉群里说什么的都有,我也跟着焦虑,做了小一个月,虽然对自己的算法有点信心,但是强人也很多,不知能不能进复赛.复赛数据和目标都不一样,相当于一场新的比赛.
在赛前,比赛的第一周结束,第二周结束,各发过一篇:
《实战天池精准医疗大赛之一 _ 数据分析》
《实战天池精准医疗大赛之二 _ 再接再厉》
《实战天池精准医疗大赛之三 _ 分类回归与排序》
本文是初赛的最后一篇,总结一下:最后阶段的算法集成;最终模型用到的所有具体算法;以及常见的坑.
2. 集成算法
数据从 3 到 38
不均衡分布,使用分类的情况下,不能确定边界划在哪里,最终使用多个边界,生成多个分类器,问题的难点在于,每个分类器的参数不同,比如:血糖小于
5 的,和血糖大于 15 的,比例差别很大,使用 GBDT
时,树的深度,节点权重需要分别调整,这里我使用了 8
个二分类器,做了一个自动调参的程序,调参的思想类似折半查找,以节省算力.
二分类器的目标都是切分"正常"与"异常",比如视 15
以上的为异常,15 ...
实战淘宝穿衣搭配
实战淘宝穿衣搭配
#算法实战
1. 说明
《淘宝穿衣搭配》比赛是 2015
年的一个天池算法比赛,现已开放为新人赛,仍可下载数据,上传结果及计算排名。具体地址是:https://tianchi.aliyun.com/getStart/information.htm?spm=5176.100067.5678.2.78904065HrZLpP&raceId=231575
这是一个集图片、文字、数据挖掘于一体的比赛,可下载的数据是千万级的,在网上也可以找到冠军及一些选手的解题思路。新人可用来练手,通过评分定位自己的实力,也能从前人的思路中受到启发。
2. 具体问题
竞赛数据包含三部分,分别是:商品基本信息数据(分类、文本、图像);用户历史行为数据(用户、商品、购买时间);和专家提供的搭配套餐数据(商品组合)。任务是预测给定商品最佳搭配的前
200 个商品。具体计分公式是:
其中 n 表示答案集合中商品的数量,p(k) 表示在 k
截断之前的预测准确率,当第 k 个商品在答案集合中Δ(k) 为 1,否则为
0。从中可见:在答案中越靠前的商品权重越大。 购物表数据共 13 ...
TF-IDF算法
随笔 _ 从《芳华》影评到 TF/IDF
算法
前两天看好多《芳华》的影评说:为什么好人没好报?于是感叹一堆世态炎凉,人性丑陋什么的。我觉得这问题是:为什么中央空调(对谁都温暖)往往不被看好。
先说说 TF/IDF
算法,这是一种信息处理和数据挖掘的重要算法,属于统计类方法。比如说,找一篇文章的关键词,TF(词频)是某个词在这篇文章中出现的频率,频率越高越可能是关键字。IDF(逆向文件频率)是这个词出现在其它文章的频率,比如“的”字,它在任何文章都出现,因为必然不是关键字。把
TF 和 IDF 乘在一起,就是这个词在这篇文章中的重要程度。
我们对一个人的态度也往往取决于:他对大家的态度 IDF,和他对我的态度
TF。刘峰对谁都很好,因此 IDF
是一个固定值,他对所有人都好这是个加分项吗?很遗憾,看公式:
其中分子是所有人,分母是刘峰给几个人送过温暖。也就是说他送温暖的人越多,分母越大,IDF
值越低。不过也请注意 log,它把这个值影响力给降低了。比如说,他给 5
个人送过温暖,再给第 6 个人送温暖时,分母变大,IDF 降低,导致前 5
个人对他的好感度降低,不对呀 ...
Python海量数据处理之_Hadoop家族
Python 海量数据处理之
_Hadoop 家族
本篇是 hadoop 部分的最后一篇,主要介绍 Hadoop
家族的常用工具。以及解答学习过程中的一些疑问。
hadoop 家族
Pig 是上层封装了的数据流处理工具。
Mahout 是基于集群的数据挖掘工具。
Zookeeper
是集群管理工具,比如配置一些备用服务器,当重要的服务宕机时,及时补救。
其中黄色部分是 hadoop 安装包中自带的,HDFS
是文件系统支持,MapReduce 是计算支持。
绿色部分都是向上层提供类似数据库的数据访问,但方式不同。Hive 是基于
MapReduce 的封装,它向上层提供了类似 SQL 语言的 HQL,向下通过 MapReduce
方式访问数据。HBase 在对 HDFS 层的封装,它本质上是一种 key/value
系统,主要负责数据存储,解决的是 HDFS 随机存储方面的问题。
有了 mysql 为什么还要 Hadoop?
我们之前介绍搭建比特币矿池的时候,使用 zookeeper+kafka+mysql
建立集群,其中用 mysql 建构数据服务器,集群中其 ...