专栏首页CDA数据分析师数据科学与人工智能从业者如何提升编程能力

数据科学与人工智能从业者如何提升编程能力

大数据文摘出品

来源:medium

编译:Hippo

我讨厌编程!

这是我七年前在实习期间告诉同龄人的话。千真万确。我不想像公交上那些面无表情的人那样成为没有感情的编程机器。

时至今日,我已经获得了2个编程相关专业的研究生学位,先后在5家不同公司中担任网络开发人员,目前担任计算机视觉工程师职位。

我热爱编程!

这是我告诉所有问我为何如此热衷技术的人的话。我对编程的热爱源于这样一个认识:使用代码实现的应用确实为如今这个技术驱动的社会带来了机遇。

本文介绍培养和提高我的编程能力的方法。这里将提供5种可以用来提高编程技能的策略。

算法练习

算法常常会吓跑很多机器学习从业者,我自己也不例外。机器学习领域的兴起使得通过启发式算法来检测模式的传统方法不再成为必须,我们将特征检测留给了神经网络。

尽管如此,算法仍在软件和计算领域中占有一席之地,并且肯定在机器学习领域中也不可或缺。算法练习是提高编程技能的利器之一。

除了在提高代码内存效率的灵感方面具有显而易见的好处,研究算法的另一个 好处是能很好的培养解决问题的思维方式。

用你所选择的编程语言实现探索各种数据结构和数据修改方法的算法。了解如何利用数据对象、方法和其他有用的函数提高编程效率。

数据科学家经常使用数据挖掘和网络爬虫算法。充分了解算法和数据结构有助于生成高效的代码,在实践中执行速度更快,进一步减少项目交付时间。

不同算法的复杂程度也不尽相同,这里有一个供你热身的简单算法说明。相关链接可以参考这里:

https://towardsdatascience.com/algorithms-for-data-scientists-insertion-sort-6caa69f906b3

个人经验

作为移动计算机视觉工程师(Mobile Computer Vision Engineer),我将许多深度学习模型用于常见的计算机视觉(CV)任务中,例如姿势评估、对象检测等。

尽管PyTorch、TensorFlow和Keras等平台转移了模型实现的复杂性,但我发现有必要针对特定用例实现自定义算法。

例如,创建基于余弦相似度的姿态匹配算法或有效地遍历作为机器学习模型输出的数据结构。

为了确保我对各种算法的风险有足够的了解,我买了一本很好的教材——《Introduction to Algorithm(第三版)》。不过这本教材可能对初学者并不是特别友好,在这种情况下,特别推荐诸如HackerRank这样的平台。

技术书籍

书本学习让我感到自己回到了校园,没有什么能比语言生动、内容详实的书籍更让人受益匪浅。

在我职业生涯的早期,我一直以为自己最终会停止观看YouTube教程或是购买编程书籍,因为我已经获得了“忍者级”的编程技能。

然而几年来,我意识到无论已经到了哪个程度,都能了解到更多关于编程语言的知识。尽管我喜欢通过YouTube编程教程进行学习,但没有什么能取代经典编程技术书籍中丰富而简洁的知识。

例如,Python对于数据科学家来说算是一种易于掌握的标准编程语言。经过几周的语法、数据结构和通用函数的学习,可以轻松实现和运行自定义python脚本。你可以进一步通过视频学习具备Python的中级技能。

但是,Python中可以探索的内容还有很多,而且都可以提高你的编程技能。我学习有关Python语言的更深入内容的方式之一就是通过技术书籍,更具体地说是《Fluent Python》。本书并不适合初学者使用,而是主要针对中等以上水平的程序员提高编程熟练程度。

总之,技术书籍可以通过对编程语言简单清晰的介绍来提高数据科学家的编程水平,也可以通过对编程语言的深入阐述,提高数据科学家的现有编程技能。

阅读其他开发者的代码

最近,我尝试实现深度学习卷积神经网络Inception Network。

尽管我已经有利用Python和TensorFlow库实现的方法,但我对其他机器学习从业人员如何实现很是好奇。

我探索性的浏览了几个GitHub库,研究了其他开发人员的代码,毋庸置疑,我学会了改进已有方案的方法,并且更好的应用了我现有的编程技能。

有大量的公共GitHub库可供研究和学习。你不需要在Google或Facebook之类的技术公司工作就可以向他们的开发人员学习。只需浏览其工程师开发的项目的公共库。对于数据科学家来说,这可能意味着探索诸如最近发布的Detectron2或其他开源机器学习工具之类的代码库。

在工作场所的内部开发团队中进行代码审查也是一种合适的学习方法。通过了解其他开发人员实现方法背后的理由和思路,你可以间接扩展自己的视野和编程知识。

学习不同的编程语言

致力于编程语言多样性是提高编程水平的不二之法。程序员用代码来解决问题,多种编程语言的知识扩展了可用于解决问题的工具。

掌握Python可能会帮助您学习数据科学核心的实际应用。但在专业和实践环境中,软件开发包含不同的平台,每个平台都有用于访问和实现功能的特定语言。

专业的机器学习从业人员可能会在以下所示的方法中应用不同的编程语言:

  • JavaScript从互联网上抓取数据
  • SQL修改和查询数据库
  • Python实现算法和机器学习模型
  • Swift / Kotlin / Java开发具有集成机器学习模型的移动设备应用程序
  • 其他工具和方法

一旦您精通某种编程语言,掌握一种新的编程语言会容易很多。如果您了解常规的软件开发范例,例如面向对象的编程、功能编程等,你将更加容易进入状态。软件开发范例知识适用于各种编程语言。

遵守软件开发原则

