TowardsDataScience 博客中文翻译 2020(三十一)

原文:TowardsDataScience Blog

协议:CC BY-NC-SA 4.0

本月你可以免费参加 5 门高级课程

原文:https://towardsdatascience.com/5-premium-courses-you-can-access-for-free-this-month-c6d74a04d79b?source=collection_archive---------4-----------------------

Udacity 免费提供一个月的高级学位,支持新冠肺炎危机。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

照片由弗雷迪婚姻Unsplash

处于隔离状态可能具有挑战性,但它节省了我们大量的时间来专注于自我发展和提高我们作为数据科学家的技能。为了在此期间支持专业人士, Udacity 提供一个月的免费机会,让你选择一个高级纳米学位项目(注意:该优惠仅适用于欧洲和美国)。现在,这些程序通常需要几个月才能完成,但鉴于目前的情况,我相信你可以投入更多的时间,并在一个月内掌握要点(查看系统如何工作这里)。

课程目录涵盖人工智能、数据科学、编程、自主系统、商业等等。在这篇文章中,我强调了 5 个我认为最值得投资的课程。

1.使用 Pytorch 介绍 ML

如果你以前使用过 Python,但对机器学习算法还不太适应,那么这个课程可能很适合你。它涵盖了机器学习的构建模块,并将让您有机会获得实际应用的实践经验。

