出色代码成就机器学习:数据科学的软件工程技巧和最佳实践( 二 )
1.清理代码
本文插图
代码质量最重要的维度是清晰 , 清晰易读的代码对于协作和可维护性至关重要 。 这样做可以帮你获得更简洁的代码:
· 使用有意义的描述性和暗示型变量名 。 例如 , 如果要声明一个关于属性(例如年龄)的布尔变量来检查一个人是否老了 , 那么可以使用is_old使其既具有描述性又具有类型信息性 。 声明数据的方式也是一样的:让它具有解释性 。
# not good ... import pandas as pd df = pd.read_csv(path)# better! transactions = pd.read_csv(path)
· 避免使用只有你能理解的缩写和没有人能忍受的长变量名 。
· 不要直接在代码中编码“魔术数字” 。 在变量中定义它们 , 以便每个人都能理解它们所指的内容 。
# not good ... optimizer = SGD(0.0045, momentum=True)# better ! learning_rate = 0.0045 optimizer = SGD(learning_rate, momentum=True)
· 遵循PEP8约定给对象命名:例如 , 函数和方法名用小写字母表示 , 单词用下划线分隔 , 类名遵循UpperCaseCamelCase约定 , 常量用大写字母表示 , 等等 。
· 使用缩进和空格使代码更加美观 。 有一些标准约定 , 例如“每个缩进使用4个空格” , “单独的节应该有额外的空行”等等 。
本文插图
图源: prettier.io/
2.使代码模块化
当你开始构建可以在相同或其他项目中重复使用的东西时 , 你必须将代码组织为逻辑功能和模块 , 这有助于构建更好的组织和可维护性 。
例如 , 你正在研究NLP项目 , 并且你可能具有不同的处理功能来处理文本数据(标记 , 剥离URL , 修饰词等) 。 你可以将所有这些单元放入名为text_processing.py的python模块中 , 然后从中导入它们 , 主程序将更轻巧 。
这是有关编写模块化代码的一些技巧:
· 不要自我重复 。 尽可能泛化或合并你的代码 。
· 函数应该用来做一件事 。 如果一个函数执行多项操作 , 则很难被概括 。
· 在函数中抽象逻辑 , 但又不要过度设计 , 否则最终可能会有太多的模块 。 运用你的判断力 , 如果你没有经验 , 请查看scikit-learn等流行的GitHub存储库 , 并学习其编码风格 。
3.重构代码
重构旨在重新组织代码的内部结构 , 而不改变其功能 , 通常是在有效(但仍未完全组织)的代码版本上完成的 。 它有助于消除重复功能 , 重组文件结构 , 并添加更多抽象 。
本文插图
图源:unsplash
4.提高代码效率
编写高效的代码以快速执行并消耗更少的内存和存储空间 , 是软件开发中的另一项重要技能 。 编写高效的代码需要多年的经验 , 但是以下一些小技巧可以帮助你确定代码是否运行缓慢以及如何提高代码运行速度:
· 在执行任何操作之前 , 请检查算法的复杂性以评估其执行时间 。
· 通过检查每个操作的运行时间来检查脚本可能遇到的瓶颈 。
· 尽可能避免for循环并使操作向量化 , 尤其是在使用NumPy或pandas等库的情况下 。
· 通过使用多处理来利用计算机的CPU内核 。
5.使用GIT或任何其他版本控制系统
使用GIT + Github帮助我提高了编码技能 , 更好地组织了项目 。 由于我是在与朋友和同事合作时使用它的 , 所以我遵守了过去不遵守的标准 。
本文插图
推荐阅读
- 项羽|王者荣耀: 突然成就T0边路, 双重真伤无克星, 出反甲伤害提升40%
- 杨幂|《仙剑3》11年,成就胡歌,成就杨幂,她却因留长发恢复性别被毁
- 小莹游戏故事|被低估的ADC:走A怪韩服发挥出色 RNG铁粉送出走心祝福
- |40岁以后的女人,应当学会的日式穿搭美学,成就更好的自己
- 募集资金|报到!日久光电:10月21日在深交所上市,代码003015,发行价6.57元/股
- 行业互联网池州市:小芯片,成就大产业
- 央视网|【"十三五"成就巡礼】五年间构建全方位开放新格局
- 【"十三五"成就巡礼】五年间构建全方位开放新格局
- 爱搞笑的旗旗|会成就一番事业,幽默笑话:您当年说我前途无量
- 美容|“静”观时光流转,成就至美无限 法国娇兰正式宣布宁静成为品牌黑兰大使
