一个好的算法工程应该具备哪几点要素?
来源:互联网 发布:航天数据股份有限公司 编辑:程序博客网 时间:2024/06/06 12:37
原址
● 每周一言
为人处世,分寸很重要。
导语
作为码农界的芸芸众生,我们几乎每天都会接触到各式各样的工程项目。一方面,一些工程项目往往具有相似的实现;另一方面,这些工程又存在一个二次开发的问题。为了提高开发效率,避免重复造轮子,工程级别的代码要求通常比较高。而作为一名算法从业者,我想在这里谈一谈一个好的算法工程应该具备哪几点要素。
抛砖引玉
项目经验不同、语言熟练程度不同、算法实现能力不同的人,对于一段相同功能的代码实现也会有所不同。毛爷爷说过,凡事就怕认真二字。因此这里我们不妨抛开这些短时间难以改变的差异,谈一谈只需要通过认真就能做到的几点,而这几点也正是一个好的算法工程所应具备的要素。
其一,功能模块代码层次分明。
实现一个数据挖掘的算法工程,从底层数据输入到顶层结果输出,至少需要这四步:数据预处理、特征提取、模型训练、模型预测。这四步就是四个功能模块,而每个功能模块之间的代码只有层次分明才能做到在二次开发的时候,不牵一发而动全身。
其二,抽象功能与具体功能分开实现。
抽象和具体的区别,面向对象里面已经被说透了。在算法工程中,比如数据预处理模块的输入,有可能是日志、数据库、或者集群数据,如果对每一种数据源的预处理都单独来写,后期代码的修改与扩展将会变得混乱且容易出错。因此,需要剥离抽象功能与具体功能,这里的抽象功能是指结构化的数据字段接口,而具体功能指的则是对接各种具体数据源的接口实现类。
其三,逻辑实现有较清晰注释。
最难懂的代码,并不是别人的代码,而是没有注释的代码,甚至包括自己的代码。在算法工程项目中,由于模型需要升级换代,常常需要阅读前人所写代码,自己的代码也有可能留给后人阅读。由于不同人的思维习惯、语法习惯不尽相同,展现出来的代码有可能大相径庭,因此一定要写注释,尤其是逻辑实现部分,注释越清晰越好。
其四,功能模块输入输出可配置化。
对于算法工程的复用和交接,可配置化算是一个最直接的诉求了。功能模块的输入输出可配置化,意味着趋近零的学习成本,让项目在新的场景下能很快地实现部署和运行。具体而言,输入输出可配置化的参数包括但不限于数据类型、数据位置、比较条件、处理方式等。
阅读全文
0 0
- 一个好的算法工程应该具备哪几点要素?
- 一个好的算法工程应该具备哪几点要素?
- 一个好的程序员应该具备..
- 优秀创业者应该具备的要素
- 一个好的网页想要让客户浏览的时间必须具备的七个要素
- 一位好的软件工程应该具备什么?
- 一个好的硬件工程师应该具备哪些基本知识和能力呢?
- 一个程序员应该具备的基本素质
- 一个程序员所应该具备的精神
- 一个tester应该具备的基本素质
- 一个成功人士应该具备的能力
- 好的电子简历网站应该具备的功能
- 一款好的app应该具备的特点(一)
- 一个好的程序员应该具备的能力(这也是面试时考察求职者的能力)
- 写好Linux设备驱动应该具备的?
- 开发者应该具备的15个编程好习惯
- 好的Java 框架应该具备七大特点
- 程序员应该具备好的代码格式规范
- 入离职管理系统——如何实现多条件查询
- [HDU6071][2017多校第四场][Lazy Running]
- 链表算法整理
- Git 的 .gitignore 配置
- JS点击按钮如何改变网页的背景颜色
- 一个好的算法工程应该具备哪几点要素?
- Python纪实:必需却又恐怖的monster --- mysql 数据库
- asp.net 伪删除
- mysql读写分离
- 【cpp】引用、指针、const
- 机器语言的理解
- 数位DP模板
- Java基础之GC回收
- map相关问题及匿名函数的问题