[## Pytorch 课程机器学习简介| Udacity

先决条件的知识,以优化您的成功机会,在这个计划中,我们建议中级 Python…

www.udacity.com](https://www.udacity.com/course/intro-to-machine-learning-nanodegree–nd229)

2.数据可视化

这是我个人最喜欢的。用数据讲故事是我们所有人的一项基本技能。为了传递我们的信息并产生影响,我们需要清晰的沟通。有效的视觉效果是必不可少的。本课程回答了诸如如何选择正确的情节类型、什么是有效的仪表盘以及如何让你的故事更有说服力等问题。你甚至可以创建一个动画数据故事(对你的投资组合来说是一个很好的投资)。

[## 数据可视化在线课程| Udacity

学会结合数据、视觉和叙事来讲述有影响力的故事,并做出数据驱动的决策。在线学习…

www.udacity.com](https://www.udacity.com/course/data-visualization-nanodegree–nd197)

3.自然语言处理

该课程由亚马逊 Alexa 和 IBM Watson 合作创建,从 NLP 基础知识开始,以构建语音识别器作为最终项目结束。

[## 自然语言处理在线课程| Udacity

为了在这个纳米学位项目中取得成功,我们建议你首先参加任何深度学习课程,相当于我们的深度…

www.udacity.com](https://www.udacity.com/course/natural-language-processing-nanodegree–nd892)

4.交易的人工智能

我不是金融专家,但这似乎是一门非常全面的交易和投资组合管理课程。

[## 交易的人工智能| Udacity

由行业专家设计的完整真实项目,涵盖从资产管理到交易信号的主题…

www.udacity.com](https://www.udacity.com/course/ai-for-trading–nd880)

5.营销分析简介

这是一门与当前就业市场非常相关的课程。您将扩展您的谷歌分析技能,并获得量身定制的营销活动监控和管理的数据科学技能。

[## 营销分析在线课程| Udacity

营销分析纳米学位计划由支持八(8)个项目的内容和课程组成。我们…

www.udacity.com](https://www.udacity.com/course/marketing-analytics-nanodegree–nd028)

最后但同样重要的是:职业技巧课程

如果你正在找工作,这些课程可能是你面试准备过程中的有用资源:

[## 机器学习面试准备| Udacity

在本课程中,您将确切了解在机器学习面试中会遇到什么情况。您将涵盖所有常见的…

www.udacity.com](https://www.udacity.com/course/machine-learning-interview-prep–ud1001) [## 数据科学面试准备| Udacity

数据科学工作面试可能会令人望而生畏。技术面试官经常要求你设计一个实验或模型。你…

www.udacity.com](https://www.udacity.com/course/data-science-interview-prep–ud944) [## 刷新简历| Udacity

你的简历是求职的第一步。通过本课程,你将确定你想工作的公司…

www.udacity.com](https://www.udacity.com/course/refresh-your-resume–ud243)

差不多就是这样!

希望这对你有用。呆在家里,保持安全,保持高效。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

照片由Á·阿尔瓦罗·塞拉诺Unsplash 上拍摄

——继续探索

5 数据系统的设计原则

原文:https://towardsdatascience.com/5-principles-for-designing-a-data-system-ee8fc6db3320?source=collection_archive---------29-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图像来源

您的客户需要一个用户友好、可靠、可扩展、安全和可维护的系统。你怎么能让他们开心呢?

要设计一个高效的数据系统,您需要遵循一些原则。这些原则定义了潜在的规则,并在指导组织实现目标解决方案的过程中发挥着关键作用。在本文中,我们将研究数据系统的五个通用设计原则。

在我们继续之前,我想提一下:

  • 当你阅读时,你会意识到一些要点适用于任何类型的系统,而不仅仅是数据系统,这很好,因为我希望它是通用的;
  • 我交替使用系统数据系统这两个词,它们在这个上下文中的意思是一样的;
  • 有不同种类的数据系统,这些通用原则适用于所有类型的数据系统,但是,从更细的角度来看,每种类型的数据系统都有特定的设计原则。

1.为用户设计

无论是产品还是服务,任何设计决策的主要焦点都应该是用户。毕竟,你不会想要构建一个不符合用户意图的系统。在设计数据系统时也是如此。高管希望在特定时间查看特定形式的数据(可视化)(季度、月度),数据分析师希望查看其他形式的数据(详细报告、记录级数据和频率(每周、每天),数据科学家可能需要原始数据(或特征工程数据)来临时训练 ML 模型。此外,使用数据的应用程序和管道需要不同结构的数据,并且通常是接近实时的。数据操作员、系统支持和维护工程师都是在数据旅程的不同点以不同形式和方式与数据进行交互的用户。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

与用户互动,了解他们的挑战(图片来源)

开始构思一个给定问题的解决方案是非常诱人的。当我们开始这样做的时候,它会产生一种对某些用户可能不合适的解决方案的偏见。因此,在考虑解决方案之前,花足够的时间了解每一组用户的需求是至关重要的。与不同的用户进行研讨会、小组访谈甚至个别访谈,以了解他们的角色和职责、工作方式、当前系统面临的问题等。在构建有效的解决方案方面发挥重要作用。同样重要的是,要评估消费者系统,并评估这些系统是如何设计来处理传入数据并为其他消费者生成数据的。

以下链接将让您对采访用户有一个大致的了解——

用户访谈:如何、何时以及为什么进行用户访谈

用户访谈的艺术

:用户需求应该驱动设计决策,只有在需求被完全定义和评审之后,才概念化解决方案,在迭代中进行调整。

2.故障设计

数据系统不可否认的事实是,事情将不可避免地出错。硬件会出现故障,原因有很多,例如年龄、周围环境、事故,甚至是火灾或地震等灾难。软件故障很常见,在某些情况下,可能很长时间都没有被发现。即使有最好的意图,人们也知道人类是不可靠的,可能会导致系统故障,如不正确的配置、错误的安装等。在数据系统中,此类故障会导致可用性问题、不准确的分析、数据丢失,甚至数据泄露,不仅会给组织造成金钱损失,还会造成声誉和客户的损失。我们只能通过设计数据系统来预防、规避和记录这些故障,从而使数据系统防故障。**

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

确保系统在出现故障时保持运行(图像源)

通过更换老化的设备来减少硬件故障,使数据中心更安全,更不容易发生事故,在区域内提供冗余硬件以应对数据中心故障,并跨地理区域提供冗余硬件以防范灾难。设计可靠的软件解决方案——遵循良好的编码实践,不仅关注错误的检测和通知,还让系统在错误发生时处理错误并自动解决它们。通过自动化部署和配置来减少人工干预,在无法实现自动化的情况下发布记录完善的指南。

:设计系统时要考虑到它们会失败,并确保没有单点故障。

3.面向规模和性能的设计

您的策略可以成功地防止或避免完全失败的情况。但是,随着时间的推移,当数据增长、用户群增加以及业务变化最终要求数据系统发展时,会发生什么情况。您的系统是否能够容纳大量数据,处理大量 I/O 请求,或者随着业务用例的发展而轻松改变?如果系统没有崩溃,但是响应缓慢,您能在复活节周末或其他任何一天处理您系统上的负载吗?

因此,在设计系统时,考虑应对增长、负载随时间增加的选项以及代码的可进化性是至关重要的。理解可以定义系统负载的参数,这些参数在不同的体系结构中可能是不同的,并且在很大程度上取决于系统的使用方式。一个系统可能会有少量用户读取或写入大量数据,也可能会有大量用户不断发出读/写请求。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(照片由凯文·朗莱斯Unsplash 上拍摄)

这些因素将决定您是选择包含缓存存储来加速读/写操作,还是包含横向扩展存储来分配数据负载并鼓励并行处理。单一架构可能很难根据不断变化的业务需求进行修改,因此可以考虑设计域驱动的微服务系统,随着时间的推移,只需较少的开发工作就可以轻松地对其进行更改。

:了解系统可能如何随时间增长,并设计它来处理增长。考虑在设计系统时使用微服务架构,以便随着时间的推移更容易、更快速、更高效地进行更改。

4.安全性设计

每个人都知道安全性有多重要,尤其是对于存储、处理和生成数据的系统。虽然我们意识到数据安全的价值,但我们不时会遇到大量的安全问题,有时涉及大型组织。从统计数据来看,无论我们在保护系统方面投入多少资金,也无论我们实施了多少流程和框架,都很难解决安全难题。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

出于正当理由,在一定时期内访问正确的人(图片来源)

就数据系统而言,您需要充分考虑确保数据在静态和传输时的安全,保护数据免受未经授权的访问,只允许通过安全通道进行外部访问,并通过防火墙验证每个请求。建立监控活动的流程,对可疑行为发出警报,嵌入智能以检测甚至预测漏洞,并执行定期审计以保证合规性。安全性不仅仅是工具和过程,组织中的每个人都有责任,您的设计应该考虑到它的每个方面。

TLDR :安全是一种思维定势,在设计数据系统的时候要考虑到漏洞的方方面面。数据总是加密的,访问控制基于角色,每个服务都需要一个密钥来允许请求,外部访问通过安全通道进行,请求受到监控,如果有可疑情况会发出警报。

5.为运营而设计

在实验室中设计和开发系统是一回事,让系统在生产中运行则完全是另一回事。你为之设计、测试和检查的一切最终都会让你困惑,因为你没有在运营中投入太多的心思。近年来,云解决方案从根本上改变了运营的角色,减轻了管理托管应用程序的硬件和基础架构的负担。但是,运营部门仍然需要处理大规模的关键部署、事件管理、监控、用户管理和其他管理任务。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

想想操作人员(图片由 Unsplash 上的 CDC 拍摄)

在设计可操作的数据系统时,要记住的一个基本点是让事物变得可观察。记录数据传输过程并跟踪传输过程中发生的所有事件,可以让运营部门更轻松地揭开问题的神秘面纱并解决问题。实施强大的监控和警报解决方案有助于深入了解系统性能,并帮助运营部门及时应对问题。自动警报不仅有助于人类对事故采取行动,而且有助于立即执行自动化解决方案,使用户看不到故障。尽可能设计手动任务的自动化,如部署、配置等。为运营用户发布文档和指南,帮助他们了解系统的内部结构、进行根本原因分析或回答业务查询。

:记录和跟踪在数据传输过程中影响数据的事件,部署自动监控和警报系统,自动执行手动任务,并发布文档以促进支持和维护活动。

摘要

近日来,各机构开始对建立数据驱动决策系统表现出更多兴趣。他们中的许多人正在向高弹性、灵活、可扩展和安全的解决方案过渡。在这里阅读我关于为什么您的组织应该现代化其数据平台的文章。

对数据驱动的数字化转型项目有很大的需求,这种需求在未来几年将会上升。遵循这五个设计原则将有助于您作为一名设计师在构建数据系统和成功交付这些项目时专注于基本要素。

如果你喜欢读书,我推荐你阅读马丁·克莱普曼的设计数据密集型应用,它是为架构师、系统设计师、开发人员、技术经理以及几乎所有开发或使用具有某种服务来存储、管理和处理数据的应用的人而写的。

5 个专业 Python Web 开发/端点技巧

原文:https://towardsdatascience.com/5-pro-python-web-development-endpointing-tips-c9375cc95a21?source=collection_archive---------56-----------------------

用 Python 简化端点的 5 种简单方法!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

介绍

我们都经历过…

您有一个准备好部署的模型,但是您正在努力让模型得到部署。这可能是一个会让你的模型停滞不前的结果,让它永远见不到天日。这是一个如此复杂和庞大的问题,以至于我所在的团队已经改变了模型,并且将我们的工作逆向工程到新的模型中,仅仅是为了避免一些部署错误。

让我们面对现实吧——数据科学家不是网络开发者。尽管我们中的一些人可能比大多数人更热衷于 Unix 命令行并了解更多的 web 协议,但当您第一次成为数据科学家时,您不太可能想到部署自己的端点。在很多方面,您的端点和您的模型一样重要!如果没有端点,我们日常使用的许多机器学习模型肯定不会正常工作,这令人震惊!

那么,当你把一个不是 web 开发人员或开发运营工程师的人和一个机器学习工程师混在一起时,你会得到什么呢?

一个数据科学家!

不幸的是,这绝对是经常被忽视的一小部分工作。开发运营本身就是一个完整的领域,真正精通它就像精通笔记本中的数据科学一样深入。幸运的是,今天我将回顾我认为所有数据科学家都会发现对部署和终结点有用的 5 个技巧,所以请合上笔记本,让我们进入部署阶段!

最快的开发服务器

在 Python 中,可能有一千种独特的方式来启动服务器。我个人和职业最喜欢的可能是 Gunicorn3。然而,虽然 Gunicorn 对于服务器来说是一个很好的部署解决方案,但是对于开发来说可能不是那么完美。Gunicorn 有很多我称之为“输出屏蔽”的东西,在这里,你不会在你自己的代码中得到错误,你会收到 Gunicorn 的输出,它可能是误导性的,甚至是不清晰的。如果是这样的话,对你的代码进行修正将会非常困难。幸运的是,除了使用 Gunicorn 来运行您的服务器,还有一些替代方法。

这个服务器有什么了不起的?这个服务器包含在 Python 的标准库中,可以通过一个 Bash 命令在任何 Unix(或 Python)终端上轻松运行。或者,您甚至可以使用 Python 来创建这样一个服务器,这是非常独特的,因为通常服务器只由 Bash 启动。包含此服务器的 Python 库是“http”库。从 http,我们可以导入服务器:

**def** run(server_class=HTTPServer, handler_class=BaseHTTPRequestHandler):
    server_address = ('', 8000)
    httpd = server_class(server_address, handler_class)
    httpd.serve_forever()

然后使用以下命令运行它:

run()

也可以使用带有端口参数的解释器的-m 开关直接调用 http.server。

python -m http.server 8000

这是并且将永远是启动开发服务器的最简单的方法。当我在我的电脑或同事之间共享文件时,我一直在使用它!只要确保你有 TCP 转发到你想要的端口,你就可以让全世界都看到你的主机!不幸的是,虽然这个服务器很容易使用,但我肯定不建议在这样的服务器上部署任何东西 官方 。但是,对于调试、文件共享或。PCK —用 HTML5 或者 WebAssembly 阅读,绝对完美!

Crontab:自动化一切!

我以前确实提到过克朗塔布,这是有充分理由的。Crontab 是一个非常简单,但功能非常丰富的工具,通常被开发-运营工程师用来根据 Unix 系统上的特定时间戳在后台自动执行脚本任务。这些时间戳存储在 CRON time 中,您需要习惯读取这些时间戳。

不管它的整体不可接近性如何,我认为 Crontab 是一个你生活中不可或缺的工具。这是一种快速有效的方法,可以非常容易地实现任何事情的自动化。我一直用它来进行大型 API 提取和后端端点更新。我还使用 Crontab 制作了自我训练模型,这些模型用脚本序列化,然后读入端点。与自动化后端部署的其他方法相比,Crontab 无疑因其易用性和可靠性而独占鳌头。如果您想了解我如何使用 Crontab、NGINX、Julia 和 Julia 在不到一个小时的时间内部署了一个自我训练模型,我写了一整篇关于如何做的文章,您可以在这里查看!:

[## 建立一个自我训练的美丽模型!(简单的方法)

结合开发运营和数据科学的元素,在 Ubuntu 上部署可扩展的自我训练模型。

medium.com](https://medium.com/chifi-media/build-a-beautiful-model-that-trains-itself-the-easy-way-a0d31b611cee)

监督者

Supervisor 或 supervisord 是另一个在开发-运营领域非常受人尊敬和广泛使用的工具。Supervisor 允许 Unix 系统以任何用户的身份执行 Bash 命令,而无需真实用户在场。换句话说,你可以在终端中创建一个你自己的人工版本来“监督”你不想自己管理的应用程序。

Supervisor 是一个特别有用的工具,用于部署您仍然希望监控但不希望有一个无头单元一直运行的服务器。使用 supervisor,您可以通过允许服务器以不同的权限同时处理一系列应用程序来轻松扩展服务器的覆盖范围。所以公认 Supervisor 是一个很棒的工具,但是怎么用呢?

与大多数 Unix 应用程序一样,尤其是那些用于服务器的应用程序,supervisor 可以通过存储在/etc/conf.d 中的配置文件轻松配置。当然,首先您需要实际安装 Supervisor:

# (Ubuntu)
sudo apt-get install supervisor

接下来,您可以使用您选择的文本编辑器编辑 supervisor 配置。我个人喜欢用 GNU Nano。

[program:app]
directory=/var/
command=gunicorn3 -workers=3 flask_app:app
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
stderr_logfile=/var/log/appname/lognameerr.log
stdout_logfile=/var/log/appname/lognamestdout.log

上面我们看到了一个相当基本的管理员配置文件。这个配置的目录部分将决定我们需要在哪个目录中运行我们的命令。接下来,该命令是 Bash 命令,通常用于运行脚本或启动服务器,在本例中是美妙的 Gunicorn3。接下来,我们有 autostart 和 autorestart,它们都是布尔值,将决定每当装入管理程序服务时是否启动管理程序。当 supervisor 实例启动、重新加载或服务器因任何原因重新启动时,将加载 supervisor 服务。接下来,stopasgroup 和 killasgroup 将确定每当重新加载该服务时,该配置文件中的其他应用程序配置是否也会被终止。最后,但同样重要的是,我们能够为输入和输出添加日志文件,这对调试很有用。

Supervisor 是每个数据科学家都应该熟悉的行业标准工具。它不仅对于部署端点几乎是必不可少的,而且当以 Unix 方式完成时,它还可以作为许多事情的基础。这是一个高度通用的工具,我真的发现拥有有用的知识。如果你想看用 NGINX 和 Supervisor 部署 Flask 应用程序的完整教程,幸运的是我正好有这篇文章:

[## 用 Gunicorn 3 展开烧瓶

应用程序部署通常会带来意想不到的后果和错误。部署可以是制定或…

towardsdatascience.com](/deploying-flask-with-gunicorn-3-9eaacd0f6eea)

使用正确的工具

如果你听过这句话

“使用适合这项工作的工具。”

这个概念直接适用于使用不同的 Python Web 框架。例如,像 Django 这样的框架打包了像 0auth authentication 这样的预制工具和大量其他工具。如果是端点控制,那么创建一个完整的 Django 应用程序,而不是从 Flask 创建,是没有意义的。如果你想了解更多关于 web 框架和它们的设计目的,我写了一篇文章,包含了 5 个我最喜欢的 web 框架,有低级的也有高级的。

[## 面向现代开发人员的 5 个平滑 Python Web 框架

5 个更棒的 Python Web 框架供你欣赏!

towardsdatascience.com](/5-smooth-python-web-frameworks-for-the-modern-developer-47db692dfd52)

每当您创建一个端点时,仔细考虑速度和体积是非常重要的。有许多 web 框架都有几十种不同的特性,在创建端点或全栈应用程序时,需要考虑的东西多得惊人。您肯定不希望使用 Django 这样的东西作为简单的端点。虽然 Flask 当然可以用于全栈开发,但是有很多更好的选择。

成为一个万事通

仅仅因为您的工作主要涉及部署返回 JSON 数据的简单端点,并不意味着学习如何使用 Python 进行身份验证和 fullstack 对您没有好处。你可能会遇到成百上千的问题,所有的问题都有成百上千个完全不同的解决方案。在某些方面,虽然您可能想避免“将胡萝卜放在不同的篮子里”,但您肯定不想避免使用部署技能。

如果您知道如何简单地在 Heroku 或类似的服务上部署模型,为什么不自己尝试在 Unix 服务器上部署呢?这些不同的技能肯定会让你在就业和个人发展方面受益。所有的数据科学家都应该了解终端,即使你不能用 NGINX 和 Supervisor 部署自己的端点,只要熟悉 Bash,你仍然可以成为一名更好的程序员。

结论

使用 Python 的一个好处是你可以有很多选择来解决一个特定的问题。拥有几个 web 框架当然是有益的,并且可以使您的部署和开发工作容易得多。学习如何使用诸如 Crontab 之类的东西,以及诸如 Tornado 和 Pyramid 之类的不同网络框架,肯定会对您的数据科学职业生涯带来难以置信的好处。

给数据科学家写好代码的 5 条建议

原文:https://towardsdatascience.com/5-pro-tips-for-data-scientists-to-write-good-code-1fecef64ba09?source=collection_archive---------55-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

luis gomes 摄于 Pexels

以下建议是根据我从学术界到作为数据科学家在不同数据和工程团队的各种项目中工作的经历而提出的。许多数据科学家(包括我自己)没有计算机科学或软件开发背景,因此可能没有受过正规培训或没有良好的代码编写习惯。这些技巧应该有助于新的或有抱负的数据科学家合作编写好的代码,并以更容易生产的方式构建模型。

使用版本控制

这对协作和备份都很重要。它允许我们跟踪项目在开发过程中的变化,对于协调任务和鼓励尽职调查非常有用。Git 是一个强大的版本控制软件,能够分支开发部分,跟踪和提交变更,从远程存储库推送和获取,并在必要时合并代码片段以克服冲突(https://git-scm.com/)。

更多细节请见我的幻灯片“版本控制& Git

让它具有可读性

协作编码的一个关键组成部分是将它交给其他开发人员审查和使用的能力,这意味着它必须是可读的。这包括使用适当的变量名和函数名,并在必要时添加解释性注释,以及定期包含介绍代码片段及其细节的文档字符串。遵循你正在使用的语言的相关风格指南也很重要,例如 Python 中的 PEP-8(【https://www.python.org/dev/peps/pep-0008/】T4)。

保持模块化

编写代码时,保持模块化很重要(https://en.wikipedia.org/wiki/Modular_programming)。也就是说,将它分解成更小的部分,作为整个算法的一部分执行单独的任务。这种级别的功能使您可以轻松:

  1. 控制变量的范围,
  2. 重用代码模块,
  3. 在进一步开发过程中重构代码,
  4. 阅读、审查和测试代码。

编写测试

试着考虑什么样的测试可以和你的代码一起编写,以便检查你的假设和逻辑的有效性。这些测试可以是任何东西,从模拟预期的输入和输出,到检查代码功能的一系列单元测试。单元测试通常以可重复的方式测试最小可能代码单元(可以是方法、类或组件)的功能。例如,如果您正在对一个类进行单元测试,您的测试可能会检查该类是否处于正确的状态。通常情况下,代码单元是独立测试的:您的测试只影响和监控对该单元的更改。理想情况下,这形成了“测试驱动开发”框架的一部分,以鼓励所有的软件在集成或部署前都经过充分的审查和测试(https://en.wikipedia.org/wiki/Test-driven_development),从而最大限度地减少以后重构和调试的时间。

生产代码

试着像将代码投入生产一样编写代码。这将形成良好的习惯,并在不可避免地(希望如此)投入生产时,使其易于扩大规模。

考虑“算法效率”并尝试优化以减少运行时间和内存使用。“大 O 符号”在这里很重要(【https://en.wikipedia.org/wiki/Big_O_notation】T2)。

还要考虑你的代码环境或生态系统,避免依赖,例如,在代码级别(Python virtualenv:https://conda . io/docs/user-guide/tasks/manage-environments . html)或在操作系统级别(Docker containers:https://www.docker.com/what-container)进行虚拟化。

生产级代码还应该使用“日志记录”,以便于在执行代码时查看、检查和诊断问题(【https://en.wikipedia.org/wiki/Log_file】T4)。

显然,编程和开发领域的深度和广度要大得多,但是希望这些技巧能够帮助人们从代码不多的背景进入数据科学领域。尽情享受吧!

照片由 路易斯·戈麦斯 拍摄自 Pexels

作为数据科学家或 ML 工程师,提高 python 技能的 5 个专业技巧

原文:https://towardsdatascience.com/5-pro-tips-to-grow-your-python-skills-as-a-data-scientist-or-ml-engineer-1b899a91d6e?source=collection_archive---------30-----------------------

Patrick 的博客—数据科学

从我作为数据科学家和机器学习工程师的旅程中学到的经验

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

不要做什么的例子,以及你可以如何改进(此处此图的灵感)。图片作者。)

就像大多数从中断的学术生涯中走出来的数据科学家一样(不管是不是自愿的,对我来说两者都有一点!),出于成为数据科学家/机器学习者的需要,我开始改进我的 python 技能。直到我使用 python 大约一年后,我才开始深深地担心我的 python 技能(为此我要感谢一些人,感谢托马斯·莫亚诺丹尼尔·蒙塔诺埃里克·莫法·莫拉莱斯对我作为开发人员的批评,这极大地帮助了我的进步!).

所以我想分享我的经验,告诉大家在我过去的两年里,作为一名数据科学家,同时也是一名开发人员,帮助我提高最快的技巧是什么。

“一个程序员一个月能做到的,两个程序员两个月就能做到。”

弗雷德里克·布鲁克斯

  1. 掌握 git,并为其使用 GUI

大多数开始的人会被告知“以后再担心 git,首先从编写好的代码开始”或“在开始时使用终端,这是真正的专业人员的做法”。我完全不同意这一点,因为我的个人经验告诉我不是这样…尽管这也是矛盾的事实,即创建任何类型的内容的第一条规则是“专注于内容,然后是内容,然后,如果你有时间,改进内容”。

Git 不仅仅是你工具箱里的一个工具。它记录您的更改,因此您不仅可以跟踪您的工作,还可以跟踪您的改进,并且它使您能够通过恢复更改来修复您的错误。你也可以同时处理不同的想法,通过将它们分开来管理你的时间。这是非常宝贵的,尤其是在学习阶段,您可以通过向提交添加有用的消息来注释对代码的修改。

我也强烈推荐使用 GUI,如 SourceTreeGitKraken ,能够直观地看到你的代码库的发展。作为开始, Git 手册会给你一些基础知识,我也强烈建议创建一个虚拟仓库,对它进行测试修改(或者更好,在一个小项目上进行实际的修改),以测试命令并熟悉 Git 和贵由想要使用的东西。使用 GUI 的主要原因非常简单:你打开这个东西,一眨眼的功夫就能看到整个存储库中发生了什么。git 命令行工具永远无法实现这种级别的通信,与存储库的当前状态保持同步是至关重要的。在我看来,Git 存储库是一个非常可视化的对象,所以它应该被可视化。

2.学习你所使用的编程语言的基础知识

Python 是用于数据科学和机器学习的主要语言,但这不是它的唯一用途,有些人可能还在使用 R、JavaScript、Go,甚至 Java(呸!)用于他们的用例/工作。Python 是作为一种成熟的编程语言而设计的,它有大量的用例,所以它非常通用、灵活和有用。学习使用它将使你更有效率和生产力,不仅在你的数据科学或机器学习生涯中,而且作为一名开发人员。

这里有一个简短的清单,列出了你可能想了解的一些事情(按难易程度排列):

3.使用 makefile

一个 Makefile 可以被看作是存储在一个文本文件中的终端快捷命令的集合,该文本文件集成了 make 命令行实用程序。看一下本教程了解如何使用 Makefiles。这是一个开始实现的简单技巧,但是它有两个主要影响:

  • 它使复杂的命令更容易键入,从而节省了您的时间。您不必记住运行特定命令所需的所有参数、路径和环境变量,这样您就可以将更多的精力放在更重要的事情上。
  • 它很自然地记录了您的存储库,而不是它的功能,而是它的用途。在一个存储库中看到一个 Makefile 文件,并用来运行存储库中的代码,这意味着开发人员第一次看到您的代码时,已经对如何运行您的脚本有了大致的了解。(您也可以将注释放在 Makefile 中,但是理想情况下,将您的指令放在 README.md 文件中,在那里您可以详细解释命令应该如何运行!)

4.尽早学习如何使用单元测试

当我开始写代码时,有一件事我一直在做:我写了一些代码,我会打开一个终端,然后我会将我的代码粘贴到终端中,然后继续玩它,看看它是否像我想要的那样工作。如果您打算使用这段代码一次或两次,这是最佳选择。如果你打算用更多的时间,那完全是浪费时间。(这是编程中的一个通用模式:如果你做一件事超过两次,你应该可能自动化它。有时候即使你做了两次。更少的次数,即使你只做一次。但是在某些时候,Python 的禅应该开始了:过早的优化是万恶之源!)

你应该做的是熟悉 python 库 unittest 。它内置于 python 中,工作非常出色。它允许你做的是:你在终端里写的那个东西?您在单元测试中编写它,然后您所要做的就是从终端运行该测试(理想情况下,在 Makefile 中编写一个快捷方式来调用您的测试脚本)。

5.学习 python 的标准库

多少次我试图变得聪明,写一些超级复杂的代码(看起来也很复杂)来解决一个已经被 python 的标准库解决的问题!我给你举个例子。

假设你面前有一周中每天的自助餐厅菜单。所以你有两本字典:

你想写一个函数来生成下面的句子:

当然,现在你可以看到模板:

但是我们如何一次迭代所有这些呢?

一个简单的方法是创建一个新的数据结构(理想的是第一个例子,带有列表理解,不太理想的是第二个例子,完全没有自动化,但是它们创建了相同的结构):

然后在 for 循环中使用该数据结构:

稍微简单一点的方法是进行 for 循环并使用字典:

但是这使得 f 弦读起来有点不自然。理想的方法是,如果我们能够命名这些变量,它们实际上是什么,这是有可能的与 zip!

它有许多优点:

  • 提高了可读性。现在你的 f-string 准确地说出了它在做什么,你的变量也准确地以它们的名字命名。(我提到过你应该在 python 中使用 f 字符串吗?他们太棒了!)
  • 不需要中间数据结构。你所做的只是使用你已经拥有的数据和使用标准的库函数,所以它是快速、有效和可重复使用的。另外,当你学会经常使用这些技巧时,你可以以一种非常灵活和有效的方式重用你已经拥有的数据结构。
  • 代码更少。由于 zip 是标准库的一部分,您不需要重新阅读或维护构建迭代器的逻辑,它基本上记录了它自己(因为您的变量是根据它们所代表的来命名的),并且您没有实现任何新的东西,所以您的代码保持更加简洁。

标准库中有如此多的工具,我鼓励您像上述情况一样探索改进您的代码,例如

  • itertools (计数、重复、循环、乘积、组合、排列等。)
  • 收藏(计数器(!!!),defaultdict)
  • 随机(选择,样本)
  • functools (部分,装修者包装)

还有更多!

我相信,作为一名数据科学家,如果你在业余时间花点时间做一点这五个步骤,你的编码技能会增长得非常快,你会很快变得更有效率。

请在评论中告诉我你对这篇文章的看法!

每个数据科学家都应该知道的 5 个专业项目

原文:https://towardsdatascience.com/5-professional-projects-every-data-scientist-should-know-e89bf4e7e8e1?source=collection_archive---------8-----------------------

客户细分、文本分类、情感、时间序列和推荐系统。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

freestocksUnsplash【1】上拍摄的照片。

目录

  1. 介绍
  2. 客户细分
  3. 文本分类
  4. 情感分析
  5. 时间数列预测法
  6. 推荐系统
  7. 摘要
  8. 参考

介绍

本文的目标是概述专业数据科学家最终将执行或应该执行的项目。我参加了很多数据科学方面的训练营和教育课程。虽然它们在某种程度上都很有用,但我发现有些人忘记强调数据科学的实际应用。当您从教育型数据科学家过渡到专业数据科学家时,知道会发生什么是有益的。客户细分、文本分类、情感分析、时间序列预测和推荐系统都可以极大地帮助你的公司。我将深入解释为什么会想到这五个项目,我们希望能激励你在工作中使用它们。

客户细分

客户细分是数据科学的一种形式,其中采用无监督和聚类建模技术来开发人群或数据观察的组或段。目标是创建独立的组,但是这些组本身具有密切相关的特性。这种分离和结合的技术术语叫做:

组间平方和()

  • 这些独特的群体是多么的不同

组内平方和(WGSS)

  • 独特的群体特征有多密切相关

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

k-均值聚类。图片作者[2]。

正如你在上面的图像中所看到的,这些群体被很好地分开了——BGSS 和紧密地集中在一起——WGSS。这个例子很理想。把每一个集群想象成那些你会用特定营销广告瞄准的群体:'我们想通过把我们公司的产品作为以年轻专业人士为中心的来吸引刚毕业的大学生。一些有用的聚类算法有:

*DBSCANK-meansAgglomerative Hierarchical Clustering*

客户细分结果会怎么样?

—发现关于特定群体的见解

—针对特定群体的营销

—首先定义组

—跟踪某些组的指标

这种类型的数据科学项目被广泛使用,但在营销行业中最有用。

文本分类

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

文本分类实例的特点和目标。作者代码[3]。

*文本分类属于自然语言处理(NLP)的范畴,NLP 利用技术摄取文本数据。您可以将该算法或项目视为一种通过使用文本特征(*以及数字特征)对文本标签进行分类的方法。

这里【4】是一个利用文本和数字特征进行文本分类的简单例子。你的文本特征不是只有一个单词,而是可能有数百个,并且需要执行 NLP 技术,比如词性标注*、停止单词移除tf-idf计数矢量化等。科学家在 Python 中使用的一个常见库数据是 nltk 。这些技术的目标是清理您的文本数据,并创建其自身的最佳表示,从而消除噪声。*

* [## mprzybyla 123/NLP-示例

permalink dissolve GitHub 是超过 5000 万开发人员的家园,他们一起工作来托管和审查代码,管理…

github.com](https://github.com/mprzybyla123/nlp-example/blob/master/code/nlp_example.ipynb)

文本分类结果会怎么样?

—观察值的自动分类

—与每个建议类别相关的分数

您还可以对文本文档进行分类,否则手动阅读需要花费数小时。

这种类型的项目在金融或历史学家/图书管理员行业非常有用。

情感分析

情感分析也属于 NLP 的范畴。这是一种从文本中分配情感分数的方式,或者更具体地说,是极性和主观性。当你有大量的文本数据并且想要消化它来创建好的或坏的情绪等级时,使用情绪分析是有益的。如果你的公司已经有了评级系统,这看起来可能是多余的,但是人们经常会留下与他们的数字分数不匹配的评论。情感分析的另一个好处是,你可以标记出某些你想要突出的关键词或短语,以使你的产品更好。将关键词与关键情感联系起来,可以用来汇总指标,这样你就可以直观地看到你的产品缺少什么,哪里可以进行改进。

情感分析结果会怎么样?

—产品改进

—情绪标记为客户服务

这种类型的项目在很多行业都很有用,尤其是电子商务、娱乐或任何包含文本评论的领域。

时间数列预测法

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Sonja Langford 在 Unsplash 上拍摄的照片。

时间序列可以应用于各种工业部门的几个部分。大多数情况下,时间序列预测最终可用于为未来分配资金或资源。如果你有一个销售团队,他们会从你的预测中受益,投资者也会受益,因为他们看到了你的公司的发展方向(有望增加销售额)。更直接地说,如果您为某些员工分配了当天的预测目标,您可以将员工分配到一般位置。一个流行的例子是亚马逊或任何类似的公司,其中消费者有频繁的行为,需要工厂、司机和不同位置的分配,这些将合并在一起。

时间序列预测结果会怎么样?

资源的分配

—对未来销售的认识

一些利用时间序列的流行算法是 ARIMA 和 LSTM。

这种类型的项目在很多行业也很有用,但通常是在销售或供应管理方面。

推荐系统

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

照片由西蒙·贝克Unsplash【6】上拍摄。

虽然你可能在设计网飞的下一个推荐系统算法,也可能不在设计,但你可能会发现自己正在将类似的技术应用于自己业务的几个部分。想想用这种类型的项目,最终实现用户更多产品的销售。作为一名消费者,如果你正在购买某些产品或杂货,但你在购物车的最后看到一些推荐的产品,你可能会倾向于迅速购买这些推荐的产品。将这个结果扩展到每一个用户,你可以让你的公司赚上百万。

以下是数据科学中实现推荐系统的一些常用方法。

协同过滤——交替最小二乘法(矩阵分解)

  • 其他人和你有多相似,向你推荐他们喜欢的东西

基于内容的过滤—余弦相似度

  • 您已经购买的产品的属性或特征如何在未来推荐类似的产品

这种类型的项目在很多行业也很有用,但通常是在电子商务和娱乐业。

摘要

我希望我通过强调这些关键项目给了你一些启发,这些项目你可能已经经常使用,或者作为一名专业数据科学家将要使用。教育中对机器学习的关注,有时候是关注于获得最好的准确性,但专业意义上的数据科学的关注,是帮助你的公司改进产品,帮助人们,节省或赚更多的钱。

总结一下,这里有五个热门的专业项目可以练习:

customer segmentationtext classificationsentiment analysis time series forecastingrecommender systems

我希望你喜欢我的文章。感谢您的阅读!请随时在下面发表评论,并建议您遇到的其他专业数据科学项目,以便我们都可以改进我们的专业数据科学产品组合。

参考

[1]照片由自由股票Unsplash(2018)上拍摄

[2] M.Przybyla,k-均值可视化,(2020 年)

[3] M.Przybyla, nlp-example.ipynb ,(2020 年)

[4] M.Przybyla,NLP-示例,(2020)

[5]照片由 Sonja LangfordUnsplash(2014)上拍摄

[6]照片由西蒙·贝克Unsplash(2020)上拍摄*

有抱负的数据科学家的 5 个项目想法

原文:https://towardsdatascience.com/5-project-ideas-for-aspiring-data-scientists-2c705a11ea36?source=collection_archive---------25-----------------------

包括数据源和示例项目。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

照片由屋大维丹Unsplash

近年来,数据科学获得了极大的普及。越来越多的企业看到了数据创造价值的潜力。因此,对数据科学家的需求有所增加,这鼓励了许多人在数据科学领域开始职业生涯。现在学数据科学的资源绝对不缺。我没有数过,但我很确定有一千多个与数据科学相关的在线证书。当书籍、播客和 youtube 视频被添加到堆中时,它就成为一个巨大的资源集合来消费。

有各种各样的资源可以学习是很好的。然而,在你学习了基础知识和当前的工具和软件包之后,是时候用项目来挑战自己了。哪些独立的项目增加了你的技能,是在线证书所不能实现的。我有一个关于为什么你应该开始做项目的详细帖子。如果你想看的话,就在这里。

[## 你应该做项目而不是收集数据科学证书的 5 个理由

把手弄脏来学习。

towardsdatascience.com](/5-reasons-why-you-should-do-projects-instead-of-collecting-data-science-certificates-9023accda6b4)

在这篇文章中,我将列出 5 个项目想法以及如何找到相关的数据集。我还会给出一个例子项目的链接,它可以帮助你开始。

1。图像分类

利用深度学习的领域之一是计算机视觉。神经网络在这一领域有许多应用,例如图像识别、检测或生成伪造的图像和视频。神经网络也广泛应用于医疗保健行业。例如,神经网络已经被证明在使用 x 射线的癌症检测中是成功的。图像分类项目将是你进入这一广阔领域的第一步。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

二值图像分类

您可能会使用卷积神经网络(CNN)进行图像识别。细胞神经网络通常用于数据科学领域,尤其是计算机视觉和图像分类任务。图像由用数字表示的像素组成。在 CNN 的卷积层中,滤波器(或特征检测器)被应用于图像,以通过保持像素之间的空间关系来提取图像的独特特征。

数据集包含许多不同物体的大量图像。这是训练和测试 CNN 的一个很好的数据集。非常感谢社区准备并让我们使用这个数据集。

以下是创建基本影像分类模型的演练:

[## 带有 Keras 的卷积神经网络实用指南

理论解释和实际例子

towardsdatascience.com](/a-practical-guide-on-convolutional-neural-networks-cnns-with-keras-21421172005e)

2。流失预测

流失预测是机器学习领域的一个常见用例。对于企业来说,了解客户可能流失(即离开公司)的原因和时间非常重要。拥有一个强大而准确的客户流失预测模型有助于企业采取措施防止客户离开公司。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

照片由克里斯·利维拉尼Unsplash 上拍摄

提供任何类型服务的公司都担心客户流失。他们想尽可能长久地留住客户。为了完成这项任务,他们需要知道客户何时离开以及为什么离开。

网上有很多客户流失数据集。一个不错的例子是 kaggle 上的“电信客户流失”数据集。

下面是一个流失预测示例的演示:

[## 基于机器学习的客户流失预测

机器学习项目的分步说明。

towardsdatascience.com](/churn-prediction-with-machine-learning-ca955d52bd8c)

3。股票价格预测

时间序列预测是数据科学的另一个广泛领域,在零售、金融、供应链等许多行业都有应用。历史数据用于预测未来的行为。

股票价格预测是时间序列预测的一个应用,帮助你熟悉这个领域。可以用来预测股票价格的一个关键因素是历史价格。Pandas 是一个 python 数据分析库,它提供了一个非常简单的工具来获取历史股票价格数据。你只需要如下使用 pandas 的 datareader 模块:

import pandas as pd
from pandas_datareader import data
aapl = data.DataReader("AAPL", 
                        start='2015-1-1',
                        end='2019-12-31',
                        data_source='yahoo')

上面的代码下载了苹果(AAPL)的股票价格,并将其保存到一个熊猫数据框中。可以使用参数更改开始和结束日期以及股票名称。

LSTM(长短期记忆),这是一种 RNN(递归神经网络),可用于预测股票价格使用历史数据。LSTM 适合对序列数据建模,因为它维护一个内部状态来跟踪它已经看到的数据。LSTMs 的常见应用包括时间序列分析和自然语言处理。

以下是使用 LSTMs 进行股票价格预测的过程:

[## 用神经网络预测苹果股票价格

如何使用递归神经网络预测股票价格?

towardsdatascience.com](/predicting-apple-stock-prices-with-neural-networks-4aefdf10afd0)

4。预测二手车价格或房价

我敢肯定,你遇到过一个网站或应用程序,给你的汽车或房子的市场价值。其中一些非常普遍,对市场产生了影响。我们可能会用这些价格作为谈判的基础。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

艾伦·j·亨德利在 Unsplash 上的照片

预测二手车或房子的价格最好用机器学习来完成。我们建立一个机器学习模型,并用我们已经知道的东西训练它。然后剩下的就是靠我们模型的预测了。

这将是回归的良好实践,回归具有广泛的应用,例如预测预期寿命、销售和需求预测或生产系统的运行效率。

kaggle 上有一个结构良好的房价数据集。你也可以从网站上搜集自己的数据。网络抓取是数据科学家必须掌握的一项重要技能。

以下是二手车预测任务的一个示例。它还包含一个网页抓取部分:

[## 用机器学习预测二手车价格

从数据收集到模型评估的完整数据科学项目

towardsdatascience.com](/predicting-used-car-prices-with-machine-learning-fea53811b1ab)

5。探索性数据分析

这一个与我们到目前为止讨论的不同。然而,这也是数据科学家的基本实践。创建机器学习或深度学习模型并不是数据科学家唯一要做的事情。在许多情况下,我们首先需要更深入地挖掘数据。我们应该从许多不同的角度处理数据,以便能够创造数据的价值。数据告诉我们的东西有时候并不那么清晰。我们需要探索数据中的底层结构或关系。因此,探索性数据分析(EDA)是一个非常重要的过程。数据科学家需要熟悉 EDA 中使用的工具,如数据分析和数据可视化库。

你可以选择 Kaggle 或任何其他平台上可用的数据集,并尝试探索它。实践越多,使用 EDA 工具就越容易。我用我感兴趣的数据集练习了很多。一旦你开始发现不那么明显的结构或关系,事情就变得更有趣了。

下面是我做过的几个 EDA 实践:

[## 探索性数据分析实用指南:英格兰超级联赛

探索英超 2019-2020 赛季

towardsdatascience.com](/a-practical-guide-for-exploratory-data-analysis-english-premier-league-cac1e2695d30) [## 探索性数据分析实用指南:Spotify 数据集

一张图胜过千言万语

towardsdatascience.com](/a-practical-guide-to-exploratory-data-analysis-spotify-dataset-d8f703da663e)

就像任何学习过程一样,我们开始做简单的项目,然后通过做得越来越多来提高水平。我们最终认识到,我们的项目有可能在生产中实现。但是,为了能够达到生产水平,我们需要开始做项目。收集一堆证书不会把我们带到那一步。我建议在学习基础知识后,花时间在项目上。最好的做法是亲自动手,做很多项目。

感谢您的阅读。如果您有任何反馈,请告诉我。

让我的生活更轻松的 5 个 Python 技巧

原文:https://towardsdatascience.com/5-python-tips-that-made-my-life-easier-7da77f2cd120?source=collection_archive---------30-----------------------

计算机编程语言

使用 Python 提高您的工作效率

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

背景由 Pakata GohUnsplash

目录

  1. 简介
  2. Python 虚拟环境
  3. Python 交互外壳
  4. Python 调试器
  5. λ函数λ
  6. 列表和字典理解

介绍

Python 是什么?

Python 是一种流行的解释的面向对象的高级编程语言,可用于广泛的多种应用:软件开发、web 开发(后端)、数学、数据科学……

随着时间的推移,一个好的开发人员总是会寻求提高他的生产力。

所以让我告诉你,让我的 Python 生活变得更容易的 5 个技巧和诀窍。

1.Python 虚拟环境:

Python 如此占主导地位的很大一部分原因是因为它有很多好的库。事实上,Python 有这么多好的数学( NumPy )、统计、数据分析库,它可能会存在很长一段时间。所以依赖管理可能有点烦人,换句话说,你如何找到你需要的特定项目的库,使它可共享和可移植?我们为什么要使用虚拟环境?

所以虚拟环境的目的是拥有空间,我们可以在那里安装特定于某个项目的软件包,所以例如,假设你有许多使用 Django 版本 1 的 Django 网站,但是你想在一个新项目中开始使用 Django 版本 2,那么,如果你只是使用单个全局环境,那么当你更新到 Django 版本 2 时,它可能会破坏一些使用 Django 版本 1 的旧项目。所以我们不希望所有的项目都指向姜戈·⟹的某个瞬间,每个项目都应该有自己独立的包。我们实现这一目标的方法之一是通过虚拟环境。

只需知道,当您使用 Python 时,通常在虚拟环境中工作是最佳实践。

让我们来设置一下我们的环境:

  • 对于 Windows:(内置 venv 模块)

我们首先需要创建一个新的目录(文件夹)

  1. 使用 cmd 命令(cd改变目录,mkdir创建新目录)。
  2. 或者简单地通过使用 Windows Gui 创建一个新文件夹,然后在文件夹的路径上键入cmd

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

注意:要列出您已安装的软件包,您可以在命令提示符(cmd)中键入pip list

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

要创建虚拟环境,我们只需输入:

python -m venv *The name of the folder you want it to be in*
for example:
**python -m venv project1**

要激活它:

'virtual environment name'\Scripts\activate.bat
for example:
**project1\Scripts\activate.bat**

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在,如果我们尝试使用pip list,我们可以看到只安装了pipsetuptools。太好了,我们可以在我们的特定环境中安装某些包。

在这个截图中,我试着安装了’request’,所以结果是我们预期得到的。

  • 对于 Linux 和 macOS:(带有 virtualenv 软件包)

首先,我们必须安装软件包:

pip install virtualenv

然后创建新环境:

virtualenv venv *The name of the folder you want it to be in*
for example:
**virtualenv venv Project2**

最后激活虚拟环境:

source venv/bin/activate

现在我们可以孤立地安装任何依赖项。

2.Python 交互式 Shell:

当你使用终端来运行你的 python 脚本时,我们习惯于键入python filename.py,但是还有另一种方式来运行你的脚本,那就是通过在文件名前添加-i来使用交互式 shell。所以我们可以调用函数或变量来测试和尝试(有点热重装)…

这对于开发像机器人这样的东西非常有用。

例如,让我们考虑这个函数:

def maxi(a,b):
    return max(a,b)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

输出

3.Python 调试器:

  • 原生 Python 调试器(pdb):

Python 调试器set_trace()方法可以在文件执行完毕之前停止它,这样您就可以调试了(这与插入断点是一样的)。

当我们试图运行这段代码时,会得到一个错误。但是假设这段代码很大,我们不知道错误发生在哪里。在这种情况下,我们可以导入 pdb 模块(内置 python)并调用set_trace()方法来停止这段代码的执行:

现在我们可以做不同的事情,例如:

  • p :打印变量和函数的当前值
  • :转到下一行

你可以通过 kapeli.com查看 这张小抄

因此,这可以帮助我们确定代码在哪里中断,我们甚至可以通过复杂的多级函数调用跟踪调试器。

最棒的一点是你可以内嵌导入 pdb,这样你就不需要在文件的顶部做了。

  • 视觉/图形调试器:

现代调试器是基于 GUI 的,通常是集成开发环境(IDE)的一部分,或者是具有 IDE 功能的编辑系统的一部分。我建议您使用:

  1. Visual Studio Code(vs Code):运行在 Windows、macOS、Linux 上的轻量级多语言 IDE/编辑器。
  2. *py charm**😗是用于计算机编程的集成开发环境(IDE),专门针对 Python 语言。它是由捷克公司 JetBrains 开发的。
  3. *Komodo**😗是一个全功能的 Python IDE E,支持 ActiveState 开发的主流编程语言

4.λ函数λ:

我们可以使用关键字def创建 Python 函数。Python 为我们提供了另一种创建函数的方法,这种方法非常简短,因为它们仅限于单个指令。

语法 : lambda *arguments* : *expression* 注意:一个 lambda 函数可以接受任意数量的参数,但只能有一个表达式。

为什么使用 lambda 函数而不是命名函数?

Lambda 函数通常用在特定的上下文中,对于这种情况,使用def定义一个函数会不太实用或者更长。例如,如果您想在交互式 shell 中定义一个函数,另一个可能更复杂的例子是在需要回调函数的列表方法(或 NumPy )中,例如排序、映射和过滤。

关于 numpy.fromfunctionNumpy 库的更多信息,请查看这篇文章

5.列表和字典理解:

  • 列表理解:

列表理解是非常强大的工具,允许使用更接近 Python 中常用语法的映射和过滤。此外,它们允许您同时将贴图和过滤器结合起来。想法很简单:简化代码,使其更具可读性,从而更快地编写,更容易维护*。***

语法:

*new_list = [function(item) **for** item **in** list **if** condition(item)]*

示例:

假设我们有这个Users列表,我们想从一个对象中提取一个属性,但是在传统语法中要做到这一点,我们至少要写 3 行,使用列表理解,我们只能在一行中完成。

我们还可以过滤列表,在最后添加一个条件语句:
例如:如果名称以‘A’开头,那么我们将它添加到新列表中。

  • 字典理解:

这有点类似于“列表理解”。

让我们从Users列表中提取一个字典,将用户名作为键,将薪水作为值。通常,我们必须手动循环列表项,但在这种情况下,我们可以只做一行。

资源:

感谢阅读!😄

*外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

查看我的其他文章并关注我的 中型*

哈利菲·艾哈迈德·阿齐兹

5 Python 实用工具和任务

原文:https://towardsdatascience.com/5-python-tricks-to-make-your-life-more-productive-974ebeb54a53?source=collection_archive---------10-----------------------

将电子邮件标记为已读,将视频转换为音频再转换为文本等等

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

托比亚斯·齐尔斯Unsplash 上拍照

Python 是当今最受欢迎的编程语言,这在很大程度上归功于其简单的学习曲线。

但是它的流行也归功于它提供的各种各样的模块。难怪它是自动化的绝佳选择,而且几乎是公用事业任务不可或缺的。

你可能是一名数据科学家或前端开发人员,或者只是一名分析师,但以下 Python 工具列表将对所有人都有帮助。其中一些可能是显而易见的,而另一些可能会让你大吃一惊。

查看最近的电子邮件,并将所有未读邮件标记为从命令行查看

有多少次你被迫从终端切换到互联网浏览器,只是为了查看最近的电子邮件?每个人都会经历几次,我们中的一员。

通过消除这种上下文切换,您可以加快工作流程并提高生产率。只需使用 python imaplib模块,就可以登录你的邮箱并获取邮件。

该库允许您按日期、主题、发件人等过滤电子邮件。因此,使用下面这段代码,您可以获取最新的 n 封电子邮件,而无需手动登录浏览器:

RFC822是一种互联网接入消息协议。你也可以从每封邮件回复中查找SubjectContentDate

注意:对于双因素身份验证的 Gmail 帐户,在登录方法中传递密码不起作用。您需要生成一个令牌,并通过参考以下步骤在密码字段中设置它:

1\. Log into your Gmail account.
2\. Navigate to https://security.google.com/settings/security/apppasswords
3\. In 'select app' choose 'Custom', give it any name name and press generate.
4\. It will give you a token which you can paste in the above script.

如今,我们的收件箱充满了促销邮件,这只会增加收件箱的未读数量。当您的收件箱超过 100 页时,选择所有邮件并将其标记为已读是一项非常耗时的任务。

幸运的是,上面的 imap 模块可以让您搜索看不见的邮件,并将它们设置为已读。首先,将前面代码的搜索过滤器改为:

mail.search(None, '(UNSEEN)')

最后,在 for 循环中添加以下代码:

original = email.message_from_bytes(response_part[1])
mail.store(num,'+FLAGS','\\Seen')

反斜杠Seen很重要。我用上面的脚本成功地将收件箱的未读计数减少到零!

2.视频下载程序

人人都爱看 YouTube 视频。我们中很少有人希望在本地保存一些视频文件。令我们惊讶的是,[youtube-dl](https://github.com/ytdl-org/youtube-dl) Python 模块正是为此而生的。

只需安装软件包,并在命令行上运行它,并带有 YouTube 链接,如下所示:

pip install youtube-dl> youtube-dl <Video Link Here>

但有时,我们喜欢定制下载选项。例如,下载多首曲目或一个播放列表,或者设置输出目录并根据分辨率选择视频格式。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这个库的伟大之处在于它允许你下载 YouTube 之外的视频链接。

3.从命令行获取股票更新

你多久在谷歌上查一次货币兑换率?当人们旅行时,这肯定是一个好数字。如果你是一个被动关注股市的人,拥有一个命令行 python 脚本肯定会有所帮助。尤其是,如果你想在工作的时候偷偷看一眼。

我们有 Python 的[yfinance](https://github.com/ranaroussi/yfinance),这正是你追踪股票所需的库。

pip install yfinance

yfinance为我们提供了大量的数据,如股票信息,历史数据,分割,股息,quarterly_financials等等。所有这些都包含在一个Ticker模块中。

虽然没有任何直接的方法来获取股票的实时价值,但我们可以使用以下解决方法:

q = yf.Ticker("AAPL")
data_frame = q.history("1d")
price = data_frame["Close"].values[0print(f'Apple current stock price: {price}')

上面的代码工作起来很有魅力,但是如果你想听多个报价器,你也可以用下面的代码:

tickers = yf.Tickers('msft aapl amzn')print(tickers.tickers.MSFT.history("1d")["Close"].values[0])print(tickers.tickers.AAPL.history("1d")["Close"].values[0])print(tickers.tickers.AMZN.history("1d")["Close"].values[0])

同样,如果你想得到货币汇率,使用freecurrencyrates.com。这里是它的 Python 脚本。

4.将 mp4 转换为 mp3 再转换为文本

Python 的pydub模块可以让你完成从视频转换到直接混合不同文件的音频处理任务。

忠于它的名字,你也可以通过音调调制或设置音频的某些部分更大声或更安静来调整音调。现在,我们来看看从 mp4 视频中提取 mp3 文件有多简单:

from pydub import AudioSegmentAudioSegment.from_file("/path_to_video").export("~/output.mp3", format="mp3")

AudioSegment是加载、转换和保存音频文件的容器。

接下来,让我们从音频文件进行语音到文本的转录。首先,使用pip安装SpeechRecognition模块。接下来,我们将 mp3 导出为 wav 文件,并对其进行转录:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

5.从视频中提取图像帧

最后但同样重要的是,我们有一个专门面向数据科学家的 Python 脚本。

数据科学家在训练他们的模型时总是希望收集更多的数据,视频是访问图像的最大来源之一。

令人高兴的是,拥有一系列图像处理技术的 OpenCV 可以为你从视频中提取帧。

简单地安装带有 pip 的opencv-python模块,如下所示:

pip install opencv-python

对任何视频文件运行以下脚本,从每一帧中获取 jpeg 图像。

import cv2
videocap = cv2.VideoCapture('input.mp4')
success,image = videocap.read()
count = 0while success:
  cv2.imwrite("frame%d.jpg" % count, image)
  success,image = videocap.read()
  print('Read a new frame: ', success)
  count += 1

现在,上面的脚本会创建太多重复的图像,因为我们还没有指定任何帧数。

要限制每秒提取的帧数,请在上述 while 循环中的cv2.imwrite之前添加以下代码行:

videocap.set(cv2.CAP_PROP_POS_MSEC,(count*1000))

这将每秒仅捕获一帧。您可以根据您的使用情况相应地更改它。

OpenCV 任务不仅仅局限于数据收集。您可以在提取的帧上运行计算机视觉任务。运行模糊检查或图像相似性请求只是您可以执行的许多用例中的两个。

外卖食品

Python 的模块生态系统使得以即插即用的方式运行复杂的任务成为可能。最好的事情是你不需要编码知识来运行上述任务。

最后,如果您希望将数据从一个 Python 脚本传递到另一个脚本,请执行以下操作:

#second_script.pyfrom first_cript import variableprint(f'Hello {variable}')

我希望你发现上面收集的 Python 脚本很有用,并在日常工作中使用这些很酷的技巧。

这一次到此为止。感谢阅读。

下一次面试前要解决的 5 组 Python 算法

原文:https://towardsdatascience.com/5-pythons-sets-problems-to-solve-before-your-coding-interview-41bb1d14ac25?source=collection_archive---------18-----------------------

集合是许多 Python 访谈中反复出现的话题,并且经常提供高效求解算法的捷径

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

JESHOOTS.COMUnsplash 上拍照

更新:你们很多人联系我要有价值的资源 钉 Python 编码访谈 。下面我分享 4 个我强烈推荐在练习完本帖的算法后坚持锻炼的课程/平台:

这篇文章包括代销商链接,如果你购买的话,我可以在不增加你额外费用的情况下赚取一小笔佣金。

在学校学习数学的时候,几乎没有人真正喜欢它们,因为它们看起来很无聊,但是如果你正在准备 Python 编码屏幕或白板面试,并且你希望搞定它,你现在真的必须学习集合运算符和方法。集合是你需要在你的武器库中拥有的一种武器,因为常见的用途包括删除重复计算集合上的数学运算(像并集、交集、差和对称差)和成员测试

集合也不是我在 Python 之旅中学到的第一件事。如果你像我一样是一个动手型的人,你可能从一些真正的项目开始,这意味着最初,你几乎肯定会使用高级包而不是内置模块。然而,当我开始解决算法以面试大型科技公司时,我意识到集合在许多不同难度的挑战中反复出现,并经常提供解决它们的捷径。

“我意识到集合在许多不同难度的挑战中反复出现,并经常提供解决它们的捷径”

在最近的一篇文章中,我展示并分享了我在真实采访中遇到的一些 Python 算法的解决方案* ( 看看吧!)😗**

*** [## Python 编码面试前要解决的 10 个算法

在这篇文章中,我介绍并分享了 FAANG 中经常出现的一些基本算法的解决方案

towardsdatascience.com](/10-algorithms-to-solve-before-your-python-coding-interview-feb74fb9bc27)

在这篇文章中,我将采用类似的方法,将理论与算法挑战结合起来。大家一起来解决吧!

1)删除重复项

在 Python 中,可以通过两种方式创建集合:

  • 使用内置的set()功能。例如,如果一个字符串s被传递给set(),那么set(s)在该字符串中生成一个字符列表:
set(‘algorithm’)
Output: {'a', 'g', 'h', 'i', 'l', 'm', 'o', 'r', 't'} #<- unordered
  • 使用花括号{}。使用这种方法,即使是可迭代的对象也可以完整地放入集合中:
set1 = {‘algorithm’}
print(set1)
Output: {'algorithm'}set2 = {'algorithm', 'interview'}
print(set2)
Output: {'algorithm', 'interview'}

更详细地说,内置的**set()**数据类型具有以下特点:

  • 就是 无序、 可迭代可变
  • 它的元素可以是不同类型的对象(整数浮点元组字符串等)。)但是这些元素必须是不可变的类型(列表和字典被排除在外);
  • 它只能包含特有的元素。这意味着在使用集合时会自动删除重复的元素。

最后一个特征是关键的,因为它意味着我们可以使用set()从(例如)数组中删除重复项。

问题#1:包含重复→简单

**Output:
True**

多亏了 sets,这个问题可以通过一行程序得到解决。事实上,当一个数组被传递给set()函数时,所有重复的元素都被删除,这意味着集合的长度将等于原始数组的长度,前提是数组首先包含不同的元素。

2)计算集合上的数学运算

因为集合是无序集合**(它们不记录元素位置插入顺序,许多可以在其他 Python 数据类型上执行的操作(如索引切片)都不被集合支持。**

尽管如此,Python 为我们提供了大量的操作符方法来复制为数学集合定义的操作。例如,假设我们有两个集合(s1 and s2),都包含字符串,我们想要合并它们。在这种情况下,我们可以使用 union 操作符(|)或 union 方法(s1.union(s2))来执行相同的操作:

**#Create 2 sets including strings:
s1 = {‘python’, ‘interview’, ‘practice’}
s2 = {‘algorithm’, ‘coding’, ‘theory’}#Using the operator:
print(s1|s2)# Using the method:
print(s1.union(s2))Output:
{'python', 'algorithm', 'interview', 'practice', 'coding', 'theory'}
{'python', 'algorithm', 'interview', 'practice', 'coding', 'theory'}**

正如你所看到的,看起来集合操作符和方法的行为与 是一样的,它们可以互换使用,但是它们之间有一点点不同。当使用运算符时,两个操作数都必须是 set,而方法将接受任何参数,先将其转换为 set,然后执行运算。此外,集合上的每一个数学运算都有一个方法,但对于运算符来说就不一样了。

使用运算符时,两个操作数都必须是集合,而方法接受任何参数,先将其转换为集合,然后执行运算

让我们通过解决以下三个问题来发现一些更常见的集合运算符和方法:

问题#2:两个数组的交集→简单

**Output:
[5, 7]
[5, 7]**

如上所示,要返回两个数组共有的元素,您可以将nums1nums2都转换为集合,然后用&运算符找到它们的交集,或者只将nums1转换为集合,并使用nums2作为.intersection()方法的参数(这将在执行交集之前自动将 nums2 从数组转换为集合)。第二种方法( solution_two )需要更多的输入,但它更安全、更快,需要的内存也更少,因此在实际面试中解决算法时应该优先考虑。有几次,在我的解决方案中,我选择了一个运算符,然后面试官要求我谈谈等效的方法,并相应地重写解决方案…

问题#3:键盘行中的单词→简单

*Output:
['Type', 'Router', 'Dash', 'Top', 'Rower']*

以上问题的解决方案既简洁又高效。实际上,为了检查words数组中的每个单词是否由美式键盘上单行的字母组成,每个单词最初都使用set()函数转换成一个集合。如前所述,当我们这样做时,单词被拆分,这样每个字母都成为集合中的一个元素。例如,如果我们将单词 “Type” 传递给set()函数(并转换为小写),我们将获得:**

**set1 = set(‘Type’.lower())
print(set1)
Output: {'t', 'e', 'p', 'y'}**

现在我们可以利用.difference()方法来检查{'t','e','p','y'} 和三组键盘字母之间的差是否返回空集。如果返回一个空集(if not,这意味着这个单词是由属于一个特定行的字母组成的,然后它应该被附加到result

问题#4:两句话中的生僻字→简单

**#Output:
['enjoy', 'love'] #<-- note how "you" and "we" are also excluded**

在实际的面试中,你经常会得到两个整数数组(或者像本例中的两个句子),你被要求找出属于第一个或第二个项目组的所有元素,而不是两个都属于。这种问题可以通过使用.symmetric_difference()方法或等效的^操作符来解决。

然而,如果一方面这种算法通过提供只包含空格分隔/小写单词的句子使您的生活更容易,另一方面,它要求每个单词也是唯一的,这意味着您需要找到一种方法来计算单词(collections.Counter()),并验证它们“在每个句子中只出现一次

3)执行成员测试

通常,为了解决一个算法,你需要确定两个或多个数组是否有任何共同的元素或者一个数组是否是另一个数组的子集。幸运的是,Python 的集合提供了许多运算符来执行成员资格测试,但是我在实际采访中使用最多的是:

  • s1.isdisjoint(s2):如果s1s2没有共同的元素,这个操作返回True。没有对应于此方法的运算符。
  • s1.issubset(s2)s1<=s2:如果s1s2的子集,则该操作返回True。注意,因为集合s1被认为是自身的集合,所以要检查一个集合是否是另一个集合的真子集,最好使用s1<s2。这样可以验证s1的每个元素都在s2中,但是两个集合不相等。

在本文的最后一个问题中,您将能够应用上述方法之一。请记住,下面的算法比其他四个算法(级别:中等))更具挑战性,因此,请花些时间找到合适的策略来解决它。

问题 5:最喜欢的公司列表→中等

**Output:
[0, 1, 4]**

在上面的解决方案中,enumerate()使用了两次:第一次循环返回favcomp中包含的每个子列表,而第二次循环检查第一次循环获得的列表是否是favcomp中任何其他列表的子集。当 set 方法返回True时,flag(最初设置为True)切换到False,从而最终只有与flag保存有True值的列表相匹配的索引被分配给result。这是一个 BF 解决方案,所以请随意找到一个更有效的方法,并在评论中分享。

结论

在本文中,我提出了 5 个 Python 编码挑战,并使用集合操作符和方法解决了它们。当算法需要删除重复项、执行常见的数学运算或验证成员资格时,Set 方法是非常强大的工具。请放心,随着您不断练习编码,循环模式将变得更加明显,您将学会动态应用集合运算!

注意这篇文章中的练习(以及它们的解决方案)是对 Leetcode 上的问题的重新诠释。我远非该领域的专家,因此我提出的解决方案只是指示性的。

如果你喜欢这篇文章,请留下评论。祝你面试准备顺利!

资源:

在 Python 教程中由真正的 Python

Python 集合编程教程

Leetcode 算法列表

您可能还喜欢:

** [## Python 中复制的 8 个流行的 SQL 窗口函数

关于如何利用业务分析中的 Pandas 高效复制最常用的 SQL 窗口的教程…

towardsdatascience.com](/8-popular-sql-window-functions-replicated-in-python-e17e6b34d5d7) [## 在你开始第一个项目之前,要掌握 15 个 Git 命令

您需要掌握的最后一个 Git 教程是命令行版本控制。

levelup.gitconnected.com](https://levelup.gitconnected.com/15-git-commands-you-should-learn-before-your-very-first-project-f8eebb8dc6e9)*****

Python 字符串 101

原文:https://towardsdatascience.com/5-quick-tips-to-manage-your-strings-in-python-4e7e48f72560?source=collection_archive---------21-----------------------

掌握基础知识

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片来自 Pixabay 中的 stock snap

这篇文章非常实用,为你提供了在 Python 中使用字符串的简单快捷的技巧。

字符串乘法

Python 不仅允许数字相乘,还允许字符串相乘!重复一个字符串,如下所示:

>>> "a"*3
'aaa'
>>>

您也可以将字符串乘以一个布尔值。例如,如果一个数字小于 10,下面的代码片段会用前导零填充该数字:

>>> sn = lambda n: '{}{}'.format('0' * (n < 10), n)
>>> sn(9)
'09'
>>> sn(10)
'10'
>>>

标题

如今,写标题很常见(即使是中号),每个单词的首字母都要大写。嗯,用 Python 可以很容易地做到这一点:

>>> "the curious frog went to denmark".title()
'The Curious Frog Went To Denmark'
>>>

连锁的

您可以使用+运算符连接两个字符串,但这不是最好的方法。Python 字符串是不可变的,使得这个操作符从这两个字符串中创建一个新的字符串,而不是像我们所想的那样,简单地将第二个字符串添加到第一个字符串中。更好的方法(和更快的)是使用 join() 函数将它们连接起来:

>>> "".join(["abc", "def"])
'abcdef'
>>>

获取子字符串

使用 Python 的切片获得子串。您只需要指定起始索引(包括)和结束索引(不包括):

>>> "Such a good day"[7:11]
'good'
>>>

反转一根绳子

字符串切片允许您选择性地定义第三个参数:步长。如果您使用完整的字符串并应用步长-1,您将得到相反的字符串:

>>> "Such a good day"[::-1]
'yad doog a hcuS'
>>>

就是这样!访问 Python 的字符串文档了解更多信息。

人工智能的 5 个真正危险

原文:https://towardsdatascience.com/5-real-dangers-of-ai-1f94b4f0151d?source=collection_archive---------38-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源:迅猎兽图片通过像素

深度造假、算法偏见和其他问题会如何影响我们的日常生活

在过去的几年里,人工智能以令人难以置信的速度推进了我们的技术。从完全自动化劳动密集型工作到诊断肺癌,人工智能已经取得了以前认为不可能的成就。然而,在错误的人手中,算法可能成为毁灭性的武器。为了确保恶意行为者不会对我们的社会造成破坏,我们必须解决几个关键挑战。

人工智能的真正危险不是像天网一样的有感知能力的算法接管世界。尽管这种情况完全是科幻小说,但有几个合理的问题。我们不应该害怕技术,而应该仔细识别这些问题,并负责解决它们。在这篇文章中,我将收集五个特别重要并且已经影响我们日常生活的领域。

1.Deepfake

在我们的现代社会中,信息是无限的。打开你的浏览器,在网上冲浪半个小时,你遇到的信息比一个普通的中年人一生中遇到的信息还要多。信息就是力量。地球另一端发生的事件会立即通知你,但有一个问题:你如何知道该相信什么,哪些消息来源是可信的?

看看下面这个视频。

当然,这完全是假的,但是对于一个不经意的观察者来说,可能很难察觉。这些被称为深度假货,源于技术术语深度学习,这是一个能够产生类似这样的逼真假货图像的算法家族。尽管这个特殊的例子只是一个很好的技术演示,但是如果出现在新闻提要中的深度假货的比例达到一定的阈值,就会变得非常危险。在这种情况下,将无法检测哪些信息是真实的,哪些不是。

毫不奇怪,一个非常有前途的打击深度假货的工具就是 AI 本身。有几个高调的倡议,如 DARPA 的 MediFor 计划谷歌的 Deepfake 检测挑战旨在开发过滤错误信息的方法。

尽管深度虚假不像列表中的其他虚假一样出现在我们的生活中,但它无疑是最具破坏性的虚假之一。

2.算法偏差

如果你在过去几年里申请过工作,很可能你已经受到了算法偏差的影响,无论是正面的还是负面的。开发一个基于人工智能的算法来筛选求职者可能是一个好主意,但是,这有很大的问题。机器学习需要历史数据来学习哪些候选人值得聘用。问题是,关于过去接受和拒绝的数据受到固有的人类偏见的严重影响,主要是对妇女和代表性不足的少数民族。该算法只是从呈现给它的东西中学习,如果以前的招聘做法是歧视性的(这种情况经常发生),该算法将以类似的方式行事。

这种现象的一个极好的、发人深省的证明是最适合的教育网络游戏的生存,这值得一试。

这个问题影响到许多其他应用领域,如信用评分评估、执法等。由于这些在相关人员生活中的纯粹影响,这些决定不应该涉及算法,除非我们能够保证公平。这方面的努力产生了一个新的非常活跃的研究领域。除了确保预测独立于性别、种族和受负面偏见影响的类似变量之外,关键是在这些变量不存在的地方产生数据。要解决这个问题,需要付出更大的努力。为了完全消除数据中的偏见,我们还需要消除我们思维中的偏见,因为最终,数据是我们行动的结果。

3.大规模监控

那些为了换取一点暂时的安全而放弃基本自由的人,既不配享有自由,也不配享有安全。—本杰明·富兰克林

几十年来,面部识别一直是计算机视觉中的一个关键问题。然而,自从深度学习革命以来,我们不仅可以更准确地识别人脸,而且可以即时完成。如果你把智能手机放在周围,尝试打开相机应用程序并自拍:它会立即在你的脸部周围放置一个边界框,表明它已经成功检测到它。如果你有一部最新的 iPhone,你甚至可以用你的脸作为手机的密码。

如果用于错误的目的,这项技术也有其自身的危险。在中国,这被用于前所未有的大规模监控。结合最近推出的社会信用系统,你的行为会被记分,你可能会因乱穿马路或只是参加某些活动而被扣分,没有什么可以瞒过天空中的眼睛。

4.推荐引擎

每次你打开 YouTube、脸书或任何其他社交媒体网站,他们的目标都是尽可能让你参与进来。简单地说,在这种情况下,你就是产品:如果你偶尔看广告,你可以免费使用网站。因此,目标不是为用户提供高质量的内容,而是让他们无限地滚动和自动播放。

鉴于人类大脑是如何进化的,不幸的是,参与是由引发强烈的情绪反应来驱动的。事实证明,例如政治激进的内容特别适合这一点。推荐引擎不仅学会了呈现极端的内容,还学会了慢慢地让每个用户变得激进,一旦用户的偏好发生变化,推荐引擎的工作就会变得简单。这就是所谓的激进化管道。

这是有确凿的科学证据的。例如,最近的一篇论文研究了 YouTube 上数百万特定用户的评论,以展示他们如何慢慢转向极端激进的内容。

这种情况的影响非常严重,可能会对民主选举产生重大影响。在 2016 年美国大选期间,《华尔街日报》对这个话题进行了广泛的调查。他们的发现可以在这里找到:蓝色饲料,红色饲料。本质上,用户被有目的地关在一个智力的泡泡里,从不质疑他们自己对外部世界的信念。思考很难,本能反应很容易。

5.隐私和定向广告

你有没有发现自己买了并不真正需要的东西,事后后悔?也许你走进超市,一进入收银台,一捆糖果就吸引了你的目光,你毫不犹豫地把它们放进了篮子里。你并不真的需要它,但你还是买了它。这可能会让你感到惊讶,但是这整个场景是被设计的,你被操纵着去做这件事。听起来很奇怪,购物实际上需要你的精神资源,这些资源最终会被耗尽。控制欲望的资源越少,你就越有可能冲动地购买明知对你无益的东西(比如糖果),但你还是想买。但是这和 AI 有什么关系呢?

超市的设计是基于这些基本的心理学原理,如上所述。这些设计原则在平均水平上起作用。没有一个设计能为每个用户提供个性化和完美的体验。然而,当市场转移到网上时,这种情况发生了变化。虚拟市场不仅可以为你提供量身定制的购物之旅,还可以收集非常具体的数据。基于你的浏览习惯和社交网络,你的行动可以被高度准确地预测。

这有几个潜在的误用。首先是向你展示你可能会在网上市场购买的物品。一件商品呈现给你的内容、地点和方式是由统计算法决定的,目的是从你身上获取最大利润。然而,这影响到个人层面。一个更大的问题是,当个人数据被用于针对你的政治广告时,可能会影响民主选举的结果。这正是剑桥分析公司所做的事情,其影响仍然波及全球。

结论

近年来,基于人工智能的技术无疑彻底改变了我们的生活。即使它正在慢慢渗透到我们周围的一切,但它在媒体上的出现大多是有偏见的。无论是通过炒作的粉红色薄雾或天网灭绝人类的可怕愿景。没有一个是真的。然而,为了使他们的应用安全,我们必须清楚地看到人工智能可能带来的真正问题。这些问题并不神秘,它们已经存在于我们的生活中。通过适当的认识、准备和社区努力,这些问题是可以解决的。

如果你喜欢把机器学习概念拆开,理解是什么让它们运转,我们有很多共同点。看看我的博客,我经常在那里发表这样的技术文章!

使用 Kubernetes 的五大理由

原文:https://towardsdatascience.com/5-reason-for-using-kubernetes-b7ade82eda90?source=collection_archive---------36-----------------------

不要害怕 Kubernetes,学习拥抱它的 5 个好理由

Kubernetes 是容器编排的领先解决方案。在这篇文章中,我们将学习使用它的 5 个简单原因。这些原因是技术性和战略性的。事实上,我们将了解到,使用 Kubernetes,我们不仅可以解决技术问题,还可以帮助实现云转型。

考虑到使用 Kubernetes 的所有好处,只选择 5 分是相当困难的。无论如何,你可以回复这篇文章,添加你自己的动机。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者用❤️做的

1.免费云解决方案

免费的东西在企业中不是必须的,但却是受欢迎的。我们都知道免费只是一个乌托邦,没有免费的东西。但是有了 Kubernetes,我们就有了没有任何许可成本的东西。这是一个很好的起点。Kubernetes 的良好品质是,当我们迁移到云时,它的“免费”性质仍然存在。事实上,大多数较大的公共供应商免费为我们提供 Kubernetes 服务,仅对我们将使用的资源进行定价。这是合乎道德的,也是方便的。因此,即使 Kubernetes 是免费的,但不是免费的,我们也很乐意为我们使用的资源付费。

我发现这是一个非常民主的解决方案:你可以在本地托管,负责托管和维护,或者转向云。在第一种情况下,您将支付您的硬件和整个系统(数据中心和 Kubernetes)的维护费用。另外,您可以将您的解决方案迁移到云中。这里只有资源定价。这让您可以开始实施您的解决方案,并根据您的 TOC(总拥有成本)自由决定放置位置。

所以,Kubernetes 如果是免费的,这种免费会给你带来自由:根据你的需要决定在哪里部署的自由。

2.所有问题的相同解决方案

Kubernetes 允许你以同样的方式管理所有的项目。这影响到你在组织内部必须成熟的一套技能。当你在一家只管理一种产品的科技公司工作时,一切都很容易。你定义了栈,你学习了它,你就设置好了。但是当你有多个项目要交付的时候呢?或者你在一家 IT 服务公司工作,那里的每个客户都有不同的特点?

嗯,Kubernetes 对于在整个项目中保持一个标准层帮助很大。

这些标准主要来自于容器的采用,容器让我们可以抽象地管理应用程序。因此,最大的优点是 Docker,但 Kubernetes 为我们提供了一个预定义的解决方案来部署它们。

总的来说,你可以有一个共同的方法来进行每个项目,这加快了你的工作,因为你不需要一直研究一个新的技术解决方案。

3.做同样事情的新方法

Kubernetes 是一个很好的工具,因为它允许我们在不离开舒适区的情况下打破舒适区。这似乎是矛盾的,但这是可能发生的。大多数系统管理员使用虚拟机和数据中心来实施应用程序基础架构。Kubernetes 中发生的事情非常相似,因为您定义了所有的网络细节、服务(代替容器或 VM)和部署过程。换句话说,你可以做同样的事情,但是没有网络、部署等物理上的痛苦。

使用 Kubernetes,您可以像处理服务器群一样处理您的集群,但是只使用配置文件。

您可以在服务器和集群组件之间重新创建逻辑并行性。您拥有的不是虚拟机,而是 pod 和服务。网络和存储也是如此。这确保了对组件的深度控制,但使用了高级工具。

4.架构优势

Kubernetes 带来活力;它使你的架构对变化更加敏感。它降低了全局系统管理员的成本,并提高了服务质量,这是很难达到的水平。Kubernetes 本身的高级配置可以克服许多传统问题,如网络和数据保护。

以下是 Kubernetes 的建筑优势列表:

  • 可扩展性。 Kubernetes 根据设计进行缩放。该服务将你托管的资源解耦,因此,当负载变高时,你只需购买更多的资源。要支持这个过程,您所要做的就是在开发中开始使用容器。然后,扩展策略只是一个钱的问题。
  • **透明。**每个集装箱都有一个单独的责任。组件之间的所有关系都黑白映射到配置文件中。当问题发生时,将会清楚到哪里去寻找。
  • **节约时间。**这个过程很简单。这一过程通过设计实现了自动化,从长远来看这是有利可图的。
  • 版本控制。使用容器库,您的应用程序被版本化。此外,只要对 Kubernetes 配置文件进行版本控制,就可以对基础设施进行版本控制。

5.简化开发操作和性能

当我们谈论平台时,我们需要包括部署部分。如今,没有一个好的自动化开发运维解决方案,任何应用都无法上线。Kubernetes 易于管理,因为它自动化了大部分流程。这种简化接近于 NoOps 解决方案。这种配置减少了开发团队和运营团队之间的摩擦,并清晰地划分了责任,具有完全的透明性。

蛋糕上的其他一些樱桃:

  • 水平自动缩放。Kubernetes 可以通过添加物理资源来自动扩展。
  • **巧妙的更新。**换一个容器,旧的被巧妙替换。pod 将一直处于活动状态,直到它们完成对未决请求的服务。
  • **没有发展警告。**只需点击一下鼠标,即可部署所有可容器化的软件。这意味着您的开发人员不必学习新的东西。

结论

Kubernetes 现在是容器编排的领先解决方案。这很容易学,而且有一些切实的好处。免费可能是一个优势,但它必须为所有其他好处所带来的选择。

Kubernetes 可以在任何公共云上运行。这并不意味着您可以每天更换提供商,因为每个云提供商都有一些不同的小细节,迁移并不总是像点击按钮一样(即使您可以创建一个脚本来为您完成所有工作)。无论如何,如果你坚持这个标准,这将使一个低努力和低停机时间的迁移成为可能。这是对供应商锁定的一个很好的妥协。

优势重述

几句话给 Kubernetes 带来了哪些优势:

  • 与过去有很好的兼容性
  • 对发生的事情有很大的控制力
  • 更少的供应商锁定。
  • 微调每个组件的能力
  • 内部选项
  • 成本预测。

五个理由不够

我很抱歉我错过了什么。将 Kubernetes 的所有优点压缩在仅仅 5 点是相当困难的,我必须做出一些选择。例如,我忽略了对许多公司来说很重要的供应商锁定。

我想问的是,如果你来到这里,你有什么要补充的,请回复这篇文章,并添加你自己关于为什么采用 Kubernetes 的动机。

见解和参考

我在过去的文章中已经谈到了 Kubernetes 为了更深入地了解 Kubernetes,我可以推荐其中的一些。

每个人都应该学习数据的 5 个理由

原文:https://towardsdatascience.com/5-reasons-everyone-should-learn-data-cbd4bd335230?source=collection_archive---------31-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

弗兰基·查马基在 Unsplash 上拍摄的照片

“数据量正在爆炸式增长,过去两年中创建的数据比人类历史上所有数据都要多。”(福布斯)

这些天来,我们在新闻中听到了很多关于数据的报道——我们正处于“大数据”时代,不断有关于数据隐私泄露的新闻报道。

对数据的痴迷已经渗透到我们生活的每一个部分,从我们的工作生活到我们的个人生活,以及其间的每一次互动。自然地,想到我们的大部分信息都被跟踪和存储在某个地方,因此可以用来通知我们以后关于习惯的决定,这似乎是压倒性的,甚至是可怕的。

但是,我认为,这一论点还有光明的一面。数据在正确的人手中是一个强大的工具。这也正是为什么学习数据科学对每个人都很重要,不管你未来的职业道路是什么。

以下是每个人都应该了解数据的 5 个理由:

1.数据教授合理的逻辑和决策

将信息转化为可操作的见解需要对数据操作有一些基本的了解。这意味着使用逻辑来创建公式,以便提取信息,并将枯燥的电子表格转化为可视化或易于解析的结果。

如果你理解数据,那么你就理解了逻辑以及它是如何工作的。它让你以完全不同的方式思考决策,因为你依靠事实和数字来证明你的论点。

大多数人认为解决方案就是找到答案。然而,数据科学告诉你要问正确的问题。这种类型的逻辑和推理导致更好的决策,这对我们的个人生活和职业生涯都是有价值的。

2.数据技能将知识转化为力量

如果不能应用,信息就什么都不是。数据科学教会我们如何思考不同的信息,找到关系,提取见解和测试假设。

面对现实吧,网络时代造就了每天轰炸我们的信息洪流。我们都需要能够过滤噪音,了解事实,并确定真相。

与此同时,数据科学技能教会我们如何组织所有可用的信息,如何标记和存储我们的信息,以便我们将来能够访问这些信息。如果没有这些数据技能,大量的信息很快就会变得不堪重负,坦率地说,毫无用处。

因此,掌握数据科学技能不仅意味着做出更好的决策,还意味着采取更好的行动。

3.数据无处不在,而且还在成倍增长

请看这张数据增长图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

福布斯

由于科技的发展,越来越多的信息可以被储存。这意味着我们每天都被数据包围着。如果我们知道什么样的数据是有用的,然后知道如何操纵它,那么数据就可以成为让生活变得更好的工具。

尽管你可能认为这只是企业和消费者的数据,但个人数据也在不断扩大。随着我们的生活变得越来越数字化,越来越多的信息在线存储在云中,我们都有更多的数据要跟踪——更多的图片、更多的视频、更多的电子邮件、更多的文档和更多的整体个人信息。

还不服气?阅读这些关于大数据的二十个令人难以置信的事实

因此,现在是每个人都认真理解数据及其在我们生活中的作用的时候了。我们都需要了解数据安全、数据隐私和数据管理。

随着数据的激增,我们都需要这些技能来得到更好的保护和更多的信息。

4.数据技能比以往任何时候都更容易获得

成为一名数据科学家不再需要感到超出你的能力范围。我本人不是数学家,但由于技术进步,理解数据比以往任何时候都容易。

事实上,我认为我们都已经将数据科学作为日常生活的一部分。例如,我们大多数人现在使用健身追踪器,或者接收关于我们购物习惯的更新,或者查看令人恐惧的每周手机使用时间报告。

组织使用这些数据来更好地与他们的客户互动,并将这些见解传递给你。许多公司开发了新软件,使得争论和解释数据比以往任何时候都更容易。

因此,我们可以害怕数据隐私泄露,或者我们可以在自己的生活中发挥数据的力量。这里的关键是进一步磨练这些技能,以便能够将它们应用到其他领域。

最精彩的部分?一些最受欢迎的数据技能是免费学习的。

5.数据技能将意味着工作保障

随着数据的成倍增长,数据技能的需求很大,但没有足够的人来填补这些需求是有道理的。

在最近的一篇福布斯文章中,作者声称,

“随着决策变得越来越受数据驱动,数据技能在所有行业和工作职能中都很有价值,获得这些技能并不像最初想象的那样具有挑战性。”

虽然对数据科学家的需求正在激增,但现在所有其他行业和职业领域中拥有数据技能的人都有优势。

根据一份名为“混合工作经济:新技能如何改写就业市场的 DNA”的 2019 年燃烧的玻璃报告

“你必须熟悉分析和数据。在我们看到增长的所有技能中,数据分析,包括解释、可视化和交流,是最重要的技能之一。所有这些高薪工作(客户服务经理、医疗保健顾问、销售专家)都需要分析和数据。”

如果你准备好成为一名(伪)数据科学家,这里有一些工具可以用来学习这些技能:

  1. 《没有学位如何数据科学》(或任何关于走向数据科学的文章)
  2. 初学数据科学技能的顺序
  3. “数据科学家提升技能的 10 款有趣应用
  4. “2020 年 9 门最佳免费在线数据科学课程”

喜欢这篇文章?这里有另外三个你可能会喜欢的…

[## 为什么我们应该每天睡一会儿

以及如何完美地为你的一天计时

medium.com](https://medium.com/@thestevenpost/why-we-should-take-a-nap-puccino-every-day-f2b3e6618118) [## 为什么每个人都应该学会“像怪物一样思考”

用经济学家的眼光看世界

medium.com](https://medium.com/age-of-awareness/why-everyone-should-think-like-a-freak-6ae474aa6e6c) [## 是什么让美国公司每年损失 300 亿美元,而大多数领导人却没有解决这个问题

提示:有简单的解决方法

medium.com](https://medium.com/swlh/what-costs-u-s-companies-30-billion-a-year-and-yet-most-leaders-dont-address-7fcd3ccf3759)

每个数据科学家都应该考虑成为导师的 5 个理由

原文:https://towardsdatascience.com/5-reasons-why-every-data-scientist-should-consider-being-a-mentor-b6543ae46894?source=collection_archive---------50-----------------------

这也适用于所有的技术和学术领域。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

KOBU 机构Unsplash 上拍摄的照片

数据科学是快速增长的领域之一,我认为它不会很快放缓。事实上,现在进入这个领域比我 4 年前开始时更具挑战性。

许多加入该领域的人,无论是现在还是之前,都是从该领域开始,自学该领域的不同方面,并在申请工作时构建不同的项目以包括在他们的投资组合中。

虽然自学是我最喜欢的学习新编程语言或开发新技能的方法,但通常,当我们独自工作时,我们无法从工业方面获得所需的经验。

最好的解决办法是有一个导师。几乎所有的新来者都试图找到一位导师——或者更多——来指导他们通过这些领域的实践和工业方面。向与我们经历相同旅程的人学习,比浏览所有的理论和方程式能教会我们更多。

在这篇文章中,我不会谈论有一个导师来指导你,帮助你,给你提供到达终点的建议的好处。相反,我将谈谈成为导师的好处。帮助那些刚刚开始实现目标的人。

我一直在等式的两边;我既是被辅导者,也是导师。我必须对你说实话;我从这两者身上学到了同样多的东西,也许从成为导师身上学到了更多。

这就是为什么我想写这篇文章来告诉你我的 5 个理由,为什么我认为数据科学和技术领域的每个人都应该考虑成为一名导师。

让我们开门见山吧…

原因 1:被公认为该领域的专家和领导者。

当你接受一名学员时,你证明了你是你专业领域的专家。可能阻止你成为导师的最具挑战性的事情之一是担心你可能不是什么都知道,因此你不是专家。

你不应该担心这个。你能走到现在是因为你知道自己在做什么。你可能不觉得自己是专家,但没有人什么都知道。做导师会增加你的知识,弥补你可能有的任何知识差距。

因此,你将发展自己的知识,同时引导你的学员发展他们的知识。通过这样做,你将证明你是这个领域的领导者和专家。

当你的学员开始自己的职业生涯,接受他们自己的学员时,你将成为他们激励这些学员转移知识并成为该领域新领导者的原因之一。

原因 2:体验新想法、新方法和新观点的机会。

有时,当我们参与到我们的项目和公司生活中时,我们忘记了接触该领域的新进展。我们养成了片面的工作心态。

例如,从学术角度研究数据科学将阻止我从工业角度解决一些问题。这种心态往往是学术界和工业界之间有些距离和差距的原因。

接受学员将帮助我们更新心态,并获得人们现在进入该领域时所经历的新体验。正如我之前提到的,数据科学是一个快速发展的领域。一个人在 5 或 6 年前加入该领域可能经历的事情与人们现在需要经历的事情完全不同,以启动他们的数据科学职业生涯。

指导某人将帮助你获得奋斗、新技术和新挑战的视角,新人需要经历这些才能达到你现在的位置。获得这些知识会给你一个优势,让你对这个领域有一个新的认识,这将有助于你在自己的职业生涯中取得更大的进步。

原因 3:通过发展教学风格获得更多的理解。

这个大家都知道;要理解一件事,没有比完整地教给别人更好的方法了。一旦你能成功地向别人解释某事,那么你就完全理解了它。

大多数数据科学家或程序员明白他们在做什么,但通常不擅长传递他们的知识。当你做一件事相当长一段时间后,它就成了你的第二天性,你发现很难解释它的内在细节。

我喜欢把这想象成你教别人母语的方式。并非我们所有人都能恰当地教授他们的母语。原因是,我们已经使用这种语言很长时间了;特定结构背后的一些语法对你来说变得很自然,以至于你可能会忘记它们是如何形成的。

发展你自己的教学风格需要你回到基础,这总是一个好主意,以更好地理解你的工作,并加强你的知识基础。

原因 4:发展软技能,如科学、沟通和倾听。

当你教别人一个复杂的概念时,你会发现自己在寻找最好的方式来解释它,以便完全理解,而不会使它过于复杂。做将帮助你发展你的科学交流技能,并最终使你成为一名更好的演讲者。

作为一名数据科学家,它不仅仅是编写代码和操纵数据;沟通和列表是任何数据科学家的基本技能。您需要仔细倾听任何新项目的业务需求,以便正确地开发它。

指导某人会帮助你提高倾听技巧,成为更好的倾听者,从而成为更好的数据科学家。当你和一个新来的人交流时,他们可能不会使用一个有经验的人会使用的词汇。

这是一件好事,因为你的许多客户可能会使用与新人相同的词汇。将任何词汇翻译成技术词汇都会让你对表达同一概念的不同方式有新的理解。

原因 5:回报社区,培养成就感

这可能是我最喜欢的原因。到目前为止,我谈到了如果你接受一名学员,你可以获得的好处,但成为一名导师并不是单行道。成为一名导师是回报社区的好方法。

在数据科学中闯出一条自己的路,你只是阅读了许多其他人写的文章,也许你在早期职业生涯中得到一位经验丰富的数据科学家的指导,或者可能你刚开始时得到了同事们的巨大指导。

帮助别人取得你已经取得的成就,学习你已经学到的东西是回报社会的最好、最有成就感的方式之一。回馈对于帮助你成长为一个人和一名数据科学家非常重要。更不用说,它会给你一种用其他方式得不到的巨大成就感和充实感。

外卖食品

没有人能靠自己成功。为了在生活或事业上取得成功,你需要一个导师和指导。有时这种指导不是直接的,但我们所有人在职业生涯的任何时候都有一些指导。

做导师不仅仅是两个人之间知识和经验的传递。这是导师和被辅导者之间的双向交流;双方都能给对方带来好处。

导师愿意投入时间培养另一名专业人士。学员为导师的工作心态提供了新的视角。指导的行为可以给指导者带来巨大的成就感和满足感,因为指导者可以从个人和职业两方面获得不同的回报。

所以,我把这个留给你们,考虑成为一名导师,把你的知识传授给新来者,并成为一名领导者和未来许多人的灵感。

我成为数据科学家的 5 个原因

原文:https://towardsdatascience.com/5-reasons-why-i-became-a-data-scientist-b36b367dd925?source=collection_archive---------47-----------------------

我决定从一名生物学家转型为一名成熟的数据科学家的主要决定因素。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

多兰·埃里克森在 Unsplash 上的照片

“在小人物身上找不到激情——满足于一种低于你生活能力的生活。”纳尔逊·曼德拉


如果一年前你问我是否知道什么是数据科学家,我不会有答案。

我一直认为自己首先是一名生物学家和环保主义者。在我年轻的时候,我的教育和职业重心是由我永恒的乐观和对了解我们生活的世界的渴望推动的。学习新事物一直是我的激情所在,以至于我穿越世界去获得生物学硕士学位,并成为一名研究科学家。

吸引我从事研究工作的是我对探索的渴望。我喜欢深入研究数据,并用它来解决复杂的现实世界的问题。我在大学期间学会了如何使用 R,慢慢开始涉猎其他编程语言。它开始是一种爱好,但很快变成了一种热情,让我重新考虑我的职业道路。

值得注意的是,我与许多朋友和家人谈论了我想从事数据科学家这一新职业的原因以及我将如何去做。我研究了不同的在线项目和训练营,并与在我之前经历过这个过程的人联系。经过反复考虑,我决定在继续全职工作的同时,兼职完成一个数据科学训练营。

转行是一个艰难的选择,但有五个主要原因促使我成为一名数据科学家:

1。挑战新的思维方式

为了成为一名数据科学家,你需要成为一名数据驱动的思考者。这意味着你必须克服天生的偏见,利用数据来帮助做出商业决策。数据科学是一个极具挑战性的职业,你必须是一个问题解决者。这意味着你必须致力于一生的不断学习,无论是新的软件包、算法还是复杂的神经网络。这就是数据科学具有挑战性和令人兴奋的地方!最棒的是,无论你的职业生涯走向何方,这种思维方式都是极其宝贵的!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Unsplash 上由 Carlos Muza 拍摄的照片

2。多样的技能组合

要成为一名成功的数据科学家,你需要成为一名“多面手”。数据科学家需要对统计和数学有扎实的理解,有能力编码,最重要的是,以一种容易理解的方式将他们的数据分析结果传达给各种不同的受众。拥有所有这些技能是很难得到的,在就业市场上非常有价值。

对我来说,来自一个非常专业的研究背景,我把自己归类到一个非常小众的就业市场。数据科学让我扩展了自己的技能,在所有行业都很受欢迎。

3.快速成长和学习能力

数据科学是一个永远有学习和改进空间的领域。每一年,每个行业对数据的需求越来越多。根据 NodeGraph 的数据,截至 2019 年底,全球约有46 亿互联网用户!随着新领域的出现,如大数据、人工智能、机器学习等,它也在不断发展。

作为一名数据科学家,跟上新技术并即时学习非常重要,但可以说最关键的技能是能够将数据的复杂结果传达给非技术利益相关者并回答业务问题。了解您的领域以及如何最好地实施您的数据结果以进行改进是一个不断学习的过程,这将提高和发展您的批判性思维技能。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

照片由斯科特·格雷厄姆Unsplash 上拍摄

4.高要求高工资!

这在我的清单上非常重要!我住在纽约,那里的就业市场竞争激烈,生活成本极高。成为一名数据科学家的好处之一是,在供应不足的情况下,需求会持续增长。所需的技能组合很难实现,因此许多理想职位的竞争较少。

根据 GlassDoor 的数据,美国入门级数据科学家的平均年薪约为 107,801 美元!!!这几乎是我第一份实验室技术员工作的三倍!经过几年的工作经验,数据科学家的平均基本工资可以达到 14 万美元左右。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Unsplash 上的Damir spanick拍摄的照片

最后,也是最重要的,也是不可否认的,坚定了我的决定的原因是:

5。数据科学打开大门

对我来说,这是最重要的,因为我是那种不会考虑长远的人。当有人问我 10 年后的自己,我从来没有一个明确的答案。数据科学的好处在于,它为从医疗保健到金融、电子商务到国家安全的所有行业带来了机遇!作为一名数据科学家,你学到的技能是可以转移的,不会很快过时。无论是哪个行业,数据科学家在制定业务决策时都扮演着举足轻重的角色。


我希望这篇博文能让你了解为什么数据科学可能适合你!

如果您想进一步了解数据科学,请查看我的另一篇 博客文章 ,了解提高技能和快速学习的方法!

感谢你的阅读!


参考文献:

  1. https://www . springboard . com/blog/data-science-career-paths-different-roles-industry/
  2. https://www.nodegraph.se/how-much-data-is-on-the-internet/
  3. money.yahoo.com

作为一名数据科学家,我学习 Web 开发的 5 个原因

原文:https://towardsdatascience.com/5-reasons-why-im-learning-web-development-as-a-data-scientist-33bd61601b62?source=collection_archive---------3-----------------------

还有,为什么你也应该。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

卢克·皮特斯在 Unsplash 上拍摄的照片

如果有一件事让我对数据科学过程感到沮丧,那可能是这样一个事实,我可能会花几个小时(也许几天)来构建和完善一个模型,但却意识到将它投入生产是另一项非常值得的工作,需要获得更专业的人的帮助。

每当我试图思考如何处理数据科学问题的想法时,我总是被将它转化为其他人(我的利益相关者)可以使用的形式这一绞尽脑汁的步骤所停滞。

经过多年的实践,我决定提升自己的技能,永远学习 web 开发。

以下是我这样做的原因:

我需要一条能让我在技术上更加精通的学习途径

如果你和我一样,我没有在计算机科学或任何相关技术领域接受过正式培训。

我受过自然科学的训练。具体来说,我本科学的是化学,硕士学的是生物工艺工程。我很喜欢研究天然产品和设计复合生物材料。

我是一个数据爱好者,在大学里学的数学比一般的程序员多一点,我碰巧决定用代码来做一些数据魔术,让一些商业人士高兴。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

著名的数据科学维恩图。图片作者,灵感来源(http://drew Conway . com/Zia/2013/3/26/the-data-science-Venn-diagram)

幸运的是,我开始利用我的科学敏锐度和解决问题的能力来应对数据带来的商业挑战。作为一名数据科学家,我已经工作了两年,我意识到我并不像我想象的那样精通软件和其他技术,这些技术可以让我作为一名数据专业人员的生活变得更加轻松和有效。

此外,我意识到,虽然我对用 Python/R 编码和用 SQL 获取数据感到很舒服,但我的脚本看起来常常很枯燥,而且常常需要事后进行大量的重构。我用我的代码完成了一些事情,但是有时候我的笔记本并没有处于一种我很自豪能与其他人分享的状态。

我知道我需要以全面的方式变得更加精通技术。我想变得知识渊博,这样我就可以在几乎平等的水平上与我的技术同行进行交流。

我想对我的投资组合网站有更多的控制权

当我申请我的第一份数据科学工作时,我有一点 git 知识,但我已经把我现有的所有入门项目放在了 WordPress 网站上。

虽然使用博客网站做作品集没有错,但我花了三年多的时间才意识到一个自我托管的网站(甚至只是一个简单的 GitHub 页面)会做得更好,更便宜!)而不是一个收费的博客网站。

更不用说,做限量定制还要付出更多。我意识到我想为自己建立一个更好的投资组合网站,而不是为此付出太多。

我知道维护一个好的投资组合网站将是我数据职业生涯的支柱,所以我也可以自己学着做。

此外,我意识到典型的投资组合网站有多无聊——因为更多时候,你只是以一种非常静态的方式展示你的分析和结果。然而,有些人确实更上一层楼。 JP Hwang ,在他的文章中,整理了几个数据科学作品集,绝对会让你敬畏和鼓舞

我羡慕那些知道如何部署展示项目价值的应用的人。因此,我想学习更多关于 web 开发的知识,以学习可视化和交互式的方式来分享我的作品。

我想用正确的方法学习软件开发

不要误解我。我并不是说你应该自己成为一名网络开发人员。我并不是说,如果不深入研究 web 开发,就不能建立一个好的作品集网站。

如果你和我一样,我总是想学习新的东西。而且,我决定学习 web 开发来补充我的数据科学实践。

我只是不想通过阅读 Stackoverflow 来修复错误,从而学习它。我想用正确的方式学习它。

我想更好地了解和我一起工作的开发人员的想法。我想学习超越我的 Jupyter 笔记本的编程最佳实践。

免责声明: 我仍在寻找最佳的学习途径。请放心,当我了解到更多信息时,我会记录下来。我知道现有的 web 开发库和框架是数据科学家的必备,比如D3 . js TensorFlow。JS 但是会在不同的帖子中编译它们。

我是一名建筑工人,我一直想建造东西

化学让我着迷的原因是能够促进物质之间的反应以创造一种完全不同的材料的想法。一些对社会有潜在价值的东西。

我也在数据科学中发现了同样的魅力。

唯一不同的是,我不用去实验室,戴着护具做一些科学。

我可以穿着睡衣,完全在笔记本电脑上做实验。

我发现单独使用数据和编程来设计和创建解决方案很有趣。虽然,就像我在第一点中所说的,我意识到把我的作品放在那里需要比我所受的训练多得多的工作。

知道了数据科学和人工智能有多么强大,以及它在各行各业有多么广泛,我知道我可能会偶然发现一些好主意,我希望我能够自己(或与团队)转化为一些实际的产品

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

马修·奥斯本在 Unsplash 上拍摄的照片

我想给一个定义不清的角色增加更多的价值

数据科学社区中另一个众所周知的事情是处于一个被过度宣传的行业中的诅咒和祝福。它被吹捧为 21 世纪最性感的工作是有原因的。

幸运的是,企业开始意识到,他们缺乏从数据中获得洞察力的关键能力(或者可能只是普通的 FOMO?)。因此,数据科学家和分析师的就业前景一飞冲天。

不幸的是,许多公司没有意识到如何让数据科学家参与进来并释放他们的全部潜力。许多公司认为数据科学家是多面手,他们有能力获取他们的脏数据,并立即为他们带来数百万的回报。

有些人甚至有荒谬的工作描述,要求技术堆栈不一定适用于他们的问题领域。

这里有一些文章展示了公司和数据科学之间的脱节,主要是从招聘的角度:

[## 为什么这么多数据科学家离开他们的工作

乔尼·布鲁克斯。受这篇文章的启发,在 KDnuggets 投票中投票:数据科学/机器学习/数据专业工作…

www.kdnuggets.com](https://www.kdnuggets.com/2018/04/why-data-scientists-leaving-jobs.html) [## 停止雇佣数据科学家,直到你准备好数据科学

今天,我又接到了一个电话,一位才华横溢的数据科学家在一家大型企业的人力资源部工作…

www.kdnuggets.com](https://www.kdnuggets.com/2015/07/stop-hiring-data-scientists-until-ready.html) [## 哪些公司在雇佣数据科学家方面犯了错误

简而言之,如果你不了解一个特定的职位需要什么样的技能和才能,你就无法招聘到这个职位

towardsdatascience.com](/what-companies-get-wrong-about-hiring-data-scientists-704fa60c594)

我敢打赌,随着公司找到利用数据科学的正确方法,以及当前的数据科学家专注于特定的数据科学领域,事情将保持不变,因为公司正在度过这个尴尬的阶段。

目前,我希望我的技能更加灵活,能够为我工作的公司增加更多的价值。我希望通过掌握数据和开发两方面的知识,以更敏捷的方式处理问题。

学习 web 开发是在职场中脱颖而出的一种方式吗?

也许吧。然而,这不是唯一的方法,因为我也可以通过深入问题领域来做到这一点。尽管如此,我知道学习软件开发无论如何都是有用的,并且可以拓宽我的视野,因为我正在科技行业建立我的职业生涯。

这是进入更机器学习工程职业的一种方式吗?

有可能。到目前为止,我知道 DS 相关角色的定义仍然模糊不清,但是关于 ML 工程师有一件事是肯定的,那就是他们比一般的数据科学家有更高的技术能力。我猜,学习如何部署 web 应用程序和修补后端是获得更接近 ML 工程师技能的一条途径。

结论

最后,作为一名数据科学家,我学习 web 开发的原因如下:

  • 拥有一条能让我在技术上变得更加熟练的学习途径
  • 更好地控制我的投资组合网站
  • 以正确的方式学习软件开发
  • 建造东西
  • 为定义不清的角色增加更多价值

学习 web 开发可以让我以有趣和可视化的方式了解软件开发的来龙去脉,同时学习一些在我作为数据科学家的职业生涯中有用的技能。

现在,我将浏览以下在线资源,开始学习基础知识:

[## 2021 年的完全网络开发者:零到精通

刚刚更新到 2021 年!通过学习最受欢迎的技能,成为一名全面的网络开发人员!这是其中一个…

www.udemy.com](https://www.udemy.com/course/the-complete-web-developer-zero-to-mastery/) [## Web 开发人员训练营:学习 HTML、CSS、Node 等等!

嗨!欢迎来到 web 开发者训练营,这是学习 Web 开发的唯一课程。有很多…

www.udemy.com](https://www.udemy.com/course/the-web-developer-bootcamp/) [## freeCodeCamp.org

在家学习编码。构建项目。获得认证。自 2014 年以来,超过 4 万名 freeCodeCamp.org 大学毕业生…

www.freecodecamp.org](https://www.freecodecamp.org/learn)

补充一下,我特别喜欢安德烈·尼戈瓦的《零到精通》课程(上面的第一个链接)。不仅仅是因为他的课程是更新最活跃的课程之一(他最近将他的课程更新到了 2021 年版本),还因为围绕它的巨大的活跃社区。我目前是一个由数千名学习者组成的社区的一员,也是一个由 30 人组成的令人敬畏的小型学习小组的一员,这个小组让学习变得更加有趣和吸引人。

随着未来几个月的进展,我期待着改进我的作品,以及我将建立的所有网站和应用程序。我会不时在这里发布我的进展。

股票预测项目失败的 5 个原因

原文:https://towardsdatascience.com/5-reasons-why-stock-prediction-projects-fail-a3dddf30d242?source=collection_archive---------21-----------------------

在开始一项计划之前需要考虑什么

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

帕特里克·托马索在 Unsplash 上的照片

随着机器学习和人工智能的复兴,实现新老预测算法从未如此简单。只需几行代码,初露头角的数据爱好者就可以轻松获得最先进的模型,随时准备征服手边任何不可逾越的数字任务。但是一知半解可能是一件危险的事情。虽然大部分机器学习可以归功于统计学和编程,但同样重要,但为了即时满足而经常被忽略的是领域知识。

这一点在投资领域最为真实。虽然环境中有丰富的股票价格和可访问且免费的基本数据,但不加选择地应用预处理技术和机器学习算法将产生不加选择的结果。金融时间序列数据极其微妙,系统信噪比很低,从业者花费他们的职业生涯试图实现难以实现的目标,即创造持续的优异表现,只有少数人成功。因此,需要对数据有更深入的了解,这与取得某种程度的成功是相关的。因此,本文旨在揭示股票预测项目一旦投入生产就可能失败的一些常见原因。

1。选择偏差

许多项目都是从任意选择一只要应用算法的股票开始的,这只股票通常是苹果或亚马逊之类的科技股,原因很简单,因为这些公司在消费者的日常生活中非常有名,根深蒂固。这是有问题的,因为股票选择不是一个任意的过程,它是投资决策过程的一部分,需要一个模型。

以苹果为例,如果我们看看它在 2019 年的表现与更广泛的标准普尔 500 指数相比,我们看到它的表现超过该指数近 60%。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

苹果 vs S&P500

亚马逊、微软和谷歌的情况大致相同,因为美国科技是 2019 年表现最好的行业。从该板块中任意挑选一只股票作为起点将会严重歪曲投资机会集的特征。

2。投资组合构建

对于稳健的投资策略来说,控制风险与创造回报同样重要。如果选股是投资过程的第一步,那么投资组合的构建就是至关重要的下一步。许多项目会建议一种买卖特定股票的策略,但通常假设 100%的潜在投资组合将投资于该股票。在实践中很少出现这种情况,单一的风险敞口会使投资者容易遭受巨大的集中风险。谨慎构建的投资组合非常多样化,因为它是风险控制的最重要来源之一。可行的机器学习投资策略应该同时考虑选股和投资组合构建。

3.预处理的不正确应用

像标准化这样的标准冲洗、清洗和重复数据预处理技术不能直接应用于股票价格。下图显示了 S&P500 物价水平的年度分布情况,这应该能给我们一些直观的解释:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2007-2008 年 S&P500 指数价格水平

在机器学习的标准训练/测试分离范例中,通过使用训练集的参数进行变换来应用预处理,在明确假设训练和测试样本是从相同分布中抽取的的情况下,将预处理应用于测试集。

我们可以清楚地看到,股票价格的分布每年都会发生变化,这意味着均值和标准差也会发生变化。金融时间序列的这种特性被称为非平稳性,这是金融预测中的一个未决问题。还可以观察到,分布很少是正态分布,这使得参数测量(如平均值和标准差)变得毫无意义。

此外,应用其他常见程序(如最小-最大归一化)并不能解决这个问题,因为下限也会逐年变化,而且价格理论上没有上限。从业者通常会应用价格差异转换(股票价格回报),但是这并不能完全消除股票价格的一些不利属性。

4.前瞻偏差

虽然现在只需要几行代码就可以获得有意义的股票和宏观经济基本面数据的历史,但我们需要认识到,这些数据受到了前瞻偏差的困扰。通常,与特定日期相关的观测在该日期实际上是不可用的。例如,股票基本面数据依赖于在生效日期引用的报告,该日期通常与公司的会计日历一致,但是,该报告直到生效日期后几个月才发布,反映了准备时间。

在宏观经济数据中,这种偏差是对前期数据进行修正的结果,有时是在初始信息发布后一个季度进行的。这对于短期交易策略来说尤其成问题。任何使用这些数据集的项目都应考虑适当的滞后和修订。

5.工程未完!

许多股票预测项目将像常规的机器学习项目一样,以测试与训练性能的折线图来揭示性能指标,如准确性或 RMSE,推理出如果两条线足够接近并且误差相当低,则该项目是成功的。这个过早的结论忽略了发现成功策略的重要一步;测试财务结果。投资不能简化为最小化无形错误率的简单练习,因为犯错的后果是真实存在的。最后一步应该是对这个策略进行回溯测试,就好像它是长期持有的一样,并计算利润/损失或回报。测试人员还需要考虑,如果投资组合在恢复之前的测试期间遭受了重大损失,他们是否有风险承受能力继续执行给定损失的策略。

使用指数加权移动平均策略(EWMA)可以得出一个简单的例子,该策略将过去价格的衰减平均值作为未来价格的预测。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

乍一看,EWMA 对 S&P500 的预测非常好,但如果我们仔细观察今年年初市场下跌的时期,我们会发现事情并不像表面上那样。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

EWMA 战略 vs S&P500 回归

尽管蓝色和橙色线似乎仍然紧密固定,EWMA 策略无法驾驭日内波动,因为它只包含过去的信息,它看起来一直在追逐真实的价格水平,经常导致它预测市场在实际下跌时上涨,反之亦然。在此期间遵循这一策略的表现将会低于标准普尔 500 指数。

结论

在开始一个股票预测项目之前,尤其是你打算投资真金白银的项目,做一些关于这个主题的前期研究和理解数据是值得的。如果结果好得令人难以置信(例如,准确性大大超过 50%),随着参与者的数量和这些参与者的日益成熟,市场在价格发现方面效率极高,特别是在股票方面。虽然这可能不排除潜在机会的可能性,但这确实意味着它需要比开箱即用的算法和标准预处理技术更多的努力才能找到它。

免责声明 : t 他的帖子纯属个人观点和看法的表达。它不代表任何建议。

你应该做项目而不是收集数据科学证书的 5 个理由

原文:https://towardsdatascience.com/5-reasons-why-you-should-do-projects-instead-of-collecting-data-science-certificates-9023accda6b4?source=collection_archive---------11-----------------------

意见

把手弄脏来学习。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

屋大维·丹在 Unsplash 上拍摄的照片

我在数据科学之旅中迈出的第一步是注册在线证书。一切都很顺利。我只是在跟进和学习基础知识。过了一段时间,我开始觉得做一个数据科学家很容易。我会拿到一些证书,然后开始找工作。我很快就拿到了那些证书。然后你猜怎么着?

欢迎来到现实世界!

证书擅长教你基础知识。它们让你熟悉数据科学领域。然而,他们绝对不是游戏规则的改变者。

值得注意的是,我说的是完成 MOOC 课程所获得的证书。那些要求你通过像 AWS 证书这样的综合考试的在其他页面上。

回到我们的讨论,我列出了我的 5 个理由,为什么你应该在项目上工作,而不是收集大量的证书。

1。证书不能提供足够的“主动学习”

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

绿色变色龙在 Unsplash 上拍摄的照片

证书不会挑战学习者。如果你注意听课,通读资料,你可以很容易地通过分级考试。他们没有给你足够大的压力让你真正理解这些话题。如果你没有足够努力地思考和推动自己,这些信息会停留在短期记忆中并被遗忘。

正如尼克·达姆在这篇文章中所说,“对于大脑中发生的学习来说至关重要的神经连接的变化,在学习经历不活跃时似乎不会发生。许多研究表明,积极参与是大脑变化的先决条件。毫不奇怪,仅仅听一场演示或讲座不会带来学习。”

大部分时间都花在听 MOOC 课程的讲座上。另一方面,做项目是主动学习的一个很好的例子。他们要求你积极参与整个过程。

2。不要跳出框框思考

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Anthony Tori 在 Unsplash 上拍摄的照片

证书旨在让你严格遵循课程。这实际上是有意义的,因为你积累了从基础到高级的知识。但是,地图是为你画的。你不需要跳出框框思考。另一方面,数据科学领域的项目没有地图或限制。你可以定义一个问题,设计一个解决方案,并在任何业务领域实现它。我认为这是作为一名数据科学家最具挑战性的部分。数据科学家用数据解决问题。在现实世界中,问题和数据都不会出现在你的盘子里。

当然,学习可以从证书中学到的工具和技术是重要和必要的。然而,如果你不能使用这些工具和技术创造价值,那么掌握这些工具又有什么意义呢?为了能够创造价值,你需要跳出框框思考。思考项目想法并实际实施它们,构建您利用数据科学创造价值的途径。证书中讨论的用例受特定域的限制。然而,数据科学项目的潜在价值要多得多。仅仅关注证书会阻止你跳出框框思考。

3。现实充满惊喜

证书只涵盖可预测的场景。然而,现实生活充满了惊喜。在证书中涵盖所有可能的障碍是不可能的,也是不可行的。这也使得他们太长,无法详细提及每一种可能的解决方案或技术。过长的课程会降低你的动力,因此完成率会很低。

在我完成了几门 MOOC 课程后,我觉得自己像一个熊猫大师。我知道用熊猫做数据分析所需要的一切。然而,当我开始我的第一个项目时,我觉得我正站在一条漫长道路的起点。虽然这是一个简单的介绍性项目,但我花了很多时间重复下面的步骤。

  • 我面临一个问题
  • 开始寻找解决方案
  • 在寻找解决方案的过程中学习很多东西
  • 找到解决办法

项目确实教会了你很多。更重要的是,当项目完成时你感受到的喜悦会激励你立刻开始一个新的项目。

4。数据不是放在银盘上提供给你的

大多数证书都为您准备好了数据。数据是干净的,格式也很好。它有时包含一些丢失的值,这些值的结构很容易处理。在某些情况下,会要求您进行基本的预处理。那么,你准备好了!

我不认为大多数数据科学家会这样。你需要在数据之旅中全程思考。数据科学家通常需要以下问题的答案:

  • 需要什么样的数据?
  • 怎么才能收藏起来?
  • 怎么清洗和预处理?

当你在做项目时,很大一部分工作是数据准备。您将获得数据收集和准备的实践经验,这对于数据科学家来说是一项非常有价值的技能。你不能通过收集证书来提高技能。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

照片由马修·施瓦茨在 Unsplash 上拍摄

5。可行性事宜

证书将带领您完成一个典型的数据科学项目,从数据收集到模型评估。您可以为一个样本用例创建一个模型。然而,在那些证书中并没有深入讨论可行性。可行性和项目的其他步骤一样重要。如果你的解决方案太复杂而无法实现,那么它就毫无价值。做项目,还需要思考可行性。您不仅试图构建一个模型,而且还寻找部署您的模型并从中创造价值的方法。你可能听说过 Kaggle 上的 Netflix 奖竞赛,奖金为 100 万美元。网飞决定不实施优胜模型,因为它不可行。当你在做独立的项目时,你实际上不需要部署你的模型或者将它们投入生产。但是,你至少把可行性想透了。

就像任何学习过程一样,我们开始做简单的项目,然后通过做得越来越多来提高水平。我们最终认识到,我们的项目有可能在生产中实现。但是,为了能够达到生产水平,我们需要开始做项目。收集一堆证书不会把我们带到那一步。我建议在学习基础知识后,花时间在项目上。最好的做法是亲自动手,做很多项目。

感谢您的阅读。如果您有任何反馈,请告诉我。

你应该从 Jupyter 笔记本转向脚本的 5 个理由

原文:https://towardsdatascience.com/5-reasons-why-you-should-switch-from-jupyter-notebook-to-scripts-cb3535ba9c95?source=collection_archive---------0-----------------------

意见

使用脚本帮助我认识到 Jupyter 笔记本的缺点

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

卢卡·布拉沃Unsplash 上拍摄

动机

像大多数人一样,我在开始学习数据科学时使用的第一个工具是 Jupyter Notebook。大多数在线数据科学课程使用 Jupyter 笔记本作为教学媒介。这很有意义,因为对于初学者来说,在 Jupyter Notebook 的单元格中开始编写代码比编写一个包含类和函数的脚本更容易。

Jupyter Notebook 是数据科学中如此常见的工具的另一个原因是 Jupyter Notebook 使探索和绘制数据变得容易。当我们键入’ Shift + Enter '时,我们会立即看到代码的结果,这使我们很容易识别我们的代码是否有效。

然而,随着我从事更多的数据科学项目,我意识到 Jupyter Notebook 有几个缺点:

  • 杂乱无章:随着我的代码变得越来越大,我越来越难以跟踪我写了什么。不管我用多少次降价把笔记本分成不同的部分,这些不连贯的单元格让我很难专注于代码做什么。
  • **难实验:**你可能想测试用不同的方法处理你的数据,为你的机器学习算法选择不同的参数,看看精度有没有提高。但是每次你试验新方法的时候,你都需要找到并重新运行相关的细胞。这是令人困惑和耗时的,尤其是当处理过程或训练需要长时间运行时。
  • **再现性不理想:**如果您想要使用结构稍有不同的新数据,则很难确定笔记本中的错误来源。
  • 难调试:当你的代码出现错误时,很难知道错误的原因是代码还是数据的变化。如果错误在代码中,是代码的哪个部分导致了问题?
  • 不适合生产: Jupyter 笔记本与其他工具配合不太好。使用其他工具运行 Jupyter Notebook 中的代码并不容易。

我知道一定有更好的方法来处理我的代码,所以我决定尝试一下脚本。为了减少混淆,我引用了。py 文件,当在本文中使用“脚本”一词时。这些是我在使用脚本时发现的好处:

组织

Jupyter Notebook 中的单元格很难将代码组织成不同的部分。通过一个脚本,我们可以创建几个小函数,每个函数指定代码做什么,就像这样

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

更好的是,如果这些函数可以归入同一个类别,比如处理数据的函数,我们可以把它们放在同一个类中!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

每当我们想要处理我们的数据时,我们知道类Preprocess中的函数可以用于这个目的。

鼓励实验

当我们想尝试不同的方法来预处理数据时,我们可以像这样通过注释来添加或删除函数,而不用担心破坏代码!即使我们碰巧破解了代码,我们也知道在哪里修复它。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

再现性的理想选择

有了类和函数,我们可以使代码足够通用,这样它就能够处理其他数据。

例如,如果我们想要删除我的新数据中的不同列,我们只需要将columns_to_drop更改为一个列列表,我们想要删除并且代码将顺利运行!

我还可以创建一个 管道 ,指定处理和训练数据的步骤!一旦我有了管道,我需要做的就是使用

pipline.fit_transform(data)

对训练和测试数据应用相同的处理。

易于调试

使用函数,更容易测试函数是否产生我们期望的输出。我们可以很快找出代码中应该修改的地方,以产生我们想要的输出

如果所有的测试都通过了,但是在运行我们的代码时仍然有一个错误,我们知道数据是我们下一步应该查看的地方。

例如,在通过上面的测试后,我在运行脚本时仍然有一个 TypeError,这让我产生了我的数据有 null 值的想法。我只需要处理好这一点就能顺利运行代码。

我在这里写了一篇关于如何使用 Pytest 进行测试的文章

非常适合生产

我们可以在多个脚本中使用不同的函数,就像这样

或者添加一个配置文件来控制变量值。这可以防止我们浪费时间在代码中追踪一个特定的变量来改变它的值。

我们也可以很容易地添加工具来跟踪实验,如 MLFlow 或工具来处理配置,如 Hydra.cc

如果你不知道 hydra,它是一个 Python 工具,用来配置你的数据科学项目。这个工具允许你试验不同的参数和模型,而不需要花费几个小时来修改你的代码。

我不喜欢不用 Jupyter 笔记本的想法,直到我把自己推出舒适区

我以前一直用 Jupyter 笔记本。当一些数据科学家建议我从 Jupyter 笔记本切换到脚本以防止上面列出的一些问题时,我不理解并对这样做感到抵触。我不喜欢运行单元时看不到结果的不确定性。

但是,随着我在新公司开始我的第一个真正的数据科学项目,Jupyter Notebook 的缺点越来越大,所以我决定将自己推出舒适区,尝试使用脚本。

一开始,我感到不舒服,但开始注意到使用脚本的好处。当我的代码被组织成不同的函数、类和多个脚本时,我开始觉得更有条理了,每个脚本服务于不同的目的,比如预处理、训练和测试。

你是在建议我停止使用 Jupyter 笔记本吗?

不要误解我。如果我的代码很小,如果我不打算将代码投入生产,我仍然会使用 Jupyter Notebook。当我想探索和可视化数据时,我使用 Jupyter Notebook。我还用它来解释如何使用一些 python 库。例如,我在这个资源库中主要使用 Jupyter 笔记本作为解释我所有文章中提到的代码的媒介。

如果你不喜欢用脚本编写所有东西,你可以同时使用脚本和 Jupyter Notebook 来实现不同的目的。例如,您可以在脚本中创建类和函数,然后将它们导入到笔记本中,这样笔记本就不会那么杂乱。

另一个替代方案是写完笔记本后把笔记本变成剧本。我个人不喜欢这种方法,因为在我的笔记本上组织代码,比如将它们放入函数和类中,以及编写测试函数,通常会花费我更多的时间。

我发现写一个小函数比写一个小测试函数更快更安全。如果我碰巧想用新的 Python 库来加速我的代码,我可以使用我已经编写的测试函数来确保它仍然按照我的预期工作。

话虽如此,我相信有更多的方法来解决 Jupyter 笔记本的缺点,而不是我在这里提到的,例如网飞如何将笔记本投入生产,并安排笔记本在特定时间运行

结论

每个人都有自己的方法来提高工作效率,对我来说,就是利用脚本的效用。如果你刚从 Jupyter 笔记本转到脚本,用脚本写代码可能不太直观,但是相信我,你最终会习惯使用脚本的。

一旦发生这种情况,你将开始意识到脚本比杂乱的 Jupyter 笔记本有很多好处,并希望用脚本编写你的大部分代码。

如果你正在寻找从 Jupyter Notebook 转换的方法,这篇文章提供了一些很好的技巧,让你的代码可复制、可自动化,并且可以用脚本部署。

如果你对大的改变感到不舒服,从小的开始。

大变化始于小步

我喜欢写一些基本的数据科学概念,并尝试不同的算法和数据科学工具。你可以通过 LinkedInTwitter 与我联系。

如果你想查看我写的所有文章的代码,请点击这里。在 Medium 上关注我,了解我的最新数据科学文章,例如

[## 数据科学家 Pytest

适用于您的数据科学项目的 Pytest 综合指南

towardsdatascience.com](/pytest-for-data-scientists-2990319e55e6) [## 当生活不给你喘息的机会,如何学习数据科学

我努力为数据科学贡献时间。但是发现新的策略使我能够提高我的学习速度和…

towardsdatascience.com](/how-to-learn-data-science-when-life-does-not-give-you-a-break-a26a6ea328fd) [## 如何有效地微调你的机器学习模型

发现为您的 ML 模型寻找最佳参数非常耗时?用这三招

towardsdatascience.com](/how-to-fine-tune-your-machine-learning-models-with-ease-8ca62d1217b1) [## 如何创建可重用的命令行

你能把你的多个有用的命令行打包成一个文件以便快速执行吗?

towardsdatascience.com](/how-to-create-reusable-command-line-f9a2bb356bc9)

您的 ML 系统需要保护的 5 个原因

原文:https://towardsdatascience.com/5-reasons-why-your-ml-system-needs-to-be-protected-b2f5ea0c0636?source=collection_archive---------48-----------------------

我们探索机器学习系统的弱点以及为什么需要保护它们

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源:https://scanta.io/

我们用每天的努力工作和坚持不懈来激发我们的雄心,让我们的生活变得更加轻松便捷。人类就是这样正确前进的!蜘蛛侠说“ 力量大,责任大 ”真是有远见。

机器学习就是这样一种力量,它提高了我们的便利性,从 Spotify 基于我们以前的播放列表的建议,到过滤垃圾邮件和钓鱼邮件。虽然 ML 是先进技术给我们的一个巧妙礼物,但它总是被臭名昭著的恶意软件和攻击所征服。

每一项业务都随着客户和投资者的信任而发展。只有在客户的数据不被泄露并且隐私得到维护的情况下,这种信任才会存在。众所周知,随着数据成为新的燃料,这已经成为一项艰巨的任务。无论规模大小,每个组织都在争分夺秒地保护自己和客户免遭数据泄露。

在这篇文章中,我将告诉你 5 个很好的理由,为什么是时候努力保护你的 ML 系统了。

**1。数据盗窃:**我们预计电子商务将超过万亿美元大关,这显然也会导致数字欺诈的激增。Juniper Research 报告称,到 2023 年,这种欺诈行为预计将达到 1300 亿美元。另一个令人震惊的消息是,几乎 50%的电子商务公司已经成为它的受害者。

**2。知识产权盗窃:**专利就像是对你的创造力和艺术鉴赏力的“合法垄断”(美国专利和商标法规定的 20 年)。在你的公司环境中,知识产权战争可能会比阿姆和伊吉·阿德利亚之间的战争更糟糕。这些是在不同领域看到的知识产权违规的重要形式,即:

a. Tech: 员工窃取计算解决方案或将工作外包,以赚取双倍工资。

b .医疗: 医护人员和药师开具超出其授权能力的药品账单。

c .教育: 有人索要假助学贷款助学金。

d .财务: 伪造交易的虚开发票的制作和执行。

**3。不合规:**现行的网络安全法律无异于公司的责任,伴随着大量的制衡。

答:隐私政策全文 :根据 2004 年《加州在线隐私保护法》,在加州(现在几乎覆盖整个美国)经营在线业务和网站或收集客户信息(跟踪或研究目的)的每家公司都必须在网站上详细说明其隐私政策。该法律解释了收集信息的范围、第三方共享信息的目的

b .个人数据 在所有方面都与 个人信息或个人身份信息 有很大不同(你可能会互换地提到它们,但它们都有特定的法律分类),甚至美国联邦贸易委员会(FTC)也需要提出其隐私法,袖手旁观 it。

c .计划把你的眼界 扩展到美国以外。太好了!但是记得和你的律师预约。美国以外的数据隐私法与美国法律并不平行,例如欧盟的 GDPR 赋予其公民收集、删除公司获取的信息的权利;而中国的数据保护法允许中国政府干涉并保存所有软件包的源代码副本。

4。降级的 QoS: 服务质量揭示了计算服务的整体性能,攻击者可以利用它在系统中轻松地传输大量的优化授权。通过这样做,攻击者可以降低服务质量或强迫人工操作者。支持(QoS)的网络容易受到另一种形式的攻击——QoS 攻击。诸如区分服务网络之类的支持 QoS 的网络以不同的成本提供不同类别的服务。这种收费率的差异可能会刺激一些用户窃取带宽或任何其他网络相关资源。

**5。分析中毒:**数据中毒是金融行业最潜在的威胁载体,因为它可以破坏任何基于人工智能的安全系统。它具有高度的操纵性,并且在持续损害数据和破坏客户信任的同时,被忽视了数十年。法医专家还发现,追踪如此复杂而脆弱的状态向量极其困难,这表明基于云的基础设施需要熟练的安全模块。

除了良好的 ML 服务之外,你还需要安全,它总是能保护和过滤掉潜在的威胁,有点像现代的数据角斗士。我希望您现在更加意识到保护您的 ML 系统的迫切需要。祝你好运!

点击了解更多关于我们正在建设的 Scanta 的信息

参考资料:

1.Juniper 研究报告https://www . juniper Research . com/Research store/fin tech-payments/online-payment-fraud-Research-report?UTM _ campaign = onlinepaymentfraud 18 pr 2&UTM _ source = business wire&UTM _ medium = email

新手通常误用 Python 的 5 种场景

原文:https://towardsdatascience.com/5-scenarios-where-beginners-usually-misuse-python-98bac34e6978?source=collection_archive---------26-----------------------

更好地利用 Python

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

约翰·马特丘克在 Unsplash 上的照片

Python 是当今许多初学者的首选编程语言。简单易学的语法、大量的库和丰富的社区是 Python 飞速发展的主要原因。

当我六年前满载着 Java 登陆 Python 时,我发现自己很多次都是在用 Java 编写 Python 代码。作为新手,我没有充分利用 Python 的优势,在某些情况下,我甚至误用了它。

回到现在,我仍然看到一些新的初学者在没有花时间阅读最佳实践和建议的情况下用 Python 跳跃和编码。为了对此有所帮助,我列出了以下五个 Python 被误用的场景以及更好地利用它的建议。

#1 使用列表时

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

列表和元组

List 允许存储任何数据类型的元素,没有大小限制。尽管这种灵活性使 list 成为首选的数据收集方式,但实际上,什么时候使用它,什么时候不使用它,都有一些最佳实践。

当存储相同性质(数据类型和含义)的元素时,应使用 List。

Python 并没有以编程方式对此进行限制。将单一性质的项目存储在一个列表中使开发人员的工作更容易。开发人员很容易就能预料到列表中未来会有哪些项目,并据此满怀信心地编写脚本。

考虑下面的列表。这个列表没有单一的项目。开发人员无法确定该列表是否包含房屋部件、尺寸或其他内容,因此他应该分别处理所有不同的项目。

list_of_things = ['Door', 2, 'Window', True, [2.3, 1.4])]

考虑下面的水果清单分数清单。根据前几项,您可以很容易地推断出第一个列表将总是包含水果名称,第二个列表将包含分值。

list_of_fruits = ['apple', 'orange', 'pear', 'cherry', 'banana']
list_of_scores = [80, 98, 50, 55, 100]

另一方面, tuple 更适合用于存储具有不同含义或数据类型的项目。Tuple 不提供在不创建新对象的情况下存储无限项的灵活性(因为 tuple 是不可变的)。

#2 迭代连接字符串时

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

串并置

你可能听说过在 Python 中一切都是一个对象,对象可能是不可变的可变的。不可变对象需要在更新赋值时创建新的对象,而可变对象则不需要。

假设您想在一个字符串中生成整个字母表。由于 string 是一个不可变的对象,每当您使用“+”操作符连接字符串值时,您总是会生成新的对象。

one_line_alphabet = ''
for letter_index in range(ord('a'), ord('z')):
    one_line_alphabet += chr(letter_index)

连接字符串的首选方式是使用 join 函数。使用连接功能可将计算时间减少约 3 倍。在我执行的一个测试中,迭代连接一百万个字符串值花费了 0.135s ,而使用 join() 函数仅花费了 0.044s

small_letters = [chr(i) for i in range(ord('a'), ord('z')+1)]
single_line_alphabet = ''.join(small_letters)

所以**,*每当你需要连接一个字符串列表时,使用 join 函数。通过 join 函数连接几个字符串不会真正让您看到性能差异。要连接几个字符串值,使用。格式*代替加号运算符。例如:

name = 'John'
surname = 'Doe'
full_name = '{name} {surname}'.format(name=name, surname=surname)

#3 读写文件时

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

答。txt 文件

要在 Python 中读写文件,你需要首先通过内置的 open 函数打开文件。你打开文件,读或写内容,然后关闭文件。当您这样做时,可能会出现一些问题。忘记关闭文件和不处理异常就是其中的一些。

完成作业后忘记关闭文件会导致问题。例如,如果您在写入文件后忘记关闭文件,写入的内容将不会出现在文件中,并且您将在文件仍处于打开状态时保留计算机中分配的资源。如果没有手动处理异常,并且在处理文件时出现错误,文件将保持打开状态。

f = open(file='file.txt', mode='r')
lines = f.readlines()
...
f.close()

每当你打开文件时,建议使用带有关键字的*。用*是一个上下文管理器,它包装代码并确保为您自动处理异常。例如,当您读/写文件时,无论 with-body 中有什么可能失败,都会自动处理异常,并且文件总是为您关闭。

with open('file.txt') as f:
    read_data = f.read()
    ...

skippingwith你应该自己处理一切。关闭文件和异常处理应该由您来明确处理。相反,让你的生活变得更轻松,让一起管理局面。

#4 跳过发电机时

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

将所有值保存在一个列表中,而不是逐个生成它们

在许多情况下,您需要生成一个值列表,以便稍后在脚本中使用。比方说,您需要为前 100 个数字生成所有三个数字的组合。

combinations = []
value = 100
for i in range(value):
    for j in range(value):
        for k in range(value):
            combinations.append((i, j, k))

当执行完成时,组合列表将包含 1M 个元组,每个元组具有三个 int 值。这些值将驻留在内存中,直到被删除。使用 sys 模块中的 getobjectsize 函数检查对象大小,得到的大小为 8.29MB

您可以创建一个 生成器 来代替使用列表来存储值并将它们保存在内存中,无论何时您调用它,它都会一次生成一个组合。这减少了内存消耗并保持了更快的执行速度。

def generate_combinations_of_three(value):
    for i in range(value):
        for j in range(value):
            for k in range(value):
                yield (i, j, k)gen = generate_combinations_of_three(100)next(gen) # yields (0, 0, 0)
next(gen) # yileds (0, 0, 1)
...

因此,尽可能使用发电机。请始终记住,内存容量是有限的,并尽可能优化内存使用。使用生成器,尤其是在开发可伸缩的解决方案时。发电机很重要,考虑一下吧!

#5 使用理解时

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

列出理解

Pythonista 描述了一个程序员,每当用 Python 编码时,他都遵循来自Python 之禅的指导方针。如果你是 Python 的新手,你会倾向于夸大这个禅宗的某些观点,而轻描淡写其他观点。

当你开始了解理解的时候,你会注意到这一点——你倾向于翻译理解中的“每一个”循环。假设您有一个要展平的三维数字矩阵。

matrix = [[[ 1, 2, 3 ],
           [ 4, 5, 6 ],
           [ 7, 8, 9 ]],
          [[ 10, 20, 30 ],
           [ 40, 50, 60 ],
           [ 70, 80, 90 ]]]

使用列表理解,扁平化看起来像:

flatten_list = [x for sub_matrix in matrix for row in sub_matrix for     
                x in row]

使用 for 循环时,展平看起来像:

flatten_list = []
for sub_matrix in matrix:
    for row in sub_matrix:
        for x in row:
            flatten_list.append(x)

理解很酷,但可读的代码更酷。不要让你的意图总是使用理解。即使这可能需要编写更少的代码,也不要牺牲代码的可读性。

结论

无论何时开始学习一门新的编程语言,无论你是否有经验,都要花时间阅读最佳实践。每种语言都有一些使其特殊的成分,所以要确保在正确的地方使用它们。

Python 致力于更快更容易地完成工作,但是你不应该忽视那些可能对你的代码生命周期产生负面影响的小决定。尽可能寻找更好的优化解决方案。

你可以用勺子或叉子切奶酪,但刀子肯定会做得更好。

[## 用于即席文本分析的 10 个纯 Python 函数

不使用外部库压缩文本数据

towardsdatascience.com](/10-pure-python-functions-for-ad-hoc-text-analysis-e23dd4b1508a) [## 提升你的软件开发职业生涯的三件大事

从优秀到卓越

medium.com](https://medium.com/swlh/three-significant-things-to-elevate-your-software-development-career-83be99cedf28) [## 作为一名开发人员,赢得尊重的 4 件事

迈向成功的事业

medium.com](https://medium.com/@dardanx/4-things-that-will-earn-you-respect-as-a-developer-eec54d1ac189)

5 sci kit-学习必须知道的隐藏宝石

原文:https://towardsdatascience.com/5-scikit-learn-must-know-hidden-gems-8249e5214a73?source=collection_archive---------63-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Pixabay

数据生成器、管道、验证曲线等

尽管 Scikit-learn 是机器学习中的一个主要部分,但许多人并不知道或没有使用该库中一些最有用的隐藏宝石。这里是 Scikit-learn 最有用的五个隐藏的宝石。

数据集生成器

Scikit-learn 有大量的数据集生成器,可用于创建具有不同复杂性和形状的人工数据集。

例如,make_blobs函数创建“斑点”或数据簇,具有任意数量的样本、中心/簇和特征/维度。

Xy的值为:

X根据标签y被图形化和着色时,数据的形状可以被可视化:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Scikit-learn 具有许多其他数据集创建功能:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • make_moons(n_samples=100, noise=0.1)
  • make_circles(n_samples=100, noise=0.05)
  • make_regression(n_samples=100, n_features=1, noise=15)
  • make_classification(n_samples=100)

管道

管道允许将各种方法合并到一个单一的模型中。在自然语言处理(NLP)应用中尤其如此,这些应用需要需要标准化或规范化的矢量器或数据。可以通过将几个模型组合在一起来创建管道,在管道中,数据按顺序流经聚合模型。它具有标准的拟合和预测能力,使训练过程更有组织性。

各种对象可以放入一个管道中:

  • 估算者。你有丢失的数据吗?试试简单的估算器或 KNN 估算器。
  • *编码器。*如果您的数据是非二进制分类数据,您可能需要使用标签编码器或一次性编码器。
  • *NLP 矢量器。*如果您正在处理 NLP 数据,请使用计数矢量器、TD-IDF 矢量器或哈希矢量器。
  • 数值转换。尝试标准化器、规格化器和最小-最大缩放器。

网格搜索

机器学习中的一个常见任务是在模型中找到正确的参数集。通常,人们可以根据他们对任务和模型的了解进行猜测,或者通过编程找到最佳的集合。sklearn有一个内置函数——GridSearchCV——自动为您找到最佳参数集,以优化模型性能。

GridSearchCV对象接受两个参数:首先,要训练的模型对象(在这种情况下是支持向量机分类器),其次,描述模型参数的字典。字典中的每个键都是模型中的一个参数,其中每个值都是一个相应的值列表或元组,参数可以在其中取值。

在网格搜索对象被拟合之后,best_params_属性可用于输出每个模型参数的最佳性能参数值。其他模型参数包括决策树中的树深度和随机森林集合中的投票者数量。

验证曲线

为了可视化参数对模型性能的影响,使用sklearnvalidation_curve。它接受几个参数:模型、要调整的参数、参数值的范围以及折叠次数。它类似于对一个变量的网格搜索,可以帮助更好地可视化参数变化的结果。

validation_curve对象的输出是一个元组——一个是训练分数,另一个是测试分数。每个中的行数代表每个参数值的数组值,而数组中的每个元素代表每个 k 折叠的值。

当绘制结果时,参数和精度之间的关系是清楚的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这使我们可以直观地看到树的深度对精确度的影响。比如说。请注意,树深度为 5 或树深度为 6 时表现相当好。进一步指定树的深度会导致过度拟合,但是需要根据测试精度来评估这一点。

k 倍交叉验证

交叉验证是一种比标准的train_test_split方法给出更准确结果的方法(实际上需要更少的代码!).在传统的训练-测试-拆分中,数据被随机分为训练集和测试集(通常比例为 7:3–8:2),模型在训练集上接受训练,在测试集上进行评估,以真正衡量模型的测量能力,而不仅仅是记忆能力。但是,由于每次分割都是随机的,将数据分割十次将产生十种不同的精度。

为了解决这个问题,使用 k 个折叠的交叉验证将数据分成 k 个类别,在 k 个折叠上训练模型,并在剩余的 1 个折叠上进行测试。重复这一过程后,每个测试折叠最终覆盖整个数据集,人们会对准确性有一个更完整和诚实的看法。更好的是,不需要跟踪 x-train、x-test、y-train 和 y-test 变量。交叉验证的唯一缺点是需要更多的时间——但是更好的结果总是有更高的成本。

感谢阅读!

希望这些 sci-kit learn 隐藏的宝石能够让你的机器学习编码更好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值