关闭

一个好的算法工程应该具备哪几点要素?

522人阅读 评论(0) 收藏 举报
分类:

原址

● 每周一言

为人处世,分寸很重要。

导语

作为码农界的芸芸众生,我们几乎每天都会接触到各式各样的工程项目。一方面,一些工程项目往往具有相似的实现;另一方面,这些工程又存在一个二次开发的问题。为了提高开发效率,避免重复造轮子,工程级别的代码要求通常比较高。而作为一名算法从业者,我想在这里谈一谈一个好的算法工程应该具备哪几点要素。

抛砖引玉

项目经验不同、语言熟练程度不同、算法实现能力不同的人,对于一段相同功能的代码实现也会有所不同。毛爷爷说过,凡事就怕认真二字。因此这里我们不妨抛开这些短时间难以改变的差异,谈一谈只需要通过认真就能做到的几点,而这几点也正是一个好的算法工程所应具备的要素。 

fig1

其一,功能模块代码层次分明。 
实现一个数据挖掘的算法工程,从底层数据输入到顶层结果输出,至少需要这四步:数据预处理、特征提取、模型训练、模型预测。这四步就是四个功能模块,而每个功能模块之间的代码只有层次分明才能做到在二次开发的时候,不牵一发而动全身。

其二,抽象功能与具体功能分开实现。 
抽象和具体的区别,面向对象里面已经被说透了。在算法工程中,比如数据预处理模块的输入,有可能是日志、数据库、或者集群数据,如果对每一种数据源的预处理都单独来写,后期代码的修改与扩展将会变得混乱且容易出错。因此,需要剥离抽象功能与具体功能,这里的抽象功能是指结构化的数据字段接口,而具体功能指的则是对接各种具体数据源的接口实现类。 

fig2

其三,逻辑实现有较清晰注释。 
最难懂的代码,并不是别人的代码,而是没有注释的代码,甚至包括自己的代码。在算法工程项目中,由于模型需要升级换代,常常需要阅读前人所写代码,自己的代码也有可能留给后人阅读。由于不同人的思维习惯、语法习惯不尽相同,展现出来的代码有可能大相径庭,因此一定要写注释,尤其是逻辑实现部分,注释越清晰越好。

其四,功能模块输入输出可配置化。 
对于算法工程的复用和交接,可配置化算是一个最直接的诉求了。功能模块的输入输出可配置化,意味着趋近零的学习成本,让项目在新的场景下能很快地实现部署和运行。具体而言,输入输出可配置化的参数包括但不限于数据类型、数据位置、比较条件、处理方式等。 

fig3

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

一个合格的运维工程师应该具有的素质

网上看到有人写了一篇文章,关于一个合格的运维工程师应该具体哪些素质,正好前段时间有位boss也问过我这个问题。 简单地写下自己的看法。。 1.良好的责任心 ops是直接面向生成环境的一线操作人员,...
  • u011730737
  • u011730737
  • 2013-08-18 10:34
  • 1428

一个好的硬件工程师应该具备哪些基本知识和能力呢?

优秀的硬件工程师应该具备哪些基本知识和能力? - 工程师职场 - 电子发烧友网 http://www.elecfans.com/engineer/work/20160621423650.html ...
  • tdshawn
  • tdshawn
  • 2016-08-04 08:44
  • 3070

php程序员应具备的7种能力:

一个优秀php程序员应具备什么样的能力,才能更好的完成工作,才会有更好的发展方向呢?下面7种能力希望对您有所帮助。 一,php能力 1,了解阶段,您能写一些代码,因为那是在手册和google的帮助...
  • zhoujn90
  • zhoujn90
  • 2013-05-20 23:23
  • 11151

一个好的网页想要让客户浏览的时间必须具备的七个要素

网页设计的话题总是绕不开用户体验;网站建设拥有一个能得到用户肯定才能立足于互联网的大环境。把过去的拟物化、table布局拿到现在继续使用,那必定是死路一条。
  • huazhiyp88
  • huazhiyp88
  • 2017-04-13 15:46
  • 289

在开发板上搭建一个linux系统具备要素-ok6410

三要素: bootloader(u-boot) linux内核(嵌入式) 根文件系统 1. 编译uboot 从国嵌相关视频文档中通过samba拷贝到linux系统home文件夹下,建立好清晰...
  • qq_19875391
  • qq_19875391
  • 2016-08-08 08:57
  • 498

优秀网游的几点要素

2001年,家里的电脑接入了宽带,从此便开始了我的网游之旅。记得我玩过的第一款、也是玩的时间最久的网络游戏名叫《天骄》,至今已经有10年之久,现在仍在目标软件的指挥下正常运营。这是国内早期的2D图形网...
  • tracker_w
  • tracker_w
  • 2012-08-21 21:55
  • 1922

程序员修炼之道系列 - 优秀程序员应该具备的基本要素

作为一名职业程序员,需要总结一下程序员职业发展的基本要素,我们不讨论如何学习一门语言,如何实现高效优质的程序,而是从方法论的角度来看待程序员自身的积累与发展。           作为一名职业程序员首...
  • byhankswang
  • byhankswang
  • 2013-06-26 17:36
  • 801

以营销为目的网站应该具备几点?

企业想要建一个网站,看着简单,其实没有那么容易,并不是有网站就可以盈利。别人的网站可以赚钱,自己的网站则是金絮其外败絮其中,被蒙在鼓里的你还等着坐享其成真是傻透了。赚钱的网站都有前提条件的,每一个以营...
  • sundaytozhang580
  • sundaytozhang580
  • 2015-09-17 20:04
  • 170

利用Opencv3.2中的DPM模块,实现DPM算法对行人的检测,一个完整的实现,含有注释和完整的工程文件,环境为win7+vs2013

  • 2017-09-07 16:34
  • 23.39MB
  • 下载

编写高效Vivado HLS工程testbench的三个要素

  • 2013-10-19 22:03
  • 18KB
  • 下载
    个人资料
    • 访问:617703次
    • 积分:10763
    • 等级:
    • 排名:第1787名
    • 原创:303篇
    • 转载:1104篇
    • 译文:0篇
    • 评论:61条
    联系方式
    QQ群:413135688
    博客专栏
    文章分类
    最新评论