美文网首页我用 Linux@IT·互联网数据乐园
数据挖掘工程师的第一个月(附带干货分享)

数据挖掘工程师的第一个月(附带干货分享)

作者: 插着扇子的石头 | 来源:发表于2016-08-24 23:50 被阅读4454次

    去年8月份,我拿到了数据挖掘工程师的offer。很多人告诉我,数据挖掘工程师就是每天分析分析数据,再拍一下脑袋,想出几个新特征,或者调调参数,他们还有个外号叫『调参工程师』。

    今年8月份,我已经正式入职一个月了,那么我的第一个月工作是什么呢?

    1、阅读我们组负责的核心代码,并做一次汇报。大部分代码都是用python或shell脚本编写,很容易看懂每一行代码的含义。虽然能够轻易认识每一行代码,但要弄懂整套代码的流程和细节就不那么容易了。『1+1>2』,『虽然每个字都听得懂,但就是不知道他在说啥』……这类情况与我现在碰到的问题也是大同小异的。除了编程语言,我们还需要了解hadoop的基础知识,因为公司的数据量都相当大,单机一般跑不动数据。另外,我们需要预先知道机器学习应用的常见套路:解析输入数据,提取一级特征,提取二级特征,……用分类器进行训练,预测,获得一个分数,然后和其他分数进行整合,输出结果。

    2、学习开发工具和开发流程。读书的时候,我一直用C++在Windows上进行内核开发。现在需要学习基本的linux命令,hadoop命令,SVN的使用,vim的使用,怎么提交代码并将代码上线。

    3、接手师兄的部分工作,协助师兄完成一些任务。工作可以分为两类。第一类,接手的项目。这一块非常重要,因为你未来的几个月都要和它纠缠在一起。认认真真看代码,在师兄的指导下完成与该项目相关的小任务,能够跑通这个项目,知道怎么修改代码。以后数据或别人告诉你,你的项目出问题了,你要能及时跟踪问题,定位问题,解决问题。第二类,接手的事务性工作。这部门工作主要是为了服务他人和团队。我目前有三个小小的事务性工作,比如接到我负责的数据源的报警信息后,需要追查报警原因。

    ——————————干货分享—————————

    干货四篇:SVN,Linux,Hadoop,策略

    SVN篇

    SVN代码提交步骤

    1、从SVN上下载代码:svn co 代码地址

    2、修改代码

    3、在本地自测

    4、发起code review

    5、评审人进行code review

    6、一般情况下需要进行QA评测,如果改动较少,也可以免测

    7、提交代码,分五步

    查看本地代码与最新代码的差异:svn diff

    没改动的的代码与svn的最新版本同步:svn up

    将新增的文件加入svn版本控制中(若只是改动原文件,可以跳过这一步):svn add 新增文件名

    将修改后的文件提交到版本库:svn ci -m "注释内容"

    SVN的其他常用命令

    查看所有版本的文件修改信息:svn log -v > svn_log.txt

    查看指定的两个版本的差异:svn diff -r 第一个版本号:第二个版本号

    更新至指定的版本:svn up -r 某一个版本号

    Linux篇

    文件传输

    首先安装SecureCRT

    从linux服务器传输文件到本地电脑:sz -be 文件名

    从本地电脑传输文件到linux服务器:rz -be

    从其他机器上拷贝文件到当前机器:wget -r ftp://机器名//文件夹的绝对路径

    Linux的常用命令

    按内容提取文件中的某些行:grep,例grep -aP ^Hello part-00000 > hello.txt

    按行号提取文件中的连续行:sed,例sed -n '19,19p' text.txt >> result.txt

    查看两个文件的不同:diff old.txt new.txt > diff.txt

    查看文件夹中文件个数:ls | wc -l

    后台执行:nohup 命令 &

    解压:gunzip FileName.gz

    解压缩:tar -xzvf FileName.tar.gz

    建立压缩文件:tar -cvf 压缩后的文件名.tar 待压缩的目录

    查看指定命令的进程ID: ps -ef |grep cmd命令

    杀死进程:kill -9 [PID]

    杀死含指定关键字的进程:ps -ef | grep 关键字 | grep -v grep | cut -c 9-15 | xargs kill -9

    文件和目录名称自动补全:文件和目录名称前缀+tab键

    跳到命令行的头部位置:Ctrl + a

    跳到命令行的尾部位置:Ctrl + e

    Vim的常用命令

    退出编辑,不保存:q!,回车

    退出编辑,保存:wq,回车

    查询指定字符串:/查询字符串,回车,n向后查找,N向前查找

    直接跳到指定行::行号,回车

    插入,删除,修改文件内容:i进入插入模式,esc退出模式

    Hadoop篇

    Hadoop常用命令

    hadoop命令与linux命令非常相似,通常以hadoop fs开头

    从集群上复制文件到当前文件夹:hadoop fs -get 集群上的文件存放路径(带文件名)./

    将集群上同一个文件夹下的所有文件合并成一个文件,放在当前文件夹中:hadoop fs -getmerge 集群上的文件存放路径(不带文件名) 合并后的文件名

    运行时根据JobID修改map.capacity:例 hadoop job -set-map-capacity JobID 3000

    查找指定key所在的输出文件编号:KeyFieldBasedPartitioner key 总文件个数,例如输出文件有1000个,依次为part-00000.gz,part-00001.gz,……part-00998.gz,part-00999.gz,想知道key =『大米』的记录在哪个文件,可以采用命令『KeyFieldBasedPartitioner 大米 1000』,若返回66,则表示key =『大米』的记录全在part-00066.gz文件中。

    Hadoop作业的参数设置

    hadoop作业模板

    job_name                =  作业名称

    mapper                   =  python map文件名.py 

    reducer                   =  python reduce文件名.py

    input                  =  输入路径

    output                =  输出路径 

    mapred.map.tasks        =  3000

    mapred.reduce.tasks        =  10000

    mapred.job.map.capacity    =  10000

    mapred.job.reduce.capacity  =  5000

    # "file =" 将本地文件分发到集群上的每个计算节点

    file        =  程序运行时所需要的可执行文件、脚本或者配置文件

    策略篇

    评估一个特征的修改对其他特征造成的影响

    特征按纯度可以划分为基础特征和组合特征。顾名思义,组合特征是将多个特征通过函数变换组合起来。基础特征的变动,可能导致相应组合特征的变动。

    如何评估一个特征的修改对其他特征造成的影响呢?常用方法是做对比实验。在同一个数据集上,分别运行修改特征前和修改特征后的代码,然后观察特征值的变化情况,并对变化作出解释。

    正式上线的代码需要处理超大规模的数据,而我们自己测试时,可以只抽取少量数据,节省时间。

    评估新增的功能有没有生效

    基本方法也是做对比实验。重要的事情要重复说才会印象深刻。特别强调一点,和评估特征修改的影响面类似,新增的功能导致输出结果的变化要符合预期,即只改变你预期中它该变化的地方,不改变预期中它不应该变化的地方。

    相关文章

      网友评论

        本文标题:数据挖掘工程师的第一个月(附带干货分享)

        本文链接:https://www.haomeiwen.com/subject/rwfzrttx.html