拥抱简单,避免重复并提高可读性。

这些是我多年编程后积累的经验。它们听起来很简单,但是大多数开发人员都没有遵守,我自己有时也会忘记这些原则。

因此,在软件工程业内,一些准则被反复提倡和强制实施,以确保开发人员进行简洁有效的软件开发。一些列出其中的一部分。

KISS原则

去繁就简(Keep It Simple Stupid,KISS)在开发软件时强调了简洁这个概念。解决问题的方法不必太复杂,在软件开发的设计和实现阶段采用简洁原则可以确保代码容易理解和便于维护。

是的,技术人员往往喜欢炫技,但为了便于阅读,请保持简单——美剧you are not MR.Robot

SOLID原则

Solid原则包含一组旨在确保面向对象的开发人员构建可复用、可扩展、可维护和高效的程序的原则。要了解有关SOLID中涵盖的原理的使用和实践的更多信息,请查看Katerina Trajchevska视频中的内容。

相关链接:

https://www.youtube.com/watch?v=rtmFCcjEgEw&ab_channel=LaraconEU

单一责任原则(Single responsibility principle)

开闭原则(Open-Closed principle)

里氏替换原则(Liskov Substitution principle)

接口分离原理(Interface segregation principle)

依赖倒置原则(Dependency inversion principle)

DRY原则

不要重复自己(Don’t Repeat Yourself)。在编写程序时,编写执行已有功能的代码会浪费你的开发时间。避免重复的一个好习惯是利用项目文件夹中的实用程序文件。实用程序文件包含在源代码中经常执行的常见任务。

特别提及

个人项目

开展个人项目可以将数位机器学习从业者带入新的领域、库、平台、框架和编程语言。

开展个人项目来提高你的编程技能的主要优势在于开发软件产品时会遇到各种问题。编程解决的每个问题都会增加你的整体技术水平。

分享经验

教他人如何应用你擅长的语言编写程序是一种行之有效的方法,可以提高编程技能并展示你的专业知识。

你可以通过YouTube视频、在线课程或我最喜欢的媒体博文等多种方式分享经验。

结论

提升编程技能是一次没有终点的旅程。您总是可以在编程方面学习或改进。

尝试着享受学习过程。

有时情况确实很棘手,StackOverflow可能无法解决所有问题,但请记住磨练你的技巧所花费的每一分努力都是最终融会贯通所必需的。

相关报道:

https://towardsdatascience.com/how-to-improve-programming-skills-for-data-scientists-and-machine-learning-practitioners-d865d8aadab1

本文分享自微信公众号 - CDA数据分析师(cdacdacda)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-01-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 携手合作伙伴,腾讯青少年人工智能教育宣布产品、内容、工具三大升级

    4月20日,由腾讯教育主办的第二届MEET教育科技创新峰会(简称“MEET教育科技峰会”)在北京举办,在“青少年人工智能教育分论坛”上,腾讯宣布升级“青少年人...

    鹅老师
  • 腾讯教育携手行业名师共聚厦门,研讨中小学人工智能教育发展

    “人工智能来了,如何向广大青少年普及和推广?”“各大中小学校如何开展人工智能普及的有效模式?”“在人工智能教育方面,中小学校的老师们如何取得新的突破与成绩?”...

    鹅老师
  • 腾讯王涛:科技与教育深度融合 构建未来教育新图景

    11月25日,在2019未来教育大会(GES)上,腾讯云副总裁、腾讯教育副总裁王涛发表了《腾讯教育的科技实践与思考》主题演讲。 王涛认为,教育体系的每一次革新...

    腾讯智慧教育
  • 浙大吴飞教授:尽管AlphaGo Zero已强大到从经验中学习模型,我也绝不赞同马斯克和霍金的威胁论,人才是智能的最终主宰

    记者 | 鸽子 在整个采访过程中,吴飞教授在回答中给人的最大感受是温和、儒雅。他没有激烈的言辞,也没有犀利的观点,不会一开始直接抛出自己的判断,而是将所有的提问...

    AI科技大本营
  • 机器人也来写稿了,媒体记者、编辑的饭碗还端得稳吗?

    人工智能在传媒领域的实践已从最初的数据搜集,延展到内容生产、渠道分发等各环节。未来,在传媒业,人工智能可能取代人力吗,它会给这个行业带来哪些改变和影响? 作者 ...

    企鹅号小编
  • WAIC 2020 微软论坛精彩全回顾!

    2020年,新冠疫情的肆虐放缓了全球经济增长的步伐,也提醒着我们,尽管科技发展突飞猛进,人类社会和自然环境仍然面临诸多挑战:自然灾害、流行病、贫穷、污染、饥饿等...

    AI科技评论
  • 互联网人才趋势报告:AI猎场“百万级”人才缺口

    作者:Boss直聘 2017年互联网人才是如何发展的?2018年又会有哪些趋势呢?2018年1月10日,Boss直聘发布《2017互联网人才趋势白皮书》,本文...

    钱塘数据
  • 观点丨为什么人工智能是中间阶层的噩梦?

    导读:面对人工智能的突飞猛进,从经济到产业,从政策到法律,从社会到伦理,我们真的已经做好准备了吗? 12月6日,亚马逊即将开业的线下生鲜实体店AmazonGo...

    钱塘数据
  • 用NumPy写深度模型,用Julia可微分编程写函数,这是WAIC开发者日

    WAIC 世界人工智能大会已于近日在上海开幕。在昨天由机器之心承办的开发者日主单元上,阿里技术副总裁贾扬清、亚马逊机器学习副总裁 Alex Smola、百度 A...

    机器之心

扫码关注云+社区

领取腾讯云代金券