初级程序员应该在 2021 年学习 JavaScript 的 6 个关键原因
这种语言不仅仅是“咖啡手写”的同义词
照片由 Cookie 在 Unsplash 上的 Pom 拍摄
“为什么要学 JavaScript?”我问我妹妹,她是在大学三年级开始学习 JavaScript 基础知识的。“难道不是古代的吗?现在还有人用吗?”
我很惊讶地得知 JavaScript 是 2020 年最常用的编程语言,但我不应该这样——根据 StackOverflow 的开发者调查,它在过去的八年里一直保持这一地位。对于移动应用程序和网络开发来说,这是一门真正流行的语言。你现在看到的是一个用 JavaScript 构建的网站。
随着无代码运动站稳脚跟,初学编程的人可能想知道他们为什么要学习 JavaScript,因为有无数的 JavaScript 框架提供现成的代码,而且许多网站和应用程序可以完全免费构建。对于那些反对者,我只会说,在你开始走捷径之前,了解一些事情是如何工作的总是值得的。在我经常写的所有语言中,JavaScript 是最有可能比任何时尚都要长久的语言之一。94.5%的网站都在使用它,而万维网却寸步难行。当我问她“为什么要学 JavaScript?”我不知道它的影响有多大。
现在,稍微明智一点,我知道有几个很好的答案可以解释为什么初学者程序员尤其应该学习 JavaScript。关键是,它们围绕着开始和坚持的难易程度;学习 JavaScript 如何帮助你的编程生涯蒸蒸日上;以及 JavaScript 相对于其他语言的实际优势。
让我们来看看你,一个初学程序员,应该学习 JavaScript 的六个理由。
1.无论你想做什么,你都会是一个受欢迎的人。
找一份编程方面的工作是你应该学习 JavaScript 的首要原因。有充分的证据表明,计算机科学毕业生是最受欢迎的毕业生之一。以至于没有学位找一份编程工作变得越来越普遍。公司需要比目前大学毕业生更多的会编程的员工。
在所有的编码语言中,JavaScript 编码者接近列表的顶端,这是有充分理由的。“掌握这种关键的编程语言可以让你在全栈开发、游戏开发、信息安全软件工程、机器学习和人工智能领域继续工作,”在 CareerFoundry 的 Emily Stevens 写道。对于爱好和雇主来说,它是多才多艺的。
这种需求解释了为什么你应该学习 JavaScript: 72%的公司都在寻找 JavaScript 程序员。作为一名 JavaScript 开发人员,在美国的工资中位数大约是每年 11.2 万美元(T4)。
即使你不想以编程网站或应用程序为职业,能够用 JavaScript 创建自己的网站来托管你的作品集也会对你的求职有很大帮助。
2.它让你成为一个多才多艺的程序员。
JavaScript 是编码语言中的一种通用语言。如果你知道如何用 JavaScript 编写代码,你可以编写出无限酷的东西。JavaScript 通过帮助开发人员在网站的客户端(前端)编码获得了立足点,但最近,JavaScript 框架中增加了一些内容,使其成为使用 Node.js 在网站的服务器端或后端编码的优秀语言。
“Javascript everywhere”(即 node.js)已经真正成为默认的网络开发范例,”Tom Critchlow 在他的博客文章中写道。对于为什么你应该学习 JavaScript,他的回答很简单,那就是,不管你想用它做什么,它都是一种充满自信的语言。
此外,您可以参与一些应用程序操作,使用 React、React Native 和 electronic 创建 web 应用程序、移动应用程序和桌面应用程序。对于用 TensorFlow.js 做机器学习工作,它甚至是 Python 之类的不错的竞争者。
简而言之,如果你能学会 JavaScript,那么使用这种编码语言的主力,你几乎可以完成任何事情。不像 R,它最适合数据 viz 和统计;或者只对 iOS 有用的 Swift,JavaScript 是一种很好的语言,学习它可以完成很多不同的事情。为什么要学 JavaScript?因为它将帮助您完成您可能想要完成的大量编程任务。
3.它预装在你的浏览器中。
跑步对我来说是完美的爱好,因为除了运动胸罩和跑鞋,我不需要任何东西来锻炼。学习 JavaScript 很棒的部分原因是它有点像编码语言的运行——你不需要任何花哨的设备、开发环境或品牌教科书。如果你有一台装有浏览器的电脑,你可以用 JavaScript 编码。
即使像 Python 这样简单的语言也很难与 JavaScript 相比。当我开始学习 Python 时,为了做一些新奇的事情,我不得不尝试使用终端,这让我感到乏味和讨厌。坦率地说,这是一个障碍。同时,您的计算机已经有了 javascript GUI 和运行时。使用任何文本编辑器和浏览器,您都可以用 JavaScript 编写代码。
这使得像我这样的初学者非常容易上手。有了非常基本的了解,你就可以按照 Oreilly 的这个这样的教程,在几分钟内编写一个程序。当你可以动手做的时候,为什么要死记硬背呢?
你也可以通过浏览运行绝大多数网站的 Javascript,在任何网站上点击右键并选择“inspect”来学习。这是一种很有趣的方式,可以把预先存在的 JavaScript 拆开,看看当你改变时会发生什么。
作者截图
4.当你准备好走捷径的时候,有很多捷径。
编码可能包括许多重复的任务 JavaScript 中有一些快捷方式可以让您的生活变得更加轻松。在开始寻找捷径之前,最好先了解任何语言的基础。然而,如果你使用 Javascript 做任何严肃的事情,总有一天你会对 JavaScript 的基础有很好的理解。此时,您可能想知道如何让事情变得更简单。
普通的旧 JavaScript(也称为“普通”JavaScript)可以做很多事情,但是当您掌握了基础知识后,您就可以开始利用 JavaScript 库和框架中的许多快捷方式了。
这些资产有预先编写好供您使用的现成 JavaScript 代码。这些框架就像一个结构,已经构建了许多元素和组件,可以随时使用或修改。它可以帮助您更快、更轻松地构建您正在构建的任何东西。
这是从零开始建造房子和来到一个已经有蓝图甚至一些家具的房子之间的区别,可以让你更快地建造你的梦想家园。你仍然在做这项工作——你需要了解这些基础是如何工作的,否则你会冒着把整个东西拆掉的风险,因为你不知道你在做什么——但是把房子准备好更简单。
5.你会找到学习的方法。
许多人会问,“既然有这么多更新的语言,为什么还要学习 JavaScript?”当我列出 2021 年最流行的编码语言时,我注意到了一个明显的缺陷。一方面,Rust、Go 和 Swift 等相对较新的技术正在迅速普及,但还没有真正广泛的学习方法。 Swift 和 Go 是公司赞助的(分别是苹果和谷歌),而 Rust 用户是极少数。无论在社区中有多受欢迎,这些都是学习资源有限的前沿用户。
相比之下,我还回顾了 Python、Perl 和 JavaScript 等经受了多年考验的语言。由于存在的时间更长,他们有一个更发达的资产库。有更多的免费 JavaScript 基础课程,更多的教程,更多的 YouTube 视频,更多的免费教科书。另外,有一个更大的开发者社区可以帮助你解决基本的错误和问题,比如 StackOverflow、Discord 和 newsletters。
当你学习一门新的语言时,知道你并不孤单,依靠你周围的社区会有很大的帮助。JavaScript 拥有一代又一代忠实的程序员,他们非常乐意将自己的专业知识借给任何还在为基础知识而奋斗的程序员新手,他们在互联网上到处闲逛。那种群体感觉可以成就或摧毁你坚持使用一种语言的能力。
6.JavaScript 可以让你成为一名文艺复兴时期的程序员
现在只懂一种编码语言就不错了,但是大部分工作都要求你可以用多种语言编码。出于上面列出的原因,JavaScript 是第一种语言的有力竞争者,但也因为它是您可能想要学习的任何未来编程语言的极好入门。JavaScript 的好处本身就很棒,但是知道首先学习 JavaScript 对于任何有前途的程序员来说都是一个很好的赌注。
许多语言相互借用概念,或者是为了弥补另一种语言的不足而构建的。JavaScript 是为数不多的具有完全可转移技能的语言之一,当你开始学习另一种编程语言时,它可以帮助你迅速进入状态。为什么要学 JavaScript?因为它会帮助你学习 Python,或 C++,或任何其他类似的语言。
为什么要学 JavaScript?最后的想法
这种语言不仅仅是 coffee 手写的同义词——它是初学者在职业生涯中立即使用的完美编程语言,也为任何未来的开发提供了一个完美的起点。它是完全面向未来的,因为几乎所有的网络都依赖于它。为什么要学 JavaScript?总结一下我上面列出的理由,你应该学习 JavaScript 的理由是:
-这是一种多功能语言
-这很容易上手
-有一套全面的框架和库,让您的生活更轻松
-该社区已经根深蒂固,非常出色
这是一项非常受欢迎的专业技能
-它可以帮助你学习下一门编程语言。
换句话说,它是一门伟大的语言,可以帮助你在个人生活和职业生活中取得很多成就。在 2021 年你可以开始学习的所有编程语言中,JavaScript 肯定排在首位。
6 个数据科学证书提升您的职业生涯
充实你的投资组合,离你梦想的工作更近一步
路易斯·基根在 Unsplash 上的照片
由于数据科学领域的吸引力和高收入的前提,每天都有越来越多的人决定加入该领域。有的可能是技术出身,有的只是出于好奇而加入;不管你决定进入这个领域的原因是什么,你的首要目标可能是拥有一个强大、可靠的投资组合,帮助你获得你想要的工作。
那么,你如何增加你的投资组合的吸引力呢?
虽然进入数据科学领域不一定需要任何学位或证书,但有时拥有一些学位或证书可以帮助你在申请工作时在申请人中脱颖而出。
一个好的数据科学项目组合的要素是收集能够展示您的技能、证明您的知识以及展示您构建可靠的数据科学项目的能力的项目。这是一个好的投资组合的核心,但你也可以添加一些证书,证明你投入了时间、精力和金钱来磨练你的技能,成为一名更合格的数据科学家。
幸运的是,并不是所有的证书都要求你去考试中心。事实上,大多数令人向往的数据科学证书都可以在舒适的沙发上获得。
这篇文章将向你展示 6 个非常值得拥有的证书,你可以通过它们来增加获得实习或理想工作的机会。
微软认证:Azure 数据科学家助理
微软是技术和软件的领军人物之一;他们提供一个证书,旨在衡量你运行实验、训练机器学习模型、优化模型性能以及使用 Azure 机器学习工作空间部署模型的能力。
要获得这个证书,你需要通过一个考试,你可以用两种方法中的一种来准备这个考试。微软提供免费的在线资料,你可以自学来准备考试。如果你更喜欢有一个导师,他们还提供一个付费的选择,Azure 机器学习导师可以辅导你。
这项考试将花费大约 165 美元。价格根据你监考的国家而有所不同。
</11-books-to-help-gain-the-knowledge-you-need-to-be-a-data-scientist-f0df36ac6cb5>
IBM 数据科学专业证书
该证书来自 IBM,在一系列课程结束时提供,让您按照自己的进度从一个完全的数据科学初学者变成一名专业的在线数据科学家。
IBM 数据科学专业证书在 Coursera 和 edX 上都有提供。无论在哪个平台上,你都必须完成一系列涵盖所有数据科学核心知识的课程,完成后才能获得证书和 IBM 徽章。
要获得 Coursera 的证书,你需要每月支付 39 美元的费用,所以你越早完成这个系列,你需要支付的费用就越少。另一方面,edX 要求 793 美元的完整课程体验,不管你要讲多长时间才能完成。
谷歌专业数据工程师认证
谷歌的专业数据工程师认证旨在考察你成为一名合格的数据工程师所需的技能。数据工程师可以做出数据驱动的决策,建立可靠的模型,训练、测试和优化它们。
你可以通过谷歌官方证书页面直接申请获得这个证书,也可以在 Coursera 上参加一个课程系列和证书。这些课程将教会你所有你需要知道的机器学习和人工智能基础知识,并建立有效的数据管道和分析。
要访问 Coursera 上的课程系列,您需要拥有 Coursera Plus 或支付每月 49 美元的费用,直到您完成系列课程并获得证书。
</7-tips-for-data-science-newbies-d95d979add54>
Cloudera 认证专家(CCP)数据工程师
Cloudera 面向开源开发者,并为开发者提供 CCP 数据工程师证书,以测试他们在 Cloudera CDH 环境中高效收集、处理和分析数据的能力。
为了通过这次考试,你将有 5~10 个数据科学问题,每个问题都有自己的大型数据集和 CDH 聚类。你的任务将是为这些问题中的每一个找到一个高精度的解决方案,并正确地实现它。
要参加这次考试,你需要在考试中取得至少 70%的分数。考试将持续 4 个小时,费用为 400 美元。你可以在网上任何地方参加这个考试。
SAS 认证的人工智能和机器学习专家
与我们到目前为止讨论的证书不同, SAS AI &机器学习专业证书是通过测试三种不同技能集的三次考试获得的。获得证书需要通过的三个考试是:
- 机器学习考试,将测试您构建、训练、测试性能和优化监督机器学习模型的技能。
- 预测和优化测试。在这项测试中,将测试您处理、可视化数据、构建数据管道和解决优化问题的能力。
- 自然语言处理和计算机视觉测试。
SAS 免费提供 30 天的准备材料,帮助你准备好参加并通过这三项考试。
</6-nlp-techniques-every-data-scientist-should-know-7cdea012e5c3>
TensorFlow 开发者证书
TensorFlow 是广泛用于机器学习、人工智能和深度学习应用的软件包之一。 TensorFlow 开发者证书颁发给开发者,展示他们使用 TensorFlow 开发机器学习和深度学习问题解决方案的能力。
完成深度学习就可以准备这个证书了。AI TensorFlow 开发者职业证书 Coursera 课程系列。一旦你获得了这个证书,你的名字和照片将被添加到谷歌开发者网页上。
TensorFlow 开发者证书有效期为 3 年。之后,您需要重新参加测试,以保持您的技能水平与 TensorFlow 软件包的最新更新保持同步。
外卖食品
如果你问任何一位数据科学家,他们是否需要学位或证书来获得工作角色,大多数人会告诉你,他们是从一个非技术背景进入数据科学的,带着一颗好奇的心,只想了解更多。
即使你可以通过自学数据科学的核心概念并构建现实生活规模的项目或可以轻松应用于现实生活数据的项目来成为一名数据科学家并获得一份好工作,但有时拥有证书可以帮助你的投资组合脱颖而出,并将招聘人员的目光吸引到你身上。
因为数据科学是当今最受欢迎的领域之一,你会在网上找到大量的教程和指南,告诉你如何成为一名“优秀的数据科学家”或“如何获得你梦想中的数据科学职位?”。更不用说你可以获得大量的证书和免费的课程来提高你的技能。
我曾经和你一样,被外面关于数据科学和如何进入这个领域的大量信息所淹没。但是,我总是欣赏简单,直截了当的文章,不要把话题拖得太长。
我写这篇文章的目的是给任何希望获得数据科学证书的人提供一些想法,以证明他们的起步能力和什么样的证书被认为是有价值的。它肯定会给你的简历或作品集增加一些价值。
6 个数据科学播客,随时随地学习新知识
充分利用你的时间。
Juja Han 在 Unsplash 上的照片
生活会变得非常忙碌。我们每天都要应付这么多杂务和责任。对一些人来说,坐下来学习并不总是可行的。要么你有一大堆工作要做,一个婴儿需要你的照顾,要么你被所有的事情压得喘不过气来。
通常,学习新的东西,更新你的知识,或者跟上这个领域的最新消息,并不是一件容易的事情。你必须安排特定的时间坐下来真正做这些事情。这也不总是可行或简单的。
幸运的是,科技拯救了我们。播客可以成为新信息、新研究成果、甚至熟悉该领域新名字的金矿。当你已经在做其他事情的时候,播客提供了一个学习新事物的好方法。通勤上班,在健身房锻炼,跑步,烹饪和许多其他活动,你可以使用播客来充分利用你的时间。
播客可以通过不同的应用程序或提供商获得,也许最著名的是 Spotify、苹果播客、Pocketcasts,甚至是浏览器。无论你使用哪一个,你都会发现我们将在本文中讨论的所有播客。
在本文中,我将帮助您浏览一些最好的数据科学播客,您可以随时收听这些播客来丰富和扩展您的知识库。不仅如此,还要倾听人们的工作故事和他们的学习之旅,以学习他们的见解和经验。
№1:超级数据科学
让我们从超级数据科学播客开始这个列表。这个播客提供了广泛的机器学习主题、人工智能和一般数据科学的知识。它提供了来自学术界和工业界的观点,让你了解整个领域的最新进展。
如果你正在寻找一个讨论研究主题、进入数据科学、在数据科学中找工作、该领域的深入技术方面的播客,或者你只是好奇想听听其他人在数据科学领域的旅程并学习他们的见解,这个播客就是为你准备的。SuperDataScience 播客几乎每 3 天就有一集新内容。
</6-machine-learning-certificates-to-pursue-in-2021-2070e024ae9d>
№2:数据科学中的女性
有时,女性发现自己被排除在外,在技术领域代表性不足。然而,我最喜欢数据科学领域和社区的一点是,它比许多其他领域有更好的性别平衡。名单上的第二个播客是数据科学中的女性播客。
本播客主持来自数据科学各个领域的不同杰出女性。他们讨论他们的工作,他们的旅程,他们在学术界和工业界的经历。播客讨论了数据科学的不同应用领域,从医疗保健到人权等等。
№3:家庭数据科学
我们现在都被困在家里一年了——或多或少取决于你在哪里。所以这个播客的名字对我们目前的情况再合适不过了。家庭数据科学是由 Amethix Technologies 制作的播客,每周都有新的剧集。
家庭数据科学讨论了不同数据科学分支的最新发现和进展,包括机器学习、人工智能和许多其他分支。每集采访一个或多个在该领域有影响力的研究人员,谈论他们的工作,让每个人都了解最新情况。
</5-online-data-science-courses-you-can-start-now-748e4a2b5403>
№4:数据故事
数据科学就是解释数据讲述的故事。这些故事可以以不同的方式讲述,取决于你如何呈现它们。换句话说,你如何将它们形象化。有效的可视化对于任何数据科学项目的成功都至关重要。因为这对任何数据科学家来说都是一项非常重要的技能,所以数据故事播客只关注可视化。
数据故事播客专题讨论了可用于有效可视化数据的各种工具、技术和方法。数据可视化不仅仅是项目的一个步骤;这是一种艺术形式。本播客将教授如何为您的数据选择最佳的可视化效果,并通过最新的工具帮助您创建最佳的可视化效果。
№5:实用人工智能:机器学习和数据科学
有时候,尤其是如果你是数据科学的新手,或者只是在研究理论方面,这个领域的整个概念似乎是遥远而不切实际的。实用人工智能:机器学习&数据科学播客将想法和概念放到现实生活中。
该播客与专家、研究人员、学生和爱好者讨论了不同的机器学习主题、深度学习、人工智能等。这些讨论集中于这些技术的实际实现和应用,而不仅仅是它们的理论。如果你想知道各种技术在实际应用中的最新用法,这个播客就是为你准备的。
</5-data-science-programming-languages-not-including-python-or-r-3ad111134771>
№6:走向数据科学
如果不包括走向数据科学 (TDS)播客,这将是不公平的。TDS 不仅仅是一份媒体出版物;当我第一次开始我的学习之旅时,TDS 是我学习一切所需的指南。
TDS 播客定期采访数据科学领域的一些杰出作家,讨论数据科学领域的不同主题,从开始职业生涯到找到工作,再到深入讨论该领域的技术方面以及数据科学在现实生活中的不同应用。
最后的想法
在日本生活,通勤时间可以相当长;每天,我都要花 3、4 个小时坐在火车上无所事事。我觉得我可以利用这段时间小睡一会儿,或者扩展我对任何我感兴趣的话题的知识。我开始用那段时间看新书,听有声读物,大多数时候听各种话题的不同播客。
通勤时间是我们都必须在不同程度上处理的事情;有些人通勤时间短,有些人通勤时间长,但尽管如此,我们都有一些通勤时间。COVID 让我很难跟上我的播客和有声读物,因为我们都一直被困在家里。
</6-data-science-certificates-to-level-up-your-career-275daed7e5df>
但是,当我打扫卫生、做饭或烘烤食物时,我仍然会听我的播客。播客总是给我提供一个很好的机会来学习新的东西,而不必把我的时间完全投入到这些任务中。它们帮助我变得更有效率,保持思维敏捷。
在本文中,我为您提供了 6 个优秀的数据科学播客选择,您可以通过收听这些播客来了解新的数据科学主题,了解最新的数据科学研究,并刷新您对已有主题的记忆。无论您的经验水平如何,或者您对各种数据科学分支的具体兴趣如何,您都会在这些播客中找到自己喜欢的东西。
你需要加入的 6 个数据科学空闲工作区
从社区获得支持和灵感
潘卡杰·帕特尔在 Unsplash 上的照片
自学任何新技能或技术最困难的一个方面是孤独的感觉。当我开始学习数据科学时,我感到很迷茫,不是因为我需要学习的技术术语,而是因为我觉得我正在独自经历这段旅程。我知道还有其他人和我经历着同样的旅程;我只是不知道。
独自经历新事物并不总是最好的选择;这就是为什么有些人倾向于参加训练营或在线/离线课程来学习新东西。当你和别人一起学习时,你学到的不仅仅是技术内容;你从别人的经验和见解中学到的最多。你会从你的同龄人那里学到比你一个人经历的旅程更多的东西。
一旦我找到一个社区来帮助我,支持我,并在我的学习旅程中激励我,旅程就变得容易多了。我最终得到的不仅仅是技术知识;我最终有了朋友、志同道合的人,以及一个帮助塑造了我今天这个数据科学家的网络。
</9-comprehensive-cheat-sheets-for-data-science-46005d72b485>
在本文中,我将与您分享一些令人惊叹、支持和欢迎的数据科学社区 Slack workspaces,以便您可以与来自世界各地的数据科学家交流、学习和交朋友。这 6 个 Slack 工作空间将为您提供在数据科学学习之旅中取得成功所需的社区感和归属感。
№1:开放数据科学社区
开放数据科学社区 (ODSC)不仅仅是一个宽松的工作空间;这是一个数据科学领域的组织。他们在世界各地举办数据科学会议,发布关于不同数据科学主题的帖子和视频,并让您了解最新的数据科学研究。
此外,ODSC 定期提供许多免费的网络研讨会,让您参加并学习新知识或更新您当前的知识。如果你错过了一些,你可以在 ODSC 云上找到录音。你可以通过这个链接加入 ODSC。
№2:编写数据科学章节的女性
编写代码的女性是科技界最大的女性群体之一。他们的主要使命是帮助女性在科技领域脱颖而出,追求成功的职业生涯。女性程序员是一个非常活跃的社区,每个月都有各种会议和网络研讨会,讨论不同的技术主题。
在女性程序员中最活跃的章节之一是数据科学章节。本章为数据科学家提供了许多网络研讨会、支持、工作公告板和机会。尽管名为女性代码组织,但它欢迎任何人加入他们的活动,并充分利用这些活动。你可以通过这个链接加入数据科学章节。
</6-machine-learning-certificates-to-pursue-in-2021-2070e024ae9d>
№3: Kaggle Noobs
毫无疑问,Kaggle 是数据科学领域最著名的数据集和代码集合之一;没有人不知道 Kaggle 是什么。Kaggle 提供许多课程来教你数据科学的基础知识。Kaggle 社区由全球超过 600 万名数据科学家组成。
Kaggle 还为不同的数据科学主题(如 NLP、可视化、机器学习和神经网络)提供更小、更专注的社区。您还可以参加 Kaggle 竞赛,证明您的数据科学技能。你可以通过这个链接加入 Kaggle Slack 社区。
№4:人工智能研究人员和爱好者
数据科学是一个技术领域,任何技术领域每天都在经历新的研究和进步。作为数据科学家,我们角色的一个重要部分是跟上您特定数据科学主题的最新研究。毕竟,你不能使用过时的模型或不包含的数据集。
人工智能研究人员和爱好者是一个超过 6k 名研究人员的社区,爱好者聚集在一起讨论人工智能领域的最新进展。您可以通过此链接加入讨论并获得最新消息。
</6-web-scraping-tools-that-make-collecting-data-a-breeze-457c44e4411d>
№5:数据会谈。俱乐部
数据会谈。如果你正在寻找一个学习更多关于应用机器学习或机器学习和一般工程的地方,那么俱乐部就是你要去的地方。如果你想问任何关于机器学习的核心技术概念或如何在机器学习领域找到工作的问题。
此外,数据说话。俱乐部提供关于各个方面的每周活动,从初学者机器学习活动到高级概念以及如何寻找角色和准备面试。你可以加入数据会谈。俱乐部松弛社区通过这个环节。
№6: TWIML 社区
TWIML 社区是一个来自世界各地的机器学习、深度学习和人工智能研究人员和爱好者的网络。TWIML 社区提供许多文章、课程和竞赛,帮助您进入数据科学领域并在其中脱颖而出。他们还提供了与该领域专业人士讨论各种话题的精彩播客。
此外,TWIML 社区组织了许多流行的数据科学主题的学习小组,如人工智能、深度学习和 NLP。通过社区的 Slack workspace,你可以和聪明能干的人讨论你需要的所有话题。你可以通过这个链接加入 TWIML 社区。
</6-nlp-techniques-every-data-scientist-should-know-7cdea012e5c3>
最后的想法
我认为,进入一个新领域或学习一项新技能的最大好处之一——除了新的职业前景之外——是结识新朋友的机会。结交新朋友,从中获得灵感,结交新朋友,拓展我们的专业网络。
但有时,与人交往并不是最容易的事情,尤其是当你在疫情中学习新技能的时候。然后,你认识人的选择变得非常有限,如果不是稀缺的话。但这正是科技帮助我们的地方;它让我们“遇见”那些我们本来不会相遇的人。
为你的新技能或领域找到一个社区的最好方法之一是 Slack。在本文中,我向您推荐了 6 个优秀的数据科学 Slack 社区,它们一定会为您提供所需的支持、灵感和社区意识,帮助您完成学习之旅,并在职业道路上取得成功。
提高云 ML 生产力的 6 个开发习惯
回归基础:重新思考云计算时代的开发最佳实践
费利佩·费塔多在 Unsplash 上的照片
我的以前的帖子主要是技术性的,涵盖了一系列关于云培训和高级 TensorFlow 开发的主题。这个帖子不一样。你可能会认为这更像是一篇观点文章。
在我的职业生涯中,当讨论软件开发实践的话题时,我很少看到比这更紧张的了。即使是最内向的工程师也会突然活跃起来。同事们会陷入激烈的争论,否则他们会步调一致地工作。我曾与牛仔程序员和 Scrum masters 一起工作过,与那些将敏捷作为生活方式的人一起工作过,与那些宁愿退出也不愿再参加一次[站立会议](https://en.wikipedia.org/wiki/Stand-up_meeting#:~:text=A%20stand%2Dup%20meeting%20(or,to%20keep%20the%20meetings%20short.)的人一起工作过,与那些将他们的功能名称大写的人一起工作过,与那些将这样的实践视为死罪的人一起工作过。
说实话,大多数常见的开发实践都植根于坚实的常识。虽然开发人员可能对是否以及如何采用 Scrum 有强烈的感觉,但是现代开发团队应该能够快速适应变化的环境,这是常识。虽然具体的细节可能有争议,但是团队采用编码风格以增加代码可读性和可维护性是常识。虽然测试驱动的开发可能看起来势不可挡,但是在不同级别和不同开发阶段引入测试是常识。当在团队中工作时,执行持续集成包括自动化集成测试是常识。即使是最好的开发人员有时也会犯错误,在他们被推到主存储库并最终毁掉每个人的一天之前抓住他们是常识。进行同行代码评审是常识,可能只是防止像内存泄漏或数据类型溢出这样的小疏忽搞垮你的公司。
Never underestimate the capacity of a person, no matter how stupid, to do something genius. More importantly, never underestimate the capacity of a person, no matter how genius, to do something monumentally stupid. --Chaim Rand
另一个基于常识的主张是,我们的开发习惯应该适应我们正在进行的项目的细节,包括团队、时间表,以及重要的是开发环境。这是事实,尤其是在云中训练机器学习模型时。
云 ML 的优势
在云中训练机器学习模型的趋势越来越强,云服务提供商为你能想象到的任何机器学习相关任务推出了不断扩展的服务。不难看出云中培训的吸引力。
构建现代机器学习基础设施可能很难。首先,是硬件基础设施。GPU 和替代的机器学习加速器很贵,如果你想保持最新最好的状态,你需要定期更新它们。由于您可能希望在多台机器上分布您的训练,并且可能希望一次运行多个训练实验,因此您可能需要多个不同规格的 GPU。机器学习通常需要复杂且可扩展的存储基础设施来存储不断扩展的数据集,以及支持数据存储和训练机器之间的高流量的网络基础设施。
然后是软件基础设施。要让您的培训发挥作用,需要适当的 BIOS 设置、定期的驱动程序更新、复杂的访问权限管理以及仔细的环境变量配置。您通常会需要一个很长的软件包列表,这些软件包可能会有相互冲突的依赖关系,您需要对它们进行分类。您可能需要 Docker 或其他一些虚拟化层,这带来了一系列全新的潜在问题。
另一方面,当你在云中训练时,生活是容易的。硬件、存储、网络和软件基础架构都已准备就绪,随时可以使用。您有各种各样的 GPU(和其他加速器)可供选择,以及不同类型和版本的软件框架。在云中,你可以自由地扩展,运行尽可能多的并行实验,也可以扩展独立的训练课程,在许多 GPU 核心(或其他加速器)上并行运行。云中的存储容量几乎是无限的,让您不必再为满足不断增长的存储需求而头疼。此外,云产品通常包括基于其定制硬件或网络拓扑的独特优化。除了已经在管理自己的数据中心的大型组织之外,创建自己的经济高效的基础架构,并具有云中提供的相同的灵活性和复杂性,几乎是不可思议的。查看此处了解更多将培训迁移到云的优势和挑战。
https://julsimon.medium.com/making-amazon-sagemaker-and-tensorflow-work-for-you-893365184233
管理成本
虽然成本可能是使用云 ML 服务的主要考虑因素之一,但很容易看出,如果没有的适当治理,成本也可能成为主要陷阱。我相信,每个开发人员的 DNA 中都有一种与生俱来的倾向,那就是使用最大、最新、最快和最强的计算资源。如果我们可以使用一个强大的(而且昂贵的 ) GPU(或其他加速器)系统,为什么要满足于一个更便宜的呢?如果我们可以在 1024 个内核上分布我们的培训,为什么要满足于 8 个内核呢?如果我们可以并行运行 1000 个实验,为什么要把自己限制在 4 个呢?如果我们能进行 20 天的训练,为什么要限制在 1 天呢?
显然,为了确保向云的成功过渡,管理人员必须为如何以及何时使用不同的云服务制定明确的政策。应定义指导原则,包括要使用的培训资源的数量和类型、培训课程应持续多长时间、何时支付云资源的全价以及何时使用更便宜的“低优先级”资源,如 spot 实例或可抢占虚拟机(冒着作业提前终止的风险)。应监控使用模式,并不断进行调整,以最大限度地提高生产率。
虽然定义和执行这样的策略是管理人员的责任,但是我们,开发人员,有责任使我们的开发过程适应这个新的工程时代。我们需要调整我们的习惯,以便最大限度地利用云资源,并最大限度地减少浪费、闲置时间和资源利用不足。
提高云培训生产力的开发习惯
为了最大化效率,我想提出 6、常识,我认为在云中训练机器学习模型时应该强调的开发实践。
1.在云中运行之前进行本地测试
众所周知,我们编写的几乎的应用程序从来不会按照我们期望的方式运行,直接开箱即用。我们经常会访问未定义的变量,使用错误的数据类型,越界访问列表,错误地使用 API,等等。在云中解决这些问题是低效、耗时和浪费的。常识告诉我们要建立一个本地的(基于 CPU 的)环境,其中有一小部分训练数据,在这个环境中,您要尽可能地验证一切都按预期运行。
2.让您的调试工具和技术适应云培训
不幸的是,在云中调试失败的应用程序,很少仅仅是在调试模式下运行您喜欢的 IDE。同时,我们快速识别和修复云运行中的错误的能力会对成本和生产率产生巨大影响。常识要求重新审视我们的调试过程,并使它们适应新的开发范式。应该对代码进行修改,以支持错误的快速再现。例如,保存中间模型检查点可能会缩短重新生成的时间,捕获输入张量可能有助于识别导致错误的输入和权重的精确组合,以及用于运行更详细的模型训练的专用调试标志可能有助于查明问题的根本原因。有关有效 TensorFlow 调试的更多详细信息,请参见此处的。
3.进行持续、深入的性能分析和优化
为了最大限度地利用您的培训资源,您应该将绩效分析和优化作为您发展过程中不可或缺的一部分。通过分析训练执行的速度(例如,以每秒迭代次数来度量)和我们利用系统资源的方式,我们寻求确定提高效率和降低总成本的机会。虽然任何未被充分利用的培训资源都是提高培训效率的潜在机会,但首先也是最重要的是,对于 GPU(或其他培训加速器),通常是系统中最昂贵和最强大的资源。你的目标应该是尽可能提高 GPU 的利用率。
典型的性能优化策略包括反复执行以下两个步骤,直到您对训练速度和资源利用率感到满意:
1.概述培训绩效,以确定流程中的瓶颈和未充分利用的资源
2.解决瓶颈并提高资源利用率
有许多不同的工具和技术来进行性能分析,这些工具和技术根据开发环境的具体情况而有所不同。关于分析 TensorFlow 模型性能的更多细节,请参见此处。
4.在代码中引入容错
想象一下,在 32 台 GPU 机器上运行一个高度分布式的培训会话两天,结果只有一台机器在模型似乎已经收敛时崩溃。虽然机器也可能在本地培训环境中发生故障,但有两个原因可以解释为什么在云中这可能是一个更大的问题。首先是分布式培训更加普遍。一般来说,我们训练的机器数量越多,我们就越容易受到系统故障的影响。第二个原因是,降低云中培训成本的最常见方法之一是使用“低优先级”资源,(如点实例,或可抢占虚拟机),如果出现更高优先级的请求,这些资源容易被提前终止。因此,将容错引入到您的开发需求中只是常识。
你应该做的第一件事是确保你定期捕获你的机器学习模型的快照(也称为检查点),以便在提前终止的情况下,你可以从最近捕获的模型恢复,而不是从头开始训练。捕获快照的时间间隔应通过权衡捕获快照的开销与在出现故障时您将损失的预期培训时间来确定。
另一件要考虑的事情是实现一种从单个系统的故障中恢复的机制,而不需要重新开始培训会话。在分布式培训环境中,实现这一点的一种方法是使用 Elastic Horovod ,它支持根据系统可用性动态扩展工作人员的数量。
5.对您的培训工作进行自动监控
监控学习过程指的是在训练期间跟踪不同指标的艺术,以便评估训练如何进行,并确定调整哪些超参数以改进训练。虽然监控学习过程是训练机器学习模型的关键部分,但一般来说,这在云中尤为重要,因为我们的目标是尽可能减少浪费。一旦我们发现一个失败的训练实验,或者一个已经停止学习的训练环节,我们的目标应该是尽快停止训练,以避免浪费。
因为我们不可能在一天的每时每刻都跟踪每一个训练实验,常识告诉我们应该尽可能自动监控。我们可以编程规则来检测常见的训练失败,例如爆炸或消失梯度、非递减损失等,并采取适当的行动,无论是终止训练还是调整一些超参数。
查看此处和此处了解更多关于 TensorFlow 中监控和自动监控的主题。
6。采用先进的超参数调谐技术
尽管无论培训地点在哪里,成功的培训通常都需要超参数调整,但我们希望最大限度地减少云中的浪费,这要求我们尽可能以最具成本效益的方式进行调整。虽然我们可能满足于在本地环境中进行手动或网格搜索调优,但我们应该致力于在云中使用更高级的技术,这些技术已经被证明可以更快地收敛并降低调优阶段的总体成本。同样,有许多超参数调整的解决方案,根据训练环境的不同而不同。努力选择一个提供现代的、基于贝叶斯的算法支持的(例如 Ray Tune 和Amazon SageMaker hyperparameter tuner)。
摘要
向云计算的过渡是一种范式的转变,它要求我们的开发过程朝着提高生产力和效率的目标调整和收紧。虽然细节肯定会因团队和项目而异,但核心原则是常识。成功掌握在我们手中。
6 中小企业在开始使用数据时面临的进入壁垒
当中小企业想要开始处理数据时,他们会遇到哪些主要困难?
Amandine M 在 Unsplash 上拍摄的照片
在我的上一篇文章中,我们谈到了中小企业如何利用数据来发展业务和获得市场中的新机遇。然而,如果我们从更广泛的角度分析这种情况,我们将很快意识到,多种因素阻止这些企业利用他们拥有的数据。
这些因素可以理解为进入壁垒,使这些公司难以在技术成熟的市场中平等竞争。我们将探讨任何希望开始使用其数据的企业将面临的 6 个主要进入壁垒。我将这些进入壁垒分为内部和外部。
内部壁垒
理解力差
理解什么是数据以及你能从中提取什么价值是非常重要的。如果你不明白某件事,你就不能利用它。了解、阅读和培训新技术的应用,尤其是数据,是非常重要的。请记住,技术世界是不断发展的,很难对所有事情都有一个观点。
要在公司的日常工作中引入数据,你必须确定它们会给你的业务带来的回报,否则,你不会使用它们。或者更糟,你会失败。在这一点上,拥有一个能够识别机会、将其应用于业务并量化结果的管理层是非常重要的。
缺乏内部专业知识
中小型公司的优势之一是,它们通常利用特定利基市场中高度专业化的市场机会。这种情况是正面的,也是负面的。积极的一面是,专业化让这些企业得以成长。另一方面,这是消极的,因为他们的大多数劳动力将是专业化的,这可能会使他们偏向于新趋势的优势和机会,如数据分析。
与前一部分密切相关的是公司内部缺少可以执行数据分析功能的概要文件。如果我们进一步考虑这种情况,这些公司中的许多甚至可能没有技术档案,这意味着两种可能的情况,雇用或外包。雇用这些档案是昂贵的,因为它们在市场上需求量很大。另一方面,也有外包这些服务的可能性,但这需要管理外包员工并使其符合业务需求的人员。
数据收集和存储
中小型公司在处理数据时面临的最大限制之一是它们没有数字化。这是一个很大的障碍,因为它阻止了来自日常操作的数据被捕获。有时,与客户、销售甚至股票的关系并没有被衡量。如果我们不进行测量,我们就无法利用来自数据的知识。
即使进行了测量,这也是不够的,因为数据质量不好。测量质量差的数据等于甚至不如不测量。如果你想知道数据质量的好坏,我推荐你阅读我的文章“数据质量的 6 个维度”。
外部壁垒
必要的前期投资
拥有基础设施并重组公司以获得盈利结果并利用业务中的数据并不是从天上掉下来的。这需要前期投资,在许多情况下,这对中小企业来说是一项巨大的努力。
然而,正如我在上一篇文章中回顾的那样,当中小企业开始处理数据时,他们可能会通过消除最初不必要的某些变量来降低成本。SME 在开始处理数据时应该使用 startup 和 MVP 理念。如果我们还利用了云的一些优势(主要是从资本支出转变为运营支出),我们可以将这一进入壁垒降至最低。
数据可用性
另一个外部进入壁垒是数据可用性。中小企业很可能没有足够的内部数据,需要用外部数据补充内部数据。
然而,寻找这些外部资源并不容易,而且在许多情况下,是有代价的。一方面,使用公共数据是免费的,但需要专家能够识别这些来源,并将它们与内部数据整合。另一方面,使用其他来源可能会有成本,增加了前期投资的需求。正如我们所提到的,当一家公司开始利用数据时,它必须尽可能地避免这种投资。
软件
是的,你没看错。当你知道如何使用软件时,它是一个极好的盟友。数据世界的大问题是所有现有的软件都太复杂了。正如我们上面已经提到的,它需要大多数中小企业所不具备的专业知识。理解数据环境、选择合适的工具并学习如何使用它们需要时间,而时间意味着成本。此外,对于没有处理这类软件经验的人来说,很难找到物有所值的东西,也很难找到自己需要的东西。
另一方面,与投资进入壁垒密切相关的是数据工具的价格。其中许多工具没有为中小企业量身定制的成本。虽然一些软件解决方案确实有一个面向中小企业的精简版本,但这还不够。这里,云再次发挥作用。由于有了云,数据接收、存储和处理的成本降低了,不再是前期投资。
数据可以让你全方位了解你的业务,并在决策过程中为你提供指导。然而,如果你的公司从未与数据打交道,你会发现几个入门障碍,让你很难入门。在本文中,我们解释了开始使用数据时的 6 个最重要的入门障碍。意识到它们的存在,你可以考虑一个策略来克服它们,让你的公司更上一层楼。
感谢阅读🤗
构建伟大数据文化的 6 个基本步骤
卢克·切瑟在 Unsplash 上的照片
因此,像“我们去年的收入是多少”这样的问题不再被当作“数据请求”来提出
在我担任数据科学顾问的这些年里,我与数据能力各不相同的客户共事过。在此期间,我得出了一个关键的观察结果:成功利用大数据时代的公司在整个组织中建立并维护良好的数据文化,而不仅仅是在他们的“数据组”中。
那些只投入资金和精力雇佣优秀数据人才,而不注意在组织的其他部门建立数据文化的公司,通常很难留住这些优秀的数据人才。他们最终会精疲力尽,因为他们大部分时间都在充当“数据 Siri”:“嘿,XXX,我们去年的收入是多少?”“嘿,XXX,你能调出我们过去三个月的销售数据吗?"
在整个组织中建立数据文化将使运营、产品、营销、人力资源和许多其他部门的员工能够以自助方式完成大多数简单的数据查询和数据可视化。除了使这些团队更加自给自足和灵活之外,它还允许数据分析师和数据科学家将他们的时间重新分配到他们的核心职责上,即构建和改进数据系统和模型,以及提供复杂、有意义的分析,而不仅仅是简单的数据提取。
如果你是你公司数据组织的一员,或者是一名数据倡导者,请继续阅读。本文将为您提供一些关于如何构建良好的数据文化的有价值的提示。
GIF 由 GIPHY
1.从无代码选项开始(比如 Looker 或 Tableau)
由于大多数从事高要求工作的人没有时间在短时间内掌握像 SQL 这样的新的硬技能,所以无代码选项是让您组织中的人舒适地使用数据的一个不那么令人生畏的起点。
有越来越多的选择可以帮助这一步,Looker 和 Tableau 是大多数公司追求的两个首选。为了给你的公司选择一个合适的,了解两者之间的区别和它们的局限性是很重要的。
Looker 有一些很棒的内置分析功能,可以让没有深入分析知识的人更容易采用。我想到的一个限制是,Looker 主要可以连接到不同的数据仓库,如 PostgreSQL、Google BigQuery 等。但是目前没有接收 CSV 数据的好选择。唯一的解决方法是将 CSV 文件上传到这些数据库中,并建立一个与 Looker 的连接。但是,如果您所有的数据目前都在 Excel 中,并且没有数据仓库,该怎么办呢?
GIF 由 GIPHY
如果你所有的数据都保存在电子表格中,Tableau 可能是一个更好的选择。Tableau 可以处理到数据仓库的连接和本地 excel 表的接收。然而,它在可定制的分析和对分析知识和背景较少的人的易用性方面有所欠缺。
尽管当前的无代码选项有其缺点,但它们仍然降低了进入数据世界的门槛,并作为在您的组织内建立伟大的数据文化的良好起点。
2.为应该学习更高级选项(SQL)的团队提供在职学习机会
尽管无代码选项很棒,但是当它们用于执行复杂的分析时,它们不可避免地会遇到限制,并且需要更高级的 SQL 知识。此外,许可证可能会很贵,因此许多公司选择限制特定团队的访问权限。
对于像运营和营销这样经常进行复杂的大量数据分析或进行 AB 测试和其他实验的团队,员工最终会意识到他们需要足够的 SQL 知识来构建 Looker 中的“派生表”,或者至少知道足够的伪代码来有效地将他们的数据需求传达给数据团队。学习 SQL 还可以让您的员工完全抛弃 Looker 等工具,直接查询数据库,消除工具限制或依赖数据团队的瓶颈。
您可以通过提供在职学习机会,例如通过第三方提供商(如verta bello)、免费替代方案(如 W3Schools )和/或由您的数据组织开发的内部 SQL 培训,来支持这些群体中的员工。
GIF 来自 GIPHY
3.确保每个人都能访问数据库
这个听起来很简单,对吧?你会惊讶地发现,有多少公司的数据库只有数据组中的少数人可以访问。因此,毫无疑问,来自整个公司的全部数据拉取请求都落在了十几名员工的肩上。
无论您限制访问的原因是什么,通常都有一个简单的解决方法;如果实现了限制以避免意外删除或篡改数据,那么写和编辑的权限可以限制到特定的数据组,而查询和读取数据库的权限应该授予每个人。如果可访问性的限制是出于对敏感数据(例如 PII——个人身份信息)的考虑,通常很容易实现一个变通办法,比如构建一个没有 PII 的辅助表**,每个人都可以访问它。**
引入分析和建立数据文化已经让很多人走出了他们的舒适区;不要让他们为权限而战,这是不必要的。
4.将所有数据放在一个地方,研究数据仓库解决方案
把你的数据放在不同的地方,对每个使用数据的人来说都是一种痛苦;例如,无代码选项通常不能连接来自不同连接(不同数据库)的表。这就是像雪花和 BigQuery 这样的数据仓库的用武之地。它们作为数据的一站式商店,避免了多种真实信息来源分布在不同地方的情况,这种情况很容易造成混乱。
如果您的数据目前居住在不同的地方,不要担心;随着数据仓库解决方案的发展,只需要很少的工程资源就可以将所有数据迁移到数据仓库中。
5.为数据库和表格准备好文档,并有一个专门的小组(Slack 或其他渠道)来回答与数据相关的问题
考虑到大多数公司数据的复杂程度,没有人完全了解数据库中的一切也就不足为奇了。让每个数据用户了解每个表中的每一列实际上是不可能的。
因此,对于每个表的所有者/创建者来说,在创建时正确地记录表是很重要的,这样将来的表用户就不必绞尽脑汁试图弄清楚表的“重量”列的单位是“磅”还是“千克”。当表格中的某些内容没有被很好地记录或难以理解时,有一个专门的小组来回答类似上面的问题也是有帮助的;假设有一个客户服务部门负责您的数据源。
6.开始将查询(或无代码选项源)链接到数字
假设您已经在两份不同的报告中看到了去年的销售数字;一个说销售额是 1000 万,另一个是 900 万。是什么导致了这里的差异?是因为其中一个是含税销售额而另一个不是吗?还是因为一个是用公司的财年,另一个是日历年?对于这种差异,你可以提出各种不同的假设,但是如果你不知道这些数字是如何得出的,检查它们将是一个巨大的痛苦。
这就是为什么在报告和演示文稿中链接所有数字和图表的来源如此重要。无论您使用的是 SQL 查询还是 Looker/Tableau 仪表板链接,这些链接的源都将使那些希望重现报告或只是好奇如何找到数字的人的生活变得更加轻松。
链接源的另一个好处是利用了查询/仪表板的可重用性。想象一下,另一个部门的某人正在试图找出过去 10 年的销售数字;他们可以简单地使用您的链接查询并更改一些参数,而不是与您安排一次会议来询问您是如何得出这些数字的。现在你有 15 分钟的时间可以用来喝杯咖啡。
GIF 来自 GIPHY
有了上面提到的所有步骤,希望可以问这样的问题:“我们去年的收入是多少?”将不再显示在任何人的收件箱中。
掌握 Python 生成器的 6 个例子
综合实践指南
贾斯汀·坎贝尔在 Unsplash 上的照片
Python 中的生成器是我们经常使用但很少谈论的工具之一。例如,大多数 For 循环都伴随着 range 函数,它是一个生成器。
生成器允许随着时间的推移生成一系列值。使用生成器的主要优点是我们不必一次创建整个序列并分配内存。相反,生成器一次返回一个值,并一直等到调用下一个值。
在本文中,我们将通过 6 个例子来演示如何在 Python 中使用生成器,以及一些需要记住的技巧。
示例 1
让我们从一个简单但经常使用的生成器开始。range 函数用于迭代由给定的开始、停止和步长确定的一系列值。
range(5)
out> range(0, 5)for i in range(5):
print(i)
0
1
2
3
4
如果执行 range 函数,将不会返回任何值。但是,我们可以在 for 循环中对其进行迭代,以便按顺序访问这些值。为了提供序列中的数字流,range 函数跟踪最后一个数字和步长。
我们还可以通过将生成器转换为列表来查看整个序列。
list(range(5))
[0, 1, 2, 3, 4]
示例 2
我们可以创建自己的生成器函数。语法与创建普通函数非常相似,但有一个关键的区别。
下面是一个生成器函数,它返回从 1 开始的给定范围内所有其他数字的立方。
def mygenerator(n):
for i in range(1, n, 2):
yield i**3
生成器和普通函数的主要区别在于我们不使用 return 关键字。而是使用 yield 关键字。
我们现在可以在 for 循环中使用我们的生成器:
for i in mygenerator(10):
print(i)
1
27
125
343
729
示例 3
创建生成器的另一种方法是使用生成器表达式。它类似于列表理解。
mygenerator = (i**3 for i in range(1,10,2))mygenerator
<generator object <genexpr> at 0x7f867be7b9d0>
我们现在可以迭代它。
for i in mygenerator:
print(i)
1
27
125
343
729
需要注意的是,一旦我们迭代了一个生成器并到达了末尾,我们就不能再迭代了。例如,如果我们重新运行上面的 For 循环,它将不会返回任何内容。
在示例 2 中情况并非如此,因为我们有一个生成器函数,它在每次执行时都会创建一个生成器。您可能会注意到,在这个示例中我们没有函数调用。相反,我们有一个生成器对象。
实例 4
我们可以使用 next 函数手动迭代一个生成器。让我们首先创建一个新的生成器对象。
def mygenerator(n):
for i in range(1, n, 2):
yield i * (i + 1)my_gen = mygenerator(6)
我们现在可以使用 next 函数来请求生成器将返回的下一个值。
next(my_gen)
2next(my_gen)
12next(my_gen)
30next(my_gen)
> StopIteration error
如果我们在到达终点后调用生成器上的下一个函数,它将返回 StopIteration 错误。for 循环的步骤与我们处理下一个函数的步骤相同。然而,当使用 for 循环时,我们不会得到 StopIteration 错误,因为它会自动捕捉这个错误。
实例 5
我们经常看到术语 iterable 和 iterator。iterable 是我们可以迭代的对象,比如列表、集合、字符串等等。然而,我们不能将可迭代对象作为迭代器。
有一个内置的 Python 函数可以将 iterable 转换为 iterator。令人惊讶的是,它是 iter 函数。例如,我们可以迭代字符串,但不能将它们用作迭代器。iter 函数允许使用字符串作为迭代器。
my_string = "Python"next(my_string)
> TypeError: 'str' object is not an iterator
让我们将其转换为迭代器,然后再次调用下一个函数。
my_string_new = iter(my_string)next(my_string_new)
'P'next(my_string_new)
'y'
实例 6
iter 函数也可以用来将列表转换成迭代器。
my_list = ['a', 'b', 'c', 'd', 'e']my_gen = iter(my_list)type(my_gen)
list_iterator
让我们在 for 循环中使用它。
for i in my_gen:
print(i)
a
b
c
d
e
结论
当处理分配大量内存的序列时,发生器非常有用。生成器支持迭代协议,所以当我们调用它们时,它们不会返回值并退出。
序列中的下一个值生成后,它们会自动挂起,并在请求下一个值时的最后一点恢复其执行状态。
优点是生成器一次计算一个值,并等待下一个值被调用,而不是一次计算整个序列。
感谢您的阅读。如果您有任何反馈,请告诉我。
使用 PostgreSQL 掌握 SQL 连接的 6 个示例
PostgreSQL:世界上最先进的开源关系数据库
在 Unsplash 上拍摄的 Mineragua 苏打水
SQL 提供了许多函数和方法来管理以表格形式存储的数据。关系数据库管理系统(RDBMS)是一个使用 SQL 来管理存储在关系数据库中的数据的程序。
关系数据库包含许多通过共享列相互关联的表。有许多不同的 RDBMSs,如 MySQL、PostgreSQL、SQL Server 等等。
在本文中,我们将通过 6 个例子来演示 SQL 连接是如何执行的。如果您想从 SQL 和 PostgreSQL 的基本介绍开始,这里有我以前写的两篇介绍性文章:
SQL 连接允许从多个表中检索数据。我们基本上是根据相关表的公共列中的值来组合多个表。然后我们可以从这些表格中提取任何信息。
我使用 Kaggle 上的墨尔本住房数据集中的数据创建了两个表格。这些表的名称是 houses 和 location,它们基于“houseid”列相关联。
房屋表的前 5 行(图片由作者提供)
位置表的前 5 行(作者图片)
示例 1
查找 2017 年 4 月 3 日发布的房屋地址。
select location.address, houses.date from location join houses on location.houseid = houses.houseid where houses.date = '2017-04-03' limit 5;address | date
-----------------+------------
5 Charles St | 2017-04-03
40 Federation La | 2017-04-03
50 Bedford St | 2017-04-03
23 Hart St | 2017-04-03
1/80 Hawker St | 2017-04-03
我们首先指定要选择的列及其表名。第二行和第三行包含表名。然后,我们指定用于匹配表间行的条件。最后,where 语句用于筛选行。Limit 关键字,顾名思义,限制要显示的行数。
示例 2
找出北部大都市地区 h 型房屋的数量。
SELECT COUNT(1) FROM location JOIN houses ON location.houseid = houses.houseid WHERE type = 'h' AND regionname = 'Northern Metropolitan';count
-------
2754(1 row)
有 2754 套房子符合我们的条件。您可能会注意到,我们不必为 where 语句中使用的列编写表名。这是允许的,除非表中没有同名的列。
示例 3
找出北部大都市地区每种类型的房屋数量。
SELECT type, COUNT(1) AS number_of_houses
FROM houses
JOIN location
ON houses.houseid = location.houseid
WHERE regionname = 'Northern Metropolitan'
GROUP BY type;type | number_of_houses
-----+------------------
t | 307
h | 2754
u | 829(3 rows)
这个例子和上一个很相似。我们使用类型列对观测值(即行)进行分组,然后对每组中的房屋进行计数,而不是只对 h 类型的房屋进行计数。
实例 4
找出每个郊区的平均房价,并根据平均价格显示前 5 个郊区。
SELECT suburb, AVG(Price) AS avg_house_price FROM location JOIN houses ON location.houseid = houses.houseid GROUP BY suburb ORDER BY avg_house_price DESC LIMIT 5;suburb | avg_house_price
------------+--------------------
Kooyong | 2185000
Canterbury | 2180240.7407407407
Middle Park | 2082529.4117647058
Albert Park | 1941355.072463768
Brighton | 1930158(5 rows)
它类似于前面示例中的 group by 操作。在本例中,我们还基于聚合列(avg_house_price)对结果进行排序。默认情况下,结果按升序排序,但可以使用 desc 关键字进行更改。
实例 5
到目前为止,我们已经在 join 子句中交替使用了表名。桌子的顺序并不重要。“从房屋连接位置”与“从位置连接房屋”相同。
顺序无关紧要的原因是我们使用了所谓的“内部连接”。仅选择在两个表中具有匹配值的行。
(图片由作者提供)
当我们执行左连接时,我们从左侧获取整个表(即 join 子句中的第一个表),然后只从右侧表中获取匹配的行。
(图片由作者提供)
让我们找出每个地区房屋的平均土地面积。
SELECT regionname, ROUND(AVG(landsize)) AS avg_landsize FROM location INNER JOIN houses ON location.houseid = houses.houseid GROUP BY regionname;regionname | avg_landsize
---------------------------+--------------
Eastern Metropolitan | 634
Western Metropolitan | 494
South-Eastern Metropolitan | 614
Southern Metropolitan | 509
Western Victoria | 656
Eastern Victoria | 2950
Northern Metropolitan | 569
Northern Victoria | 3355
语法是一样的,只是我们写的是“左连接”而不是“连接”。请记住,当我们使用 left 或 right join 时,join 子句中表名的顺序很重要。
没有必要明确提到右连接,因为只需切换表名就可以将它转换为左连接。
实例 6
我们还有“完全外部连接”,它包括两个表中匹配的行,也包括不匹配的行。
(图片由作者提供)
让我们查找地址中包含“公园”一词并且有 4 个以上房间的房子的价格。
sonery=# SELECT (price/1000000) AS price_million, address FROM houses FULL OUTER JOIN location ON houses.houseid = location.houseid WHERE address LIKE '%Park%' AND rooms >4;price_million | address
---------------+-------------
2.1 | 21 Park Rd
2.3 | 119 Park St
2 | 52 Park Rd
在我们的例子中,连接的类型实际上并不重要,因为两个表都包含每个房屋 id。然而,有些情况下我们需要使用左连接或外连接。因此,了解它们是如何工作的很重要。
结论
我们已经做了 6 个例子来演示连接是如何工作的。我们需要从关系数据库中检索的数据通常分布在多个表中。因此,全面理解 SQL 连接非常重要。
感谢您的阅读。如果您有任何反馈,请告诉我。
6 个使用 R 执行高效数据分析和操作的示例
r 使它变得简单、高效和快速。
Python 和 R 是数据科学生态系统中的主流编程语言。我开始用 Python 学习数据科学,我建议你也这样做。
自从我开始作为一名数据科学家工作以来,我一直在广泛地使用 Python 和 R。然而,当涉及到数据分析和操作时,我倾向于选择 R 而不是 Python。
在本文中,我们将探索 r 的数据表包的一些优秀特性。即使对于大型数据集,它也是简单而高效的。
我们将使用 Kaggle 上提供的关于奥运会历史的数据集。它是在知识共享许可下共享的,所以我们可以公开使用和共享它。
就像 Python 一样,R 有几个简化和加速数据科学任务的包。我们将使用数据表包,它有点像 Python 熊猫的 R 等价物。
install.packages("data.table") #installlibrary(data.table) #import
我们可以用fread
函数读取数据集。
dt <- fread("athlete_events.csv")dim(dt)
271116 15
该数据集包含超过 27 万行和 15 列。每条线代表一名运动员和他/她在给定运动中的表现。对于本文中的例子,我们不需要所有的列。让我们先过滤一些列。
dt <- dt[, c("Sex","Age","Height","Weight",
"Team","Sport","Medal")]head(dt)
(图片由作者提供)
示例 1
找出获得奖牌总数最多的 5 个国家。
dt[!is.na(Medal), .N, Team][order(-N)][1:5] Team N
1: United States 5219
2: Soviet Union 2451
3: Germany 1984
4: Great Britain 1673
5: France 1550
第一个逗号之前的表达式过滤掉了 medal 列中的空值,N 是 r 的 count 函数。第二个逗号之后的列是用于分组的列。由于我们对每个国家获得的奖牌感兴趣,所以我们在这里写团队栏。最后,结果按计数降序排列。如果 N 前面没有负号,结果将按升序排序。
在一小段代码中,我们实现了过滤、分组、聚集和排序。
示例 2
创建一个列,表明运动员是否获得了奖牌,而不考虑奖牌的类型。
dt[, is_medal := ifelse(is.na(Medal),0,1)]head(dt)
(图片由作者提供)
“:=”表达式就地创建一个新列,以便修改当前数据表。ifelse
函数评估给定的条件并相应地赋值。
示例 3
“:=”表达式的一个好处是它也适用于分组。例如,我们可能需要创建一个列来显示每个国家获得的奖牌总数。
一种方法是单独计算这个值,然后按团队名称与原始表合并。
medals <- dt[, .(medal_count = sum(is_medal)), Team]dt <- merge(dt, medals, by="Team", all.x = TRUE)
数据表还提供了一个更简单的解决方案:
dt[, medal_count := sum(is_medal), Team]
它计算每支队伍获得的奖牌数,并将数值适当地放入奖牌数列。
(图片由作者提供)
实例 4
创建一个包含每个国家运动员的平均体重指数(身体质量指数)的列。
一种方法是计算每个运动员的身体质量指数,然后取平均值。然而,如果我们不想添加额外的身体质量指数列,我们可以直接计算每个国家的平均身体质量指数。
dt[, avg_bmi := mean(Weight / (Height/100)**2, na.rm=TRUE), Team]
(图片由作者提供)
将na.rm
参数设置为真很重要。否则,即使组中只有一个 null 值,结果也是 null。“丹麦/瑞典”队的平均 bmi 值为空,因为该队的所有身高和体重值都为空。
实例 5
我们之前已经计算了每个国家获得的奖牌数。我们也来算算这些奖牌来自多少个运动项目。
dt[is_medal==1, .(number_of_sports = uniqueN(Sport)), Team][order(-number_of_sports)][1:5]
前 5 名(图片由作者提供)
美国在 47 个不同的项目中赢得了奖牌。
实例 6
我们可以在一次操作中计算多个聚合。让我们分别计算那些赢得和没有赢得奖牌的男性和女性的平均年龄、身高和体重。
dt[, .(avg_age = mean(Age, na.rm=T),
avg_height = mean(Height, na.rm=T),
avg_weight = mean(Weight, na.rm=T)),
.(Sex, is_medal)]
(图片由作者提供)
我们可以根据需要在括号中列出任意多的聚合。因为我们对基于性别和奖牌的分组都感兴趣,所以我们使用这两个列进行分组。
结论
我们做了 6 个例子来演示数据表包如何高效地执行数据分析和操作。我们在这篇文章中所涉及的只是它的一小部分功能。然而,典型的任务大多涉及像这些例子中的基本操作。
感谢您的阅读。如果您有任何反馈,请告诉我。
Python 中 6 种奇特的内置文本换行技术
单行代码使您的文本在应用程序中“打印就绪”
大家都知道 Python 以全面的标准库而闻名。在大多数其他编程语言中,我们将不得不使用代码块来实现许多特性。然而,在 Python 中,我们可以发现许多奇特的特性已经被实现,我们可以开箱即用。
在本文中,我将介绍另一个 Python 内置库“文本包装器”,它可以帮助我们非常容易地在应用程序中生成“打印就绪”的包装文本。不需要安装它,只需导入并使用它,因为它是 Python3 自带的标准库。
1.基本文本换行
照片由 SpencerWing 在 Pixabay 上拍摄
正如我在介绍中所说的,您不需要安装任何东西。只需按如下方式导入库。
import textwrap as tr
出于演示的目的,让我们定义一个字符串,这是我从 Python 的维基百科页面复制的一个句子 https://en . Wikipedia . org/wiki/Python _(programming _ language)
my_str = "Python is an interpreted, high-level and general-purpose programming language."
好的。这个my_str
不是短句。假设你的软件 UI 或者网页需要以一定的宽度显示文本。当文本长度超过宽度时,需要将文本分成多行。当然,我们不希望将它拆分成正好等于宽度的长度,因为这可能会导致一些单词部分位于行尾,而另一部分从下一行开始。从用户的角度来看,这不是一个好的阅读体验。
文本换行库来帮忙了。与其实现一些复杂的逻辑来检测单词边界,我们可以很容易地使用下面的代码来分解句子。
lines = tr.wrap(my_str, width=30)
如图所示,这个句子被分成三部分。这是因为我们设置了width=30
,所以文本将在到达 30 之前换行,以确保它不会在 UI 中“溢出”。如果算上 3 块的长度,分别是 25,30,21。
因此,Python TextWrapper 足够智能,可以识别出下一个单词足够长,足以使当前行溢出,因此它会自动将其放入下一行。这就是为什么我们第一行有 25 个字符。
2.可打印的文字环绕
照片由 blickpixel 在 Pixabay 上拍摄
好吧,你可能会认为这仍然不够方便,因为我们仍然需要循环列表来逐行打印包装的字符串,如下所示。
是的,这就是为什么 Python 提供了另一个函数fill()
来使它更加方便。
同样的字符串,不使用tr.wrap()
,我们可以使用tr.fill()
得到一个内部有\n
的单个包装字符串,这就是“打印就绪”。
tr.fill(my_str, width=30)
多方便啊!
3.用文本包装截断
我们必须在应用程序 UI 上显示所有内容吗?不总是。
我敢打赌,你一定在某些软件或网站上见过一些被删节的文字。例如,下面的截图来自 Quora.com。
看到“……(更多)”指示器了吗?它让我们知道里面有更多的内容,但现在不会显示所有内容。这是一种超出本文范围的 UI 设计概念。然而,如果您想使用 Python 模仿这种行为,一行代码就足够了。
让我们在上面的例子中继续使用同一个字符串。这一次,我们将使用tr.shorten()
功能。
tr.shorten(my_str, width=30)
该字符串将被自动截断,总长度将小于 30。当然,如果宽度足够长,或者我们也可以说文本足够短,就不会被截断。
tr.shorten(my_str, width=80)
所以,我们设置了width=80
,字符串小于那个。那就不会被截断了。
另外,如果我对占位符[...]
不满意怎么办?它实际上只是一个默认的占位符,我们可以自定义它。
tr.shorten(my_str, width=30, placeholder=' ...(more)')
然后,我们得到了与 Quora 中完全相同的样式:)
4.自动清洗管柱
照片由 blickpixel 在 Pixabay 上拍摄
文本包装器库不仅可以包装和截断文本,如果格式有问题,它还可以修复文本。如果您的应用程序正在处理来自其他来源的大量文本,并且您希望在存储或显示它之前对其进行格式化,这将非常方便。
假设我们有另一个字符串,它的格式相当混乱。
my_str2 = '''
Python is an interpreted,
high-level and general-purpose
programming language.
'''
这正是我们从上面的例子中得到的文本,但是每行有 2 个空格作为“公共缩进”。通过使用dedent()
函数,我们可以很容易地摆脱它们。
tr.dedent(my_str2)
这里显示了使用和不使用dedent()
功能的区别。
当然,它适用于任何数量的前导空白,而不仅仅是两个。
5.自定义自动缩进
与其去掉多行文本的缩进,不如添加一些缩进?是的,我们可以使用文本包装器。
有一个功能充当了dedent()
的对立面,就是indent()
。假设我们有如下一段代码
some_code = '''
import textwrap as trprint("hello world!")for i in range(10):
print(i)'''
看下面的例子,它在每一行前面增加了两个空格。
tr.indent(some_code, ' ')
截图显示了与原始字符串的差异。
好吧,我同意目前这没有太多意义。为什么我们要在文本中添加前导空格?下面的例子可能会更有趣。
tr.indent(some_code, '>>> ')
是的,别忘了我们可以定制缩进所用的字符串。它看起来像 Python 控制台吗?不是 100%。没有文本的新行没有添加>>>
提示。不要担心,indent()
函数接受另一个参数,这个参数将是一个谓词,告诉程序“这一行是否应该添加前缀”。
tr.indent(some_code, '>>> ', lambda line: True)
所以现在所有的线都有提示了。它看起来完全像 Python 控制台。
6.重用 TextWrapper 实例
到目前为止,我们已经在文本包装器库中引入了 5 个不同的函数。事实上,上面这些函数会自动从类中创建一个TextWrapper
实例,然后应用文本的转换。然后,该实例将被释放。
当我们有许多需要包装的字符串,或者我们需要一些在TextWrapper
中只定义为类方法而不是公共函数的特性时,我们必须实例化 TextWrapper 类。
好的一面是,我们还可以在任何需要的时候重用实例。
wrapper = tr.TextWrapper(
width=50,
initial_indent="- "
)
在上面的代码中,我们从类中声明了一个文本包装实例,并将宽度初始化为 50。此外,我们定义了一个属性initial_indent
,它将作为前缀添加到所有“包装”的文本中。
现在,我们需要多个句子。这些也是从同一个 Wiki 页面中提取的。
my_strings = [
"Python is an interpreted, high-level and general-purpose programming language.",
"Python's design philosophy emphasizes code readability with its notable use of significant indentation.",
"Its language constructs and object-oriented approach aim to help programmers write clear, logical code for small and large-scale projects.",
"Python is dynamically-typed and garbage-collected.",
"It supports multiple programming paradigms, including structured (particularly, procedural), object-oriented and functional programming.",
"Python is often described as a \"batteries included\" language due to its comprehensive standard library."
]
那么,我们来包装吧!
for s in my_strings:
print(wrapper.fill(s))
摘要
在本文中,我介绍了一个 Python 内置库“文本包装器”。它可以很容易地为我们换行,以确保所有的行都在一定的宽度内。这在有 UI 的应用程序中非常重要,这样文本就不会溢出。
不仅仅是文本换行,这个库还提供了很多非常方便的特性,比如缩进和体面。当我们想使用这个库用相同的参数包装文本时,最好实例化文本包装类,这样我们就可以重用这个实例。
https://medium.com/@qiuyujx/membership
如果你觉得我的文章有帮助,请考虑加入 Medium 会员来支持我和其他成千上万的作者!(点击上面的链接)
赢得数据科学面试的 6 个有用技巧
面试你的第一份数据科学工作?这里有一些你可能想事先知道的提示。
由地图框从 Unsplash 拍摄的照片
数据科学现在是一个热门领域,数据科学家的工作需求量很大。
如果你也对这份职业感兴趣,那么如果你想得到这份工作,你就需要为面试做好准备。
在这篇博文中,我将给出如何通过数据科学家面试的六个技巧,这样你就能被录用了!
1.研究工作简介和组织
工作简介和招聘单位会让你对期望有一个很好的了解。
例如,如果你的面试官提到他们公司正在寻找能够“利用深度学习技术”或类似的人,那么事先温习一下这些概念可能会很有用。
准备好这些知识将证明你为面试这个角色做了多少准备,同时也确保在面试过程中没有任何事情让你分心!
如果他们想要更高级的人,而不是初级职位,不要在简历中提到任何实习或低级职位。
提前研究这些信息可以确保双方都知道面试过程中的所有期望。这样,就不会有意外或沟通失误导致面试失败。
2.练习商业案例问题
商业案例问题可能是最常见的面试问题之一。他们需要批判性思维和数据知识,这使他们成为衡量你是否准备好担任这种角色的好方法。
如果可能的话,试着和熟悉数据科学的人一起练习这些问题,这样你就知道会发生什么了!这将有助于在实际面试过程中增强你的信心,让你在与其他候选人的竞争中占据优势。
一些常见的业务案例问题包括:
- 您如何识别信用卡数据集中的欺诈活动?
- 对于一家移动电话公司,你降低客户流失率的策略是什么?
- 你是一家新的在线零售商的首席执行官。假设您没有销售数据,您可以使用哪三种方法来确定库存中的产品?
能够有效地回答这些类型的问题将表明您有能力进行批判性思考,并以实际的方式应用您的数据科学知识。
如果你不愿意直接回答这些问题,不要担心!事先花些时间想出潜在的解决方案可能会有所帮助。然而,确保在面试中不要听起来太过排练。
3.仔细检查你的简历
你的简历通常是你给面试官的第一印象,所以准确地展现你的技能和经验是很重要的。确保包含您使用数据科学技术的任何项目!
例如,你是否使用机器学习算法从事某个项目?
如果可能的话,把这些信息放在简历的“技能”部分——确保不要用太多的专业术语。这将有助于展示你在寻找什么样的角色,同时也展示你最近的成就。
有没有与申请职位直接相关的实习经历?
如果是这样,一定要提到他们!这种经历显示了主动性和兴趣,可以使候选人与众不同。
你的简历也是一个突出你已经获得的可转移技能的好地方,比如沟通、解决问题和数据分析。雇主们正在寻找能立即投入工作的候选人,所以包含你技能的具体例子将有助于你的申请。
确保仔细阅读招聘启事,并相应地修改你的简历。通过这种方式,你可以确保你强调的所有相关经验和技能都符合雇主的要求。
一份精心制作的简历是任何成功的求职申请的重要组成部分!
4.练习机器学习、统计和建模问题
许多数据科学家面试问题将要求你在机器学习、统计和建模方面有很强的基础。如果你不熟悉这些话题,在面试前做一些额外的准备是很重要的。
练习的一种方法是尝试解决在线测验问题或通过教程进行练习。这将有助于您更好地理解这些主题以及它们与数据科学的关系。
准备面试时,一定要温习你可能需要知道的数学话题!这将使你比其他不熟悉这类材料的候选人更有优势。
一些常见的机器学习和统计问题包括:
- 什么是高斯分布?
- 如何计算数据集的方差和标准差?
- 线性回归的算法是什么?
- 有哪些不同类型的强化学习算法?
如果你不知道一个问题的答案,尽量不要慌!诚实地承认你不知道,比试图编造一个答案要好。如果你能证明你愿意学习新事物,面试官会对你印象更深刻。
请记住,准备数据科学家面试的最佳方式是尽可能多地练习问题!这将有助于增加你成功的机会。
5.复习易混淆的数据科学术语
为了证明你作为数据科学家的价值,你需要知道术语。
虽然一开始看起来很难接受,但为了赢得面试,你可以在面试和求职申请中使用一些常用术语。回顾这些也将有助于提升您的整体数据科学知识!
您需要熟悉的一些令人困惑的术语包括:
- **回归:**基于观测数据预测未来值的技术。在市场营销中,它经常被用来确定不同的因素(如价格或广告)会如何影响顾客行为。
2.**聚类:**根据相似性将对象分组的技术。这在试图理解大型数据集时非常有用,因为它可以帮助识别模式和趋势。
3.**神经网络:**一种启发了人工智能发展的机器学习算法。他们能够通过例子学习,并且经常被用于诸如图像识别或自然语言处理的任务。
了解这些术语——以及其他类似的术语——不仅会让你在面试中更有信心,还会增强你对整个领域的理解。
如果你不知道这些术语是什么意思,在面试前做一些调查。网上有很多资源,包括汗学院的数据科学教程。
6.了解您的数据科学项目
如果相关,一定要谈谈与申请职位相关的任何项目或论文!
例如,如果你在一家科技公司面试,并在一个机器学习应用程序中提到了你的一些工作,面试官可能会要求你说得更详细。
这是另一个很好的机会,你可以展示你的技能和经验,满足公司的需求!
例如,您可以说:
“我最近在 Acme Inc .工作,作为我实习的一部分——我开发了一种预测股票价格的算法,该算法在《金融季刊》上发表。”
这表明你对自己的工作充满热情,有数据科学方面的天赋,能够将你所知道的应用到现实世界中去!
如果这在面试时的谈话中不是很自然,那么一定要在某个时候提到它!
最好不要直接问他们是否想听,而是让面试官提出来,如果他们感兴趣的话。
准备好详细谈论你过去的项目,并解释你从中学到了什么。这是向面试官展示你有工作所需的技能和经验的好方法!
赢得那次面试!
简而言之,为数据科学家的采访做准备似乎是一项艰巨的任务。然而,遵循这些技巧将会帮助你更自信,更有能力解决任何你遇到的问题!
与 5k 以上的人一起加入我的电子邮件列表,免费获得“完整的 Python 数据科学备忘手册”
np.ndarray 和 np.matrix 对象之间的 6 个主要区别
这两者在技术上是不同的,即使它们在外观上看起来是一样的
Numpy 是基础 Python 库,广泛用于数值计算和线性代数。 ndarray 和 matrix 对象是常用的 numpy 对象。 ndarray 对象是从 numpy ndarray 类创建的。 矩阵 对象是从 numpy 矩阵类中创建的。如果你是 numpy 的新手,你可能会对 numpyn array和 numpy matrix 对象感到困惑。如果外表看起来一样,那就是两回事。今天,我们将讨论他们之间的 6 个不同点。
先决条件
推荐你看下面我写的内容。
创建 ndarray 对象
我们可以使用 np.array() 函数创建一个 ndarray 对象。
import numpy as npA = np.array([[1, 2],
[3, 4]])
print(A)
print()
print(type(A))
(图片由作者提供)
创建矩阵对象
我们可以使用 np.matrix() 函数创建一个矩阵对象。
import numpy as npB = np.matrix([[1, 2],
[3, 4]])
print(B)
print()
print(type(B))
(图片由作者提供)
即使 ndarray 和 matrix 对象外观相同,但它们属于两个不同的类,具有不同的功能。现在我们来讨论一下。
区别 1:矩阵对象是严格二维的,而 n 数组对象可以是多维的
我们可以创建 1d,2d,3d,甚至 4d,5d(但他们很难想象)ndarray 对象,但我们只能创建 2d 矩阵对象。
一维数组
import numpy as npA = np.array([1, 2, 3])
print(A)
print('\nDimensions:', A.shape)
print('No. of Dimensions:', A.ndim)
(图片由作者提供)
二维数组
import numpy as npB = np.array([[1, 2],
[3, 4]])
print(B)
print('\nDimensions:', B.shape)
print('No. of Dimensions:', B.ndim)
(图片由作者提供)
三维数组
import numpy as npC = np.array([[[1, 2], [3, 4]],
[[5, 6], [7, 8]],
[[9, 10], [11, 12]]])
print(C)
print('\nDimensions:', C.shape)
print('No. of Dimensions:', C.ndim)
(图片由作者提供)
矩阵对象是严格二维的。如果我们试图创建一个一维矩阵,它会自动创建一个二维矩阵。
import numpy as npA = np.matrix([1, 2, 3])
print(A)
print()
print(type(A))
print('Dimensions:', A.shape)
print('No. of Dimensions:', A.ndim)
(图片由作者提供)
如果我们试图创建一个 3d 矩阵,它会给出一个错误。
np.matrix([[[1, 2], [3, 4]],
[[5, 6], [7, 8]],
[[9, 10], [11, 12]]])
(图片由作者提供)
区别 2:n array 和 matrix 对象在使用*(单星号)运算符时表现不同
当我们使用 ***** 操作符将两个 ndarray 对象相乘时,结果是元素到元素的乘法。
a = np.array([[1, 2],
[3, 4]])
b = np.array([[5, 6],
[8, 9]])
print("a", type(a))
print(a)
print("\nb", type(b))
print(b)
print("\n* operation on two ndarray objects (Elementwise)")
print(a * b)
(图片由作者提供)
当我们使用 ***** 运算符将两个矩阵对象相乘时,结果是点(矩阵)积。
c = np.matrix([[1, 2],
[3, 4]])
d = np.matrix([[5, 6],
[8, 9]])
print("c", type(c))
print(c)
print("\nd", type(d))
print(d)
print("\n* operation on two matrix objects")
print(c * d)
(图片由作者提供)
区别 3:n array 和 matrix 对象在使用**(双星)操作符时表现不同
当我们在两个 ndarray 对象上使用**操作符时,结果是每个元素的元素值的平方。
a = np.array([[1, 2],
[3, 4]])
print("a", type(a))
print(a)
print("\n** operation on two ndarray objects (Elementwise)")
print(a ** 2)
(图片由作者提供)
当我们在两个矩阵对象上使用**运算符时,结果是一个矩阵乘法!
b = np.matrix([[1, 2],
[3, 4]])
print(b)
print("\n** operation on two matrix objects")
print(b ** 2)
(图片由作者提供)
区别 4: matrix 类是 ndarray 类的子类
Matrix 对象继承了 ndarray 对象的所有属性和方法。
区别 5:矩阵对象有。I 代表逆,但 ndarray 对象不代表逆
a = np.matrix([[1, 2],
[3, 4]])
print(a)
print('\nInverse')
print(a.I)
(图片由作者提供)
b = np.array([[1, 2],
[3, 4]])
print(b)
print('\nInverse')
print(b.I)
(图片由作者提供)
要得到 ndarray 对象的逆,使用 np.linalg.inv() 函数。
np.linalg.inv(b)
(图片由作者提供)
区别 6:用法—通常使用 ndarray 类而不是 matrix 类
下面是 numpy 文档对这两个类的用法的描述。
不再推荐使用 matrix 类,即使是线性代数。相反,使用常规的 numpy 数组。matrix 类将来可能会被删除。
摘要
ndarray 和 matrix 类表现不同。使用 matrix 类可能要容易得多,因为这就像在线性代数中使用矩阵一样。如果你需要处理多维数组,你应该使用 ndarray 对象,因为它们是多维的。Numpy 文档推荐你使用n 数组对象,而不是矩阵对象。通过使用适当的函数,您总是可以将一种类类型转换成另一种。因此,使用 np.asmatrix() 函数将一个 ndarray 对象转换成一个 matrix 对象。
a = np.array([[1, 2],
[3, 4]])
print(a)
print(type(a))
print()b = np.asmatrix(a)
print(b)
print(type(b))
(图片由作者提供)
此外,您可以使用 np.asarray() 函数将矩阵对象转换为n array对象。
a = np.matrix([[1, 2], [3, 4]])
print(a)
print(type(a))
print()b = np.asarray(a)
print(b)
print(type(b))
(图片由作者提供)
感谢阅读!
本教程由Rukshan Pramoditha*,*数据科学 365 博客作者设计创作。
在 https://rukshanpramoditha.medium.com阅读我的其他文章
2021–05–08
5 从数据科学项目的执行中获得的关键(和额外收获)
这是我多年来从执行许多数据科学/机器学习项目中学到的一个要点。
由 Unsplash 上的 Element5 数码拍摄
W 当谈到执行一个项目和参与一个竞争时,在整体方法上有(或者应该有)什么大的不同吗?答案既是肯定的,也是否定的——某些方面非常相似,但很少一部分必须以不同的方式获得成功。
在这篇文章中,我试着列出了这些年来我学到的 5 个关键知识。很少有人听起来太简单而不能归类为键,但正如史蒂夫·乔布斯常说的那样,*…。*简单可以比复杂难。
1。知道你的目的地
不知道最终目的地让我们在不必要的道路上徘徊。
所以在你开始之前,决定并完成你的目标。实现这一点的方法是 写下清晰简洁的问题陈述。
在竞赛的情况下,将提供问题/目标陈述,但对于项目,将由您决定。因此,把它写在一个段落的长度内,并始终坚持下去。
2.了解你的道路
马库斯·金珀勒在 Unsplash 上的照片
现在你知道你想到达哪里,是时候记下你到达目的地的路径了。尽早确定关键点,如:
-你需要什么样的数据
-你的数据来源是什么
-你怎么得到这些数据
-当你开始 EDA 时,你的假设是什么?
-你将如何组织你的项目
-等等等等
这里关键的一点是——就像目标一样,尽早决定你的目标之路。
再次强调,尽可能具体和详细。你可以使用像 Trello 这样的工具(或者任何你喜欢的工具)来更容易的追踪。
3.活出你的数据
约翰·Lc 在 Unsplash 上的照片
既然您已经准备好了数据集,那么就开始深入研究吧。探索,探索,再探索——不断深入,直到这些数据真的开始出现在你的梦里。
我怎么强调这一步的重要性都不为过。专家说项目 80%的时间都花在收集和分析数据上,他们绝对正确!
4。永远不要放弃任何假设
在当今信息泛滥的世界,对任何话题都很难有客观的看法。当试图通过从数据中提取洞察力来解决问题时,对该领域的主观看法可能会成为障碍。它会以这样或那样的方式影响我们的分析,引诱我们“折磨数据”来“承认”我们选择的东西。因此,在开始任何数据分析之前,不管是泰坦尼克号还是新冠肺炎号的数据集,都要先把这个主题的所有“知识”放在一边,这一点非常重要。这并不是说应该忽略领域专业知识,必须尽可能地利用它,但是要有最大的判断力
因此,如果你曾经因为“认为”一个假设不重要而“觉得”要拒绝这个假设,请立即小心。无论如何,测试和验证它,让数据告诉你什么是重要的,什么是不重要的,而不是相反。
5.慷慨地使用 Jupyter
Jupyter notebooks 是开始对数据进行探索性分析的一个极好的(如果不是完美的)地方。我们可以很容易地在一个地方看到代码和结果。
然而,有时我们会受到一种势利的态度的影响,因为 Jupyter 不够“酷”,所以不使用它,并试图通过编写 Python 脚本来执行 EDAs。根据我的经验,这样做效果不好。
一旦 ed a 完成,模型最终确定,我们已经设计了一个清晰的端到端流程,我们必须用一组 Python 或 R 脚本来实现它。但在那之前,朱庇特是你最好的朋友。
6.从简单开始
以英国哲学家奥卡姆的威廉、命名的奥卡姆剃刀(也被称为“吝啬法则”)可以总结如下:
在相互竞争的假设中,应该选择假设最少的一个。
这可能是我多年来学到的最重要的一课。在涉及数据科学的项目的每一步中,总是选择最简单的方法。这尤其适用于构建模型——总是在给出相似结果的模型中选择最简单的一个。至少从最简单的方法开始,千万不要跳进一个非常复杂的方案里,试图游到岸边。
结论
如果你读到这里,谢谢你!!
在这篇文章中,我试图写下这些年来我学到的最重要的非技术性的教训。我确信有更多的被植入潜意识层面,因此我不会经常或轻易地注意到它们。
你同意这些观点吗?你学到了什么?请在评论区分享。
我在机器学习项目中使用的 6 个键盘快捷键
每天(如果我在编码)
图片由来自 Pixabay 的Steve buiss NNE拍摄
为什么要把 1 秒钟砍掉呢?
捷径不仅仅是节省时间。这种做法保护我免受手腕疼痛,因为我每天工作数小时。
为什么要节省时间?这些建议不仅为我节省了一天的时间。他们就像存钱和锻炼的习惯。它们不会让你在短期内变得更富有、更健康。然而,当着眼于终身价值(LTV)时,我说如果你希望活几年,这是值得的。
学习需要多长时间?
对我来说,没花多少时间。我每天都使用快捷键(如果是编码的话),所以记忆很容易。
这些快捷键将我带到了一个新的工作水平,并消除了人为错误。
使用快捷方式工作也是一大乐事。感觉像是专业的事情。
GIF via GIPHY,【https://giphy.com/gifs/UFGj6EYw5JhMQ
这些快捷键适用于 VS 代码和 Google Colab。我会用 macOS 举例。如果你使用的是 PC,我发现它们之间的主要区别如下:
- Command,简称 cmd。Mac 上有两个这样的。两个都在空格键旁边。此密钥不在 Windows 上。控件,或简称为 ctrl,取而代之。
- 选项。就在 cmd 旁边。请改用 PC 上的 Alt 键。
0.流行快捷方式列表
为了让我们在同一页上,这里有一个键的列表,虽然超级有用,但我周围的人太熟悉了。
- 复制粘贴
突出显示➡ Cmd + C ➡选择目的地➡ Cmd+V
- 加注释
突出显示➡ Cmd + / ➡重复撤销
- 转到开始/结束
Cmd +向上➡ Cmd +向下
- 选择一两行
突出显示➡ Cmd + up
- 选择一个段落
放置光标➡ Shift + cmd +向上➡ Shift +向下撤消
- 缩进和不缩进
突出显示要撤消的➡Tab ➡Shift + Tab
现在我们来看看我很乐意分享的。
1.复制粘贴再探
每个人都知道 cmd+c 和 cmd+v,但是你知道你可以不用高亮显示就能做到吗?
让光标停留在您想要复制的代码行上,执行命令 c,命令 v。
cmd+c ➡
仔细看看。光标不在代码行的末尾,但是编辑器仍然足够聪明,知道在哪里粘贴新行。
这一举措不太受欢迎,但却更受欢迎。大多数代码行都没有那么长,所以突出显示来复制可能没有什么效果。
想只选择线中的一部分吗?这种情况下,出现的捷径会让你会心一笑。
2.更好的内嵌突出显示
不要一次选择一个单词,而是逐个单词而不是逐个字符地跳转。
option+shift+向右(或向左)
如果你只想移动光标,放弃 shift。那就没有选择了。
这使得选择整行的一部分时速度更快,这是避免触摸鼠标的另一种方式。
3.本地搜索和替换
你是否曾经想做一个搜索并全部替换,但是担心你会删除一些非故意的东西?
做 Cmd+D
将光标置于➡ cmd+d ➡edit
Cmd+D 是同时编辑同一个参数的直接方法。这样更容易,错误更少。
我确实注意到有些 Jupiter 笔记本没有这个功能。在这种情况下,多光标编辑适合您。按住 option 键并单击以获得多个光标。
4.一步复制粘贴
在短时间内将你的模型放大几倍。
option + shift +向下(或向上)
哎呀!太大了!
当与清单上的下一项结合时,它甚至更强大…
5.上下移动,携带代码
稍微调整一下就完美了。
选项+向上➡选项+向下
6.重新审视缩进
来回移动光标缩进很痛苦。我喜欢 shift+tab,也渴望同样的快捷方式。
所以我改用 cmd + [ or ]来左右移动代码
cmd + [,和 cmd + ]
下一步是什么?
这些技巧是我在和我的社区一起工作时发展出来的。
要了解更多关于我们如何优化,请看下面比快捷键更有价值的东西。
中级会员资格使我有可能学到足够的知识来为数据科学写作。 用我的个人链接 报名,然后在下面评论,我会给你发一个分享我全程的 pdf。
值得关注的 6 个鲜为人知的数据科学博客
知名度低不代表素质低。
实话实说吧;如果你想学习任何与数据科学相关的东西,或者一般的技术,你可以通过谷歌搜索很容易地做到这一点。说到数据科学,寻找信息并不是人们加入该领域时面临的主要问题。
最常见的问题是完全相反的。当你刚接触数据科学时,外面的信息量是非常巨大的。这么多视频,证书,线上线下课程,还有博文。你如何从不太好的东西中发现好的东西?那些风格易于你理解和遵循的?
有些人喜欢跟随流行的信息来源,因为毕竟,如果一件事广为人知,那么它就是好的。不幸的是,情况并非总是如此;有时候运气来了,尤其是当我们谈论互联网的时候。然而,这并不是说流行的数据科学教育资源不好。
</9-comprehensive-cheat-sheets-for-data-science-46005d72b485>
但是,在这个极具挑战性和要求很高的领域,引起注意并不总是容易的,不是因为资源的质量,而是因为资源的数量。作为一个从零开始并仍有很长路要走的数据科学博客作者,我理解新博客作者为证明自己并脱颖而出所经历的斗争。
我决定写这篇文章来讨论一些不太出名的数据科学博客,它们分享高质量的信息、教程和博客。但是,当然,还有更多的高质量的工作,这个列表仅仅是其中的一个例子。你可能遇到过一个或多个这样的博客,但是如果你没有,也许这篇文章会给你介绍一个新的信息来源。
№1: Domino 数据科学博客
让我们从 Domino 数据科学博客开始我们的列表。该博客专注于发布关于数据科学、机器学习和编程各个方面的深度文章,每月发布 1~2 篇文章。这个博客上的每篇文章通常都很详细,并附有视频解释,为视觉学习者提供主题。
该博客专注于数据科学的纯技术方面,包括关于数据科学实际应用的教程文章。此外,该博客还有一个职业板块,可以找到一些数据科学方面的空缺和工作职位。
</5-new-data-science-books-that-you-should-consider-reading-c90aec1d5b0d>
№2:数据经济
接下来,我们有数据经济。Dataconomy 与其说是一个深度博客,不如说是一个新闻和信息博客。该博客包括各种文章,涉及数据科学领域的新趋势、研究论文的最新结果以及一些关于当今数据驱动社会的专家意见。
此外,数据经济涵盖了大数据、机器学习和商业不雅领域正在发生的一切。该博客还在全年举办不同的活动,旨在传播数据科学知识,并在全球范围内形成一个数据科学家社区。
№3:小美女数据
作为一名科技界女性,我们总是寻求与其他科技界女性建立关系,因为我们每个人都有自己的经历可以分享。所以我一直寻找女性建立的资源,小美女数据博客没有让人失望。一位女性数据科学家创建了这个博客来讨论所有关于数据科学和分析的事情。
小小姐数据是一个相当活跃的博客,每月有 3~5 个博客。但是,这个博客中我最喜欢的部分是# funda Friday部分,其中包括关于数据科学的一个方面或主题的简短、简洁和有趣的 3 分钟文章。这些简洁但充满信息的迷你文章读起来总是很有趣。
№4:预测黑客
接下来是预测黑客,或者如网站上所写的预测[hacks],这是由 比利·博纳罗斯**&乔治·皮皮斯 **创建的博客。两位专业数据科学家都热衷于与世界分享他们的经验和数据科学的魔力。
该博客包含许多关于数据科学不同主题的教程,以及实现这些教程的代码。他们还有一个特定的部分,提供关于编写有效的数据科学算法、在数据科学中成功等的技巧和诀窍。最后,他们提供了一个提示部分,展示了执行日常数据科学任务的最有效方法。
**</9-discord-servers-for-math-python-and-data-science-you-need-to-join-today-34214b93d6b8> [## 9 台用于数学、Python 和数据科学的 Discord 服务器,您需要立即加入
towardsdatascience.com](/9-discord-servers-for-math-python-and-data-science-you-need-to-join-today-34214b93d6b8)
№5:数据科学
另一个由女性创建的博客是 RStudio 的数据科学家茱莉亚·西尔格的数据科学类博客。在这篇博客中,Julia 讨论了她如何使用数据科学来回答有趣的天文学、物理学和教育问题。
数据科学博客是一个活跃的博客,每月有 3~4 个博客,关注各种主题。有时,每个月都关注数据科学的一个特定方面或一种新的数据科学工具。本博客中的大多数文章都使用 R 作为构建应用程序的主要编程语言。
№6:数据科学 101
我们将以一个专门为初学数据科学家或想进入数据科学的人开设的博客来结束这个列表,这个博客就是 Ryan Swanstrom 的数据科学 101 博客。Rayan 曾在许多公司担任数据科学家,包括微软和富国银行,他使用这个博客与世界分享他的经验。
数据科学 101 博客上的大多数帖子都附有该帖子的视频教程。如果你想获得数据科学学位,该博客还提供了关于可能的数据科学训练营和学院的信息。
外卖食品
当我们谈论像数据科学这样的热门领域时,总有一些博客或 Youtube 频道主导着该领域,使得新人很难进入并留下他们的印记。但是,如果新人提供了高质量的作品、高质量的解释和高质量的例子,不管他们的初始观众有多少,他们都会大放异彩。
我从一无所有开始;我从未想过人们会觉得我的文章有用;我的全部目标是写一些至少对一个人有益的东西。我很高兴每一个分享我的作品并帮助我增加我的观众的人,所以我想为那些努力提供高质量作品的博客们做同样的事情。
</6-best-python-ides-and-text-editors-for-data-science-applications-6986c4522e61> [## 数据科学应用的 6 个最佳 Python IDEs 和文本编辑器
towardsdatascience.com](/6-best-python-ides-and-text-editors-for-data-science-applications-6986c4522e61)
本文通过一些不太知名的数据科学博客提出,尽管不像其他知名博客和网站那样出名,但它们仍然提供同样的、有时更高质量的内容,值得关注。所以,下次你有数据科学的问题,试试这些博客;也许你会找到一个新的喜欢的博客。**
6 只鲜为人知的熊猫集合功能
…这使得 groupby 函数更加有用。
巴赫尔·凯里在 Unsplash 上拍摄的照片
groupby 是用于数据分析的最常用的 Pandas 函数之一。它首先根据一列中的不同值将数据点(即数据框中的行)分组。然后,它计算每个组的聚合值。
假设我们有一个包含汽车品牌和价格的数据集。为了计算每个分支的平均价格,我们根据 brand 列对行进行分组,然后对 price 列应用 mean 函数。
Pandas 提供了几个可以和 groupby 函数一起使用的集合函数,比如 mean、min、max、sum 等等。在本文中,我们将看到一些鲜为人知的聚合函数,它们使得 groupby 函数更加有用。
我们将涉及的功能有:
- 第一
- 最后的
- 没什么
- 努尼克岛
- 形容
- 分位点
让我们从创建一个样本数据框开始。
import numpy as np
import pandas as pddf = pd.DataFrame({
"Brand": ["Ford","Honda","Toyota","Seat"] * 25,
"Price": np.random.randint(10000, 30000, size=100)
})df.head()
(图片由作者提供)
我们有一个包含 100 辆汽车的价格和品牌信息的数据框。
1.第一
第一个函数,顾名思义,返回每个组的第一个值。
df.groupby("Brand", as_index=False).first()
(图片由作者提供)
2.最后的
last 函数返回每个组的最后一个值。
df.groupby("Brand", as_index=False).last()
(图片由作者提供)
第一个和最后一个函数对于这个数据集来说可能不是很有用。但是,有时您需要一个简单的解决方案来查找每个组的第一个或最后一个条目。当您处理基于日期或时间的数据时,顺序更加重要。
3.北
第 n 个函数扩展了第一个和最后一个函数的功能。它允许获取每个组的第 n 行。
df.groupby("Brand", as_index=False).nth(2)
(图片由作者提供)
- 第 n 个(0)与第一个()相同
- 第 n 个(-1)与最后一个()相同
4.努尼克岛
nunique 函数返回每个组的不同值的数量。在我们的数据集中,每个品牌可能是 25,因为我们在一个大范围内生成了 25 个随机整数。
当处理现实生活中的数据集时,每个类别或组的唯一值可能是一种有价值的见解。
df.groupby("Brand", as_index=False).nunique()
(图片由作者提供)
5.形容
describe 函数为每个组返回几个统计数据。它通常用于获取整个数据框的概览。我们还可以将它与 groupby 函数一起使用,从几个不同的角度比较各组。
df.groupby("Brand", as_index=False).describe()
(图片由作者提供)
25%、50%和 75%的值分别是第一、第二和第三四分位数。与其他统计数据一起,它们提供了值分布的结构化概览。
第一个分位数(25%)意味着 25%的值低于该值。同样,50%的值低于第二个分位数,因此第二个分位数是中值。
6.分位点
我们用 describe 函数得到 25%、50%和 75%的分位数。分位数函数提供了更多的灵活性,因为它接受一个参数。
为了找到 40%的分位数,我们将 0.4 作为参数传递给分位数函数。
df.groupby("Brand", as_index=False).quantile(0.4)
(图片由作者提供)
结论
groupby 函数是探索性数据分析中的救命稻草。mean、sum、min 和 max 是 groupby 常用的聚合函数。
我们在本文中讨论的函数并不常用,但在某些情况下它们会派上用场。
最后但同样重要的是,如果你还不是中级会员并打算成为其中一员,我恳请你使用以下链接。我将从你的会员费中收取一部分,不增加你的额外费用。
https://sonery.medium.com/membership
感谢您的阅读。如果您有任何反馈,请告诉我。
我作为数据工程师早期学到的 6 个教训
刚开始做数据工程师的时候,我不知道自己不知道什么。这是我在数据职业生涯早期学到的 6 件事。
1.与利益相关者保持沟通
由 Unsplash 上的 krakenimages 拍摄的照片
在我最初的几个数据工程项目中,我确定了工作范围,收集了最初的需求,然后开始着手工作。我取得了很大的进步,感觉自己正在取得成就。然后我就卡住了。我确信我已经完成了,但认为还有更多的事情要做。
在拖延了太久才接近利益相关者之后,我伸出手去检查一下。原来我已经做了最初需要做的事情,但是需求已经改变了,所以我需要重新做一大块工作。如果我一直和他们保持联系,我就会节省很多时间。
这教会了我始终与利益相关者保持联系,以保持一致并有效利用我的时间。项目会发生变化,在这个过程中不可避免地会发现更好的解决方案,所以最好保持沟通渠道畅通。
在进行项目时,定期更新项目干系人的信息也是一个好主意,而不是等到你完善了自己的工作,这是新程序员常犯的错误。
2。学会区分工作的优先顺序
毫无疑问,你将是你团队的一笔财富,许多人都想分一杯羹(你的时间)。
你需要按照紧急程度和重要性来排列工作的优先顺序,不要害怕对别人说不。最好是说一件工作还不可能,但是你会让他们知道什么时候有时间,而不是说你可以做这件工作,但是没有完成。
80-20 原则在这里发挥了作用,你 80%的成果来自你 20%的努力。你需要优先考虑你的工作中能带来最大价值的部分,而不是花很多时间去完善最后 20%的工作。这样你就能完成重要的事情,并把大部分时间花在这上面。
再次强调,如果需要,不要害怕说不。
3。关注核心技能
克里斯里德在 Unsplash 上的照片
SQL 和 Python 是数据工程的支柱。学习核心技能,然后你可以将它们转化为你随后使用的更复杂的技术。
试图一下子学会所有的东西将会使你一事无成,但是有一个坚实的基础将会使你成功。无论出现什么样的新工具,您都需要了解基本原理,以充分释放最新软件的价值。
随着新的、更优化的工具的发布,最新的技术通常变化很快。因此,在你职业生涯的开始,不要专注于追逐最热门的新工具,而是建立一个强大的可转移主题的知识。由于坚实的基础,能够快速掌握新技术比知道一种特定的工具要好,这种工具在几年内可能不会流行。
最近,许多公司都在推动一种更简单、高效的技术堆栈。例如,不再构建复杂的 Hadoop 系统,而是使用 Databricks 作为“一刀切”的解决方案。
不言而喻,但是,了解你的工作中使用的技术栈!
4。堆栈溢出,堆栈溢出,堆栈溢出
Bekir dn mez 在 Unsplash 上拍摄的照片
在我接受为期四个月的数据工程师培训期间,一些人试图记忆部分代码,而不是努力培养应用代码和找到解决方案的能力。
专注于能够凭记忆编码是错误的。尽管这很令人印象深刻,但这并不实际。你从事的每个项目都可能与上一个大不相同,你需要使用新的技术。
这里的关键是培养批判性思维和解决问题的技能。我们获得报酬的部分原因是我们适应问题并找到解决方案的能力。如果问题可以通过你以前做过的代码来解决,那么你对团队来说就没有价值了。
能够有效地使用谷歌,并知道如何将你的发现应用到你的特定问题中,这是一个数据工程师的关键能力。使用堆栈溢出。
5。获得导师
Amy Hirschi 在 Unsplash 上拍摄的照片
作为一名数据工程师,一个重要的部分就是乐于学习。这包括培养你的技术和软技能。
找一个导师可以让你向已经走过你这条路的人学习。如果你花时间向导师学习,许多灾难和错误是可以避免的。
我个人认为有一个和你的工作关系密切的导师(可能是你的经理)和一个关系较远的导师是件好事。这应该是同一行业的人,但在不同的公司。
这个解决方案给你一个人来评论你的工作,并在你工作的企业中发展你。它还能让你得到如何管理你正在工作的公司的建议,并思考你在当前公司之外的职业发展。
6。享受工作
照片由普里西拉·杜·普里兹在 Unsplash 上拍摄
你醒着的时候大部分时间都在工作,你可能不想不开心地度过。关注你工作中好的方面,努力让它变得更好,并享受它。
数据工程确实是一项有益的工作。你努力解决难题,并能对公司产生一些真正的影响。当你的代码停止产生错误并且第一次运行完成时,那种解脱的时刻应该被珍惜。
你可能隐藏在数据科学家或分析师的背后,但你是这项工作的骨干。解决问题总是好的。
这些只是我作为一名数据工程师时学到的一些技巧。我希望我开始的时候就知道这些,所以希望这也能帮助你。
我收到并想传达的一些建议是:不要压力太大,对你的脑力有所选择,以免精疲力尽,并与你的团队交流。尤其是在家工作时,你不会想一直像这个人一样:
杰佛逊·桑托斯在 Unsplash 上的照片
我是 Rory Middleton——一名数据工程师,热衷于个人发展、行为经济学和游戏。之前,我做过羊驼剪毛师和滑索教练。我的目标是写各种主题的文章,并希望你订阅加入我的行列。
面向数据科学家的 6 个 Linux 命令
终端命令让您的数据一览无余
Martin Brechtl 在 Unsplash 上拍摄的照片。图片由作者提供。
介绍
GNU 核心实用程序(coreutils)是一个用于文件、文本和 shell 的命令实用程序包。它有一百多个命令。
在本文中,您将发现六个 GNU Coreutils 命令,它们对于处理文本、CSV 和数据文件非常有用。
**Table of Contents**
· [Introduction](#43b2)
· [Sample data](#049e)
· [head](#2215)
· [tail](#c690)
· [fold](#d54d)
· [sort](#850e)
· [paste](#8641)
· [cut](#5cf6)
· [Conclusion](#b944)
· [References](#7f28)
抽样资料
我们使用来自 Github repo 的样本数据。如果你想编码,请复制或下载它。它包含样本文本和 CSV 文件。
头
head 命令将每个文件的前 10 行打印到标准输出。您可以使用-n
选项更改要显示的行数。这里我们从两个文件中打印 5 行。
$ head -n 5 apache-2.0 gnu-agpl-3.0
==> apache-2.0 <==
Apache License
Version 2.0, January 2004
[http://www.apache.org/licenses/](http://www.apache.org/licenses/)TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION==> gnu-agpl-3.0 <==
GNU AFFERO GENERAL PUBLIC LICENSE
Version 3, 19 November 2007Copyright (C) 2007 Free Software Foundation, Inc. <[https://fsf.org/](https://fsf.org/)>
Everyone is permitted to copy and distribute verbatim copies
使用-q
选项打印多个不带标题的文件:
$ $ head -n 5 -q apache-2.0 mit
Apache License
Version 2.0, January 2004
[http://www.apache.org/licenses/](http://www.apache.org/licenses/)TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
MIT LicenseCopyright (c) [year] [fullname]Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal
让我们使用 curl 和管道来发送输出,作为head
命令的标准输入。
$ curl -s [https://raw.githubusercontent.com/shinokada/sample-csv/main/LICENSE](https://raw.githubusercontent.com/shinokada/sample-data/main/licenses/mit) | head -n 5
MIT LicenseCopyright (c) [year] [fullname]Permission is hereby granted, free of charge, to any person obtaining a copy
尾巴
tail
命令与之前的head
命令非常相似。它将每个文件的最后 10 行打印到标准输出。使用-n
选项改变行数。
$ tail -n 3 mit isc
==> mit <==
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
==> isc <==
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.%
在上面的例子中,我们输出两个文件。
使用-q
选项隐藏标题。
$ tail -q -n 3 mit isc
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.%
折叠
[fold](https://www.gnu.org/software/coreutils/fold)
命令包装每个文件中的输入行,并写入标准输出。默认宽度为 80,您可以使用-w
选项进行更改。
如上图所示,fold mit | head
将文本换行到 80 个字符。fold -w 40 mit
将文本换行为每行 40 个字符。
当您想在空格处换行时,使用-s
选项。
上图中的第二个示例用空格换行。
分类
sort
命令对文件或标准输入进行排序。结合使用-t
(字段分隔符)和-k
(键)选项,您可以按字段对文件进行排序。例如,如果您想对 CSV 文件进行排序,使用-t,
选项将字段分隔符指定为逗号。使用-k2
告知您想要按第二个字段排序。
在上面的例子中,grep 命令从 mail_addresses.csv 中选择“Second Avenue”。sort
命令使用管道中的标准输入,并按照第二个字段对行进行排序。
粘贴
你可以使用paste
命令连接多个文件。
$ cat sample5.txt
Python
Bash
Go
Rust
C#$ cat sample6.txt
John
Sarah
James
Elizabeth
Tom$ cat sample7.txt
4 years
3 years
1 year
2 years
4 years
这里我们连接三个文件。
$ paste sample{5..7}.txt
Python John 4 years
Bash Sarah 3 years
Go James 1 year
Rust Elizabeth 2 years
C# Tom 4 years
上面的例子使用 Bash 范围{5..7}
扩展到 5,6,7。
使用-d
选项指定分隔符。下面的例子需要两个分隔符,因为我们要连接三个文件。
$ paste -d "||" sample{5..7}.txt
Python|John|4 years
Bash|Sarah|3 years
Go|James|1 year
Rust|Elizabeth|2 years
C#|Tom|4 years
使用-s
选项垂直连接,而不是平行连接。
$ paste -s sample{5,6,7}.txt
Python Bash Go Rust C#
John Sarah James Elizabeth Tom
4 years 3 years 1 year 2 years 4 years
paste
命令也可以创建列。
切口
cut
命令剪切输入数据的列或字段。使用-d
选项指定字段分隔符,使用-f
选项指定要选择的列/字段。
上面的例子使用了一个 CSV 文件,所以分隔符是逗号。我们只打印出第 4 和第 7 个字段。
您可以为-f
选项使用一个范围参数,如上例7–9
。
你可以使用 [cut](https://betterprogramming.pub/9-terminal-commands-you-can-start-using-today-7b9b0e273894)
命令来删除文件中每行的一些字符。
结论
这些命令允许您从终端快速浏览数据。通过使用重定向,您可以创建新的数据文件,并且可以为您的项目创建所需的数据文件。
通过 成为 会员,可以完全访问媒体上的每一个故事。
https://blog.codewithshin.com/subscribe
参考
2021 年要追求的 6 个机器学习证书
在你的简历中写下这些会有很大的不同。
数据科学是最通用的领域之一;甚至它的名字也不能很好地解释该领域实际涉及的内容。也许这是人们发现这个领域很有挑战性,很难进入,甚至更难表现出专业性的一个原因。
众所周知,在数据科学界,要成为一名“优秀”的数据科学家,关键在于你构建的投资组合有多强大,你的项目有多多样化,以及它们能在多大程度上展示出你创造性地、高效地解决任何问题的能力。
尽管成为一名数据科学家(或在其任何分支中拥有专长)不需要大学学位,但拥有一些证明你在该领域某些方面的专业的证书可以改变你的投资组合,让你的职业生涯更上一层楼。
这不仅适用于一般领域,也适用于它的所有分支。也许该领域最著名的分支是机器学习。现在,机器学习在我们的生活中无处不在,在我们的电脑、手机甚至厨房电器中。
</6-data-science-certificates-to-level-up-your-career-275daed7e5df>
但就像数据科学一样,机器学习这个术语是许多算法和技术的保护伞,所以你如何向你未来的雇主表明,当你说“我是机器学习专家”时,你实际上是认真的?
一些公司和大学设计了测试和课程,如果你通过了,你就知道如何在机器学习的海洋中导航,因此,你能够解决任何人摆在你面前的任何问题。这篇文章将涵盖今年你可以追求的前 6 个机器学习证书,并提升你的投资组合和获得梦想工作的机会。
№1:麻省理工学院机器学习和人工智能专业证书课程
这个名单上的第一个证书是由麻省理工学院提供的。机器学习和人工智能方面的专业证书项目是一个短期项目,提供给以前有机器学习知识的人和新人,让他们有能力获得该领域的最新知识。
这个证书并不便宜——注册要 325 美元——因为它不仅仅是一个测试,而是一整套课程和材料。这个简短计划的核心是在大数据和文本处理中使用机器学习算法和技术。但是,如果你愿意,你可以扩大证书的范围——收取额外的费用——以涵盖机器学习的更精确的用法,如医疗领域的机器学习,或计算机版本,或高效的深度学习等。
这个短期计划中的每个课程都有一个您需要完成它们的固定天数,并且整个计划课程需要在注册该计划的 36 个月内完成。
</5-types-of-machine-learning-algorithms-you-need-to-know-5ac7fce8920d>
№2:斯坦福大学机器学习证书
斯坦福大学提供的机器学习课程和证书,对于那些想进入机器学习同时又想获得证书的人来说,或许是更好的选择。你既可以免费旁听课程,也可以在完成课程后支付 79 美元获得证书。
这门课程是你能找到的最著名和最有益的机器学习课程之一;它由 Coursera 的创始人之一吴恩达教授授课,他是一位拥有超过 1000 万快乐学生的讲师。仅机器学习课程就有近 400 万学生选修。该课程还为英语不是母语或首选语言的学生提供 10 种语言的字幕。
在这门为期 11 周的课程中,您将从头开始学习所有内容,包括数学和统计学,以及机器学习算法的基础知识及其在计算机视觉、医学、音频处理和数据库挖掘中的应用。
№3: IBM 机器学习专业证书
你可以通过参加 Coursera 上的课程获得的另一个证书是由计算机行业传奇人物之一 IBM 提供的机器学习专业证书。和斯坦福大学的课程一样,你可以免费旁听这门课程,也可以获得 39 美元/月的证书。
这个专业证书课程包括 6 门课程,涵盖了理解机器学习算法的理论和实际应用所需的所有知识。虽然如果你有一些编程知识,你可以更好地学习这门课程,但是即使你不太懂编程,你也可以学习这门课程。
本课程还将教您如何使用 Jupyter 笔记本电脑和 IBM Watson 来构建和开发您自己的项目,以便在完成课程后添加到您的投资组合中。
</5-types-of-machine-learning-bias-every-data-science-should-know-efab28041d3f>
№4:哈佛的机器学习证书
这个列表中最后一个基于课程的证书是哈佛大学在 edX 上提供的机器学习证书。该课程是哈佛大学提供的更大、更广泛的数据科学证书的一部分。你可以旁听这门课程,也可以花 99 美元获得结业证书。
本课程将涵盖机器学习的基础知识、基本算法和技术、如何以及何时使用交叉验证、如何构建推荐系统,以及一些常用的、最流行的和新的机器学习算法。
本课程计划在 8 周内完成。但是,它也是自定进度的,这意味着您可以根据需要花任意多的时间来完成本课程并获得证书。
№5:谷歌的专业机器学习工程师
到目前为止,我们涵盖的所有证书都要求完成一门特定的课程或一组课程才能获得证书。谷歌的专业机器学习工程师证书就不一样了。这只是一个证书,意味着你只需要参加一个考试就可以获得这个证书。
花 200 美元,你就可以参加这个谷歌测试,测试你对框架机器学习问题、设计解决方案、处理数据和开发机器学习模型的熟悉程度和能力。不仅如此,你还需要证明你可以自动化高效的机器学习管道,优化你的解决方案。
虽然这个证书没有附带一门你必须参加的课程来获得证书,但谷歌仍然提供了材料,你可以用它来准备考试,以及谷歌专家提供的网络研讨会来帮助你通过考试,并充分利用提供的材料。
</6-web-scraping-tools-that-make-collecting-data-a-breeze-457c44e4411d>
№6: AWS 认证机器学习
亚马逊提供了更具体的证书,尤其是 AWS 系统。AWS certified machinelearning 是一个证书,旨在衡量一个人使用 AWS 云设计、开发和部署机器学习模型的能力。这个证书可以用 400 美元的费用获得。
与谷歌机器学习工程师证书类似,AWS 认证的机器学习专业不需要完成特定的课程才能获得。该证书更多地针对非常熟悉机器学习算法和技术的人,而不是完全的初学者。
该测试有三种语言版本,英语、韩语和中文。亚马逊还提供一些材料和练习测试,你可以用它们来准备考试,并从第一次尝试就通过考试。
最后的想法
在任何领域展现专业都不容易;当你想证明自己的职业是一个多样化的领域,有如此多的分支和技术时,这就变得更加困难了。机器学习是著名的技术领域之一,它不仅仅涵盖编程;它需要数学,解决问题的技巧,甚至沟通技巧。
那么,你如何向雇主证明你的能力呢?虽然在你的投资组合中有多样化的、强有力的项目能充分说明你的能力,但拥有一个顶级大学或工业公司的证书可能是你投资组合中引导你获得工作的一个方面。
在本文中,我向您展示了 6 种证书,它们旨在测试一个人处理和找到最复杂的机器学习问题的解决方案的能力。它们证明你知道如何使用不同的算法来解决不同的问题,并为任何给定的问题确定最合适的算法。
付出额外的努力去学习并获得这些学位将会在你下一次申请工作时,甚至是在工作面试时得到回报。毕竟,如果再加上耐心和毅力,好的努力总会有回报。