68–95–99.7—在 Power BI 中使用的三适马经验法则。
采用微软 POWER BI 的数据科学
在无代码的 Power BI 中使用三西格马经验法则检测异常值和异常
即使在最小的数据项目中,最重要的步骤之一是检测数据结构中的异常值、离群值或异常。
在这个简短的指南中,我将向您展示不使用任何代码来检测这些值的最基本的方法。除了在 Power BI 中实现这一点的许多方法之外,这是最直接的和 UI 驱动的方法,并且仍然非常有用。
什么是异常值,如何识别?
定义异常值的常用方法是“标准偏差的 3 倍”规则,通常称为三西格马经验法则。
想要更多背景?在 维基百科 上找到。
假设我们的数据集中有一个值为的列,我们想要检测它是否包含异常值。Todo 因此我们查看| value — average |,以测量该值与平均值的差距。
如果这个绝对值是我们的标准偏差的 3 倍以上,那么我们可以认为这个值是异常值。
数据
这种方法最适用于符合标准正态分布的数据。
但是,即使对于非正态分布的变量,三西格马规则告诉我们,至少 88.8%的情况应该落在正确计算的三西格马区间内。
为了遵循这个指南,你可以选择你自己的数据集或者下载我的数据集,这个数据集按照标准的正态分布填充了 5000 个随机值。具体地说,它填充了从均值为 0、方差为 1 的单变量“正态”(高斯)分布中采样的随机浮点数。
[## sebastianzolg/使用 powerbi 过滤异常值
github.com](https://github.com/sebastianzolg/filtering-outliers-with-powerbi)
想知道如何用 python 创建这样的数据?请参见本指南末尾的奖金部分。
移除异常值
让我们从存储库中的 randoms.csv 文件中提取数据,并将其加载到 Power BI 中。
打开 Power BI,点击获取数据。
选择 Text/CSV ,点击连接,选择之前下载的 randoms.csv 文件。
检查数据,确保数据加载正确。点击转换数据将其提取到 Power BI 中。
我们希望有一个自定义列,使我们能够轻松地过滤离群值。为了识别异常值,我们首先需要计算所有数据的平均值和标准差。
为此,我们将初始查询复制两次。选择初始查询,右击并从上下文菜单中选择复制。第二次重复这个步骤,这样总共有 3 个查询。
现在,我们很快将我们重复的查询重命名为表示和标准差,这样就反映了我们的意图。右键点击两个查询,并点击上下文菜单中的重命名。
既然我们已经正确地命名了我们的查询,我们就可以继续在我们的 Randoms 列上对均值和标准差查询进行快速计算。
选择均值查询,点击随机数列的标题。现在选择控制功能区中的转换选项卡,并注意统计。打开统计的右键菜单,从列表中选择平均值。
这立即将查询转换成一个十进制数,表示我们的 Randoms 列的 Mean 值。
对标准差查询重复此步骤,但这次从统计的上下文菜单中选择标准差。
同样,这将把查询转换成表示我们的 Randoms 列的标准偏差的单个十进制值。
现在我们不用一行代码就可以快速计算出均值和标准差,我们现在可以计算出异常值。
我们希望用一个专用的列来过滤异常值。跳转到添加列功能区选项卡,点击自定义列。
这将立即打开幂查询公式编辑器,我们可以在其中计算这个新列的值。将该列命名为类似于is outer的名称。
现在,我们必须将我们对三西格马规则的了解转化为一个幂 BI 公式。这是最终的公式,易于阅读和理解。
Number.Abs([Randoms] — Mean) > (3 * #”Standard Deviation”)
我们来分解一下。首先,我们取列[Random]
中的每个值*,并减去总的Mean
,这是我们查询平均值的结果。用函数Number.Abs()
包围这个计算,该函数返回计算的绝对数。*
现在我们验证结果是否大于标准偏差的三倍。我们通过> (3 * #"Standard Deviation")
来实现,这里Standard Deviation
是我们的标准差查询的结果。
就是这样!点击 OK ,您就可以过滤异常值并检测异常情况了。
回到编辑器,您可以看到新创建的列及其值是根据我们的公式计算出来的。让我们通过单击列标题旁边的向下箭头图标,将我们的外部列过滤到TRUE
。
通过使用我的数据集,我们发现了 19 个异常值。正如你从数字中看到的,这些异常值确实代表了我们随机范围的外部边缘。
**恭喜!**您成功检测到数据集中的异常值。随意反转过滤器,使用非异常值的数据。这会给你统计上更好的结果。
就这样吧。
—塞巴斯蒂安
额外收获:用 python 创建随机数
使用下面的代码片段,你可以快速生成你自己的随机数,并随意使用。通过点击链接了解更多关于生成它的函数的信息。
你应该知道的 7 种高级 Python 字典技术
根据以下提示掌握 Python 字典
在 Unsplash 上由 Hitesh Choudhary 拍摄的照片
Python 字典是非常强大的数据结构——在这篇文章中,你将学习七种技术来帮助你掌握它们!
让我们开始吧。
1.合并两本词典
从 Python 3.5 开始,可以很容易地合并两个字典,使用**kwargs:
合并两本词典。资料来源:Nik Piepenbreier
从 Python 3.9 开始,您可以使用 union 操作符(|)来组合两个字典:
合并两本词典。资料来源:Nik Piepenbreier
2.检查字典中是否存在关键字
要查看字典中是否存在某个键,可以使用关键字中的*。*
例如,让我们看看字典中是否存在一些键:
检查字典成员。资料来源:Nik Piepenbreier
3.从词典中删除一项
要轻松删除词典,您可以使用 pop 功能。pop 函数返回被删除的键的值。
Pop 接受两个参数(要删除的键,如果找不到键,则为默认值)。
让我们尝试删除一些项目:
从词典中删除一项。资料来源:Nik Piepenbreier
最后一个 print 语句返回一个错误,因为键不存在并且没有提供默认值。
4.词典释义
Python 字典理解可以让您轻松地迭代键和值。
一个很容易解释的例子来说明这一点,就是构建一个字典,其中的键是一个数字,值是数字的平方:
掌握词典释义。资料来源:Nik Piepenbreier
在这篇深度文章中了解更多关于字典理解的知识!
5.从词典中删除空条目
让我们使用列表理解来从字典中删除所有的空条目。当一个项的值为 None 时,它被认为是空的。
从字典中删除空条目。资料来源:Nik Piepenbreier
6.使用 Get 而不是字典访问器
要访问 Python 字典项,可以使用方括号符号。这很有效——直到它失效。
如果字典中不存在某个键,就会抛出 AttributeError。
这可能会扰乱您的代码。
但是,使用 get 方法只会返回 None:
如何为字典使用 get?资料来源:Nik Piepenbreier
7.基于值过滤字典
假设你有一本关于人们身高的字典,你想过滤掉低于某一高度的人。
您可以通过 for 循环或者(更简单的)字典理解来实现这一点。
我们把 170cm 以下的都过滤掉吧。
根据字典的值过滤字典。资料来源:Nik Piepenbreier
结论
感谢阅读!在本教程中,您学习了 Python 字典的 7 种技术。
如果你对掌握 Python 列表感兴趣,可以看看我的另一个教程:
让全能榜单更加强大!
towardsdatascience.com](/advanced-python-list-techniques-c6195fa699a3)
数据科学的 7 个高级熊猫技巧
Pandas 是数据科学的首选图书馆。这些是我用来更快更简单地完成重复性数据科学任务的捷径。
1.使用 df.groupby()分析数据帧的样本。iter()
与使用 Excel 相比,在 Jupyter 笔记本中逐行或逐组浏览数据集通常很难。一个有用的技巧是使用生成器并使用 Ctrl + Enter 而不是 Shift + Enter ,以便迭代地查看同一单元格内的不同样本,而不会在您的笔记本中造成混乱。
首先用生成器创建一个单元。groupby()(或。iterrows())并添加。iter():
然后,使用键盘快捷键 Ctrl + Enter 任意多次运行下面的单元格来观察对您最重要的数据:
这里有一个分析泰坦尼克号数据集中拥有完全相同机票号码的乘客的例子。您无法单独隔离每组乘客,因此使用这种方法可以让您以一种非常简单的方式逐个分析各组乘客:
使用 df.groupby()在 Titanic 数据集中搜索具有相同“机票”号码的乘客。iter()和键盘快捷键 Ctrl + Enter。
2.用于数据探索和数据质量评估的熊猫概况分析
在数据科学中,我们倾向于从头开始编写数据探索代码。既然所有的数据集都不一样,那就说得通了。然而,有一个神奇的 pandas_profiling 包让这个推理变得毫无意义。该软件包实际上自动化了数据探索和数据质量评估步骤!看一看:
点击“警告”以评估您的数据质量。
熊猫图谱相关分析。人们可以选择 5-6 个相关度。
它就像一个魔咒!
显然,它不能解决所有的数据探索,例如,如果您的数据中有自由文本变量。但这应该是你开始分析任何数据集的方式。
3.多重链接
一旦您理解了可以使用链接方法组合多个操作,Pandas 就会变得非常有趣。链接基本上是在同一行代码中添加操作。
有了下面这行代码,我就
- 在我的数据集中添加新列(。合并)
- 算上女乘客的比例(。申请(女性 _ 比例))
- 对于超过 1 名乘客的团体(df。Ticket.value_counts()>1)
- 有相同的票号(。groupby('Ticket '))。
我不需要创建新的数据框架,新的变量,任何新的东西。链式方法允许你把你的想法“翻译”成实际的操作。
下面的例子也是链式方法的一个很好的例子:
4.用样式绘制系数/特征重要性
如果你在做机器学习,你知道用通俗易懂的语言解释清楚你的机器学习模型有多困难。这里有一种方法可以帮助你很好地了解模型中的系数或变量的重要性。
你可以将系数(或变量重要性)放入数据框架中,以便可视化它们。
我从多个来源收集了代码,得到了以下我一直在重复使用的可视化效果(避免重复发明轮子):
它给出了以下输出:
变量根据系数(或变量重要性)进行排序,彩色条让我们可以快速找到最重要的变量。这里,“Pclass”列具有最大的(负)系数,其绝对值是第二大系数的两倍:“apollowed _ Q”。
很漂亮吧?
5.sklearn _ 熊猫
如果你是一个熊猫倡导者,你会不止一次地意识到与熊猫 DataFrame 和 sklearn 合作并不总是最合适的。但是不要就此打住。一些积极的贡献者创造了 sklearn_pandas,这是两个软件包之间的桥梁。它用熊猫友好的数据帧映射器取代了 sklearn 的列变换器。这几天开始只用 sklearn_pandas,没有失望。我希望我以前知道这件事。
下面是使用。fit()方法:
6.tqdm
当处理大型数据集时,数据操作需要时间。使用 tqdm 来跟踪你的代码是否正在运行以及运行了多长时间,而不是在你的 Jupyter 笔记本前面无表情地等待,不知道发生了什么。对于运行速度太慢的脚本,这也是提前中止的好方法。
现在所有的熊猫数据框架都有了新的方法:
- 。进度 _ 应用,。进度 _ 应用地图
- 。用于列的 progress_map
它们与应用、应用地图和地图相同,不同之处在于它们会绘制进度条。多有用啊!
tqdm pandas 方法生成的进度条示例。
7.的。要粘贴到 Excel 中的 to_clipboard()
作为一名狂热的 Excel 用户,我开发了一些技巧来绘制性感的图表和漂亮的格式来展示数据的洞察力。尽管 pandas 有许多选项,但很难用最少的代码获得类似的输出水平。
有一件事我最终做了很多来应对,那就是将我的结果导出到 Excel。但不使用。to_excel 方法。相反,我使用平滑。to_clipboard(index=False)将数据复制到剪贴板。然后,我使用 Excel 中的 Ctrl + V 将数据粘贴到我当前的电子表格中。给你,你可以释放你体内的 Excel 野兽。
许多数据科学家容易忘记的一件事是,非数据科学家通常擅长 Excel。与他们共享 Excel 文件比共享笔记本或导出为 html 文件的笔记本更容易。
如果这对你有用,请在评论中告诉我!感谢阅读,如果你喜欢就鼓掌吧:)
7 个 AI 面试问题…由 AI 回答
使用问答模型 BERT-SQuAD 回答 AI 问题。
塞巴斯蒂安·赫尔曼在 Unsplash 上的照片
如果你正在寻找一份数据科学的工作,你可能已经注意到这个领域竞争异常激烈。AI 现在甚至可以用任何语言生成代码。下面,我们将探讨 AI 如何从段落中提取信息来回答问题。
有一天,你可能会与人工智能竞争——如果 AutoML 还不是竞争对手的话。
伯特小队是什么?
BERT-SQuAD 是谷歌 BERT 和斯坦福问答数据集的交叉。
BERT 是一种先进的自然语言处理算法,可用于问题回答(我们将在这里深入探讨)、情感分析、垃圾邮件过滤、文档聚类等任务——都是语言!
理解伯特。跳舞图标由 Freepik 制作,灯泡图标由 Becris 在 Flaticon 上制作。作者图解。
“双向性”指的是许多单词根据上下文变化的事实——比如“让我们击中俱乐部”与“一个想法击中他”——所以它会考虑关键字两边的单词。
“编码”仅仅意味着给字符分配数字,或者把像“让我们去俱乐部”这样的输入转换成机器可操作的格式。
“表示”是通过在文本语料库中查看单词的许多编码而获得的对单词的总体理解。
“变形金刚”是你用来从嵌入到表现的东西——这是最复杂的部分。
如前所述,BERT 可以被训练完成基本上任何类型的语言任务,因此 SQuAD 参考了我们用来训练它完成特定语言任务的数据集:问答。
SQuAD 是一个阅读理解数据集,包含众包工作者在维基百科文章上提出的问题,每个问题的答案都是相应段落中的一段文字。
然后,BERT-SQuAD 允许我们通过从大量文本中找出答案来回答一般性问题。它不是从零开始编造答案,而是理解文本的上下文,足以找到答案的特定区域。
例如,这里有一个关于套索和岭回归的上下文段落:
“你可以引用 ISLR 的作者 Hastie,Tibshirani 的话,他断言,在存在几个具有中/大规模效应的变量的情况下,使用套索回归。在存在许多具有中小影响的变量的情况下,使用岭回归。
从概念上讲,我们可以说,套索回归(L1)既做变量选择又做参数收缩,而岭回归只做参数收缩,最后包括模型中的所有系数。在存在相关变量的情况下,岭回归可能是首选。此外,岭回归在最小二乘估计具有较高方差的情况下效果最好。因此,这取决于我们的模型目标。"
现在,我们可以问伯特班:
“什么时候岭回归优于套索回归?”
它会回答:
“存在相关变量时”
虽然我在这里显示了大约 100 个单词的上下文,但是您可以向 BERT-SQuAD 中输入更多的上下文,比如整个文档,并快速检索答案——如果您愿意,可以使用智能 Ctrl-F。
为了测试下面的 7 个问题,我使用了 Gradio ,这是一个让开发者用模型制作界面的库。在这种情况下,我使用了由 Google Colab 创建的 BERT-SQuAD 界面。
作者正在使用的 BERT-SQuAD Gradio 界面截图。
我使用这个 Kaggle 线程的上下文作为输入,为了简单起见修改了问题。
Q1:如果你不旋转 PCA 组件会发生什么?
PCA 的效果会减弱
Q2。你如何降低数据的维度来减少计算时间?
我们可以分离数字变量和分类变量,并移除相关变量
Q3:为什么朴素贝叶斯“幼稚”?
它假设数据集中的所有特征同等重要且独立
Q4:您应该使用哪种算法来解决低偏差和高方差问题?
装袋
问题 kNN 和 kmeans 聚类有什么不同?
kmeans 本质上是无监督的,而 kNN 本质上是有监督的
问题 6:岭回归何时优于套索回归?
存在相关变量时
Q7:什么是凸包?
代表两组数据点的外边界
附加阅读
要部署和服务像 BERT-SQuAD 这样的模型,请查看我关于 10 个简单选项的文章:
探索 Flask、云巨头、小众玩家、AutoML 和其他部署 AI 的方式。
towardsdatascience.com](/10-ways-to-deploy-and-serve-ai-models-to-make-predictions-336527ef00b2)
如果你想深入了解《变形金刚》,可以看看这本图文并茂的指南,因为伯特就是在那个架构之上构建的。
7 个云计算安全漏洞及其应对措施
不确定如何保护自己免受云计算安全漏洞的攻击?
公司正在迅速利用云来彻底改变他们的数字化转型。根据 Gartner 的数据,到 2020 年,全球云计算市场预计将增长 2664 亿美元,高于 2019 年的 2274 亿美元。
云计算有几个好处,包括潜在的更低成本(公共云中的更多功能有助于提高工作效率,而私有云中的功能更有限)和更快的上市时间。
然而,鉴于云提供的一系列优势,数据安全性是阻碍企业采用云解决方案的主要问题之一。为了证实这一点,一项调查发现,93%的公司对云计算安全风险有中度到极度的担忧。
云基础架构可能很复杂,我们都知道复杂性是安全性的大敌。虽然大多数云安全专家认为公司可以从内置于云中的安全解决方案中受益,但组织也可能会犯严重的错误,暴露关键数据和系统。
一些最常见的云安全风险包括通过不适当的访问控制进行未经授权的访问,以及滥用员工凭据。未经授权的访问和不安全的 API 并列第一,是云中最大的安全漏洞(根据 42%的受访者)。这些安全风险之后是 40%的云中的错误配置。
公司如何在保持数据安全性的同时获得云计算技术的优势?
公司可以采取几种预防措施,在早期阶段防止云安全漏洞。这包括从简单的云安全解决方案(如实施多因素身份认证)到更复杂的安全控制(以符合法规要求)。
7 大云计算安全漏洞及其缓解方法
在本文中,我们将全面了解 7 大云计算安全漏洞以及如何缓解它们。
1.错误配置的云存储
云存储是网络犯罪分子窃取数据的丰富来源。尽管风险很高,但组织仍会继续犯云存储配置错误的错误,这让许多公司付出了巨大的代价。
根据赛门铁克的一份报告,2018 年由于错误配置的云存储桶,近 7000 万条记录被盗或泄露。该报告还强调了各种工具的出现,这些工具允许攻击者检测目标的错误配置云存储。
云存储错误配置可能会迅速升级为组织及其客户的重大云安全漏洞。企业会遇到几种类型的云错误配置。一些类型的错误配置包括:
- AWS 安全组错误配置: AWS 安全组负责提供源、目的地、端口和协议访问级别的安全性。这些可以与 EC2 服务器实例和许多其他资源相关联。AWS 安全组中的错误配置会允许攻击者访问您的基于云的服务器并泄漏数据。
- **缺乏访问限制:**没有足够的限制或安全措施来防止未经授权访问您的云基础架构会使您的企业面临风险。不安全的云存储桶可能会导致攻击者访问存储在云中的数据并下载机密数据,这可能会给您的组织带来灾难性的后果。AWS 最初默认打开 S3 存储桶,这导致了大量数据泄露。
- 如何防止错误配置的云存储
- 说到云计算,在设置云服务器时仔细检查云存储安全配置总是一个好主意。虽然这看起来很明显,但它很容易被其他活动忽略,例如将数据移入云中而不注意其安全性。
您还可以使用专门的工具来检查云存储安全配置。这些云安全工具可以帮助您按计划检查安全配置的状态,并及时发现漏洞。
控制谁可以创建和配置云资源。许多云计算问题来自于那些想迁移到云中却不知道如何保护数据的人。
2.不安全的 API
应用程序用户界面(API)旨在简化云计算流程。但是,如果不安全的话,API 可能会为攻击者打开通信线路,从而利用云资源。
Gartner 估计,到 2022 年,API 将成为攻击者用来攻击企业应用数据的更频繁的威胁载体。
最近的一项研究还显示,三分之二的企业将其 API 公开,以便外部开发人员和业务合作伙伴可以访问软件平台。
该研究还表明,一个组织通常平均处理 363 个 API,近 61%的公司报告其业务战略依赖于 API 集成。
随着对 API 依赖的增加,攻击者已经找到了利用不安全 API 进行恶意活动的常见方法,下面是两个例子:
- **认证不足:**开发人员经常在没有适当认证控制的情况下创建 API。因此,这些 API 对互联网完全开放,任何人都可以使用它们来访问企业数据和系统。
- **授权不足:**太多的开发者不认为攻击者会看到后端 API 调用,也没有适当的授权控制。如果不这样做,后端数据的危害是微不足道的。
如何防止不安全的 API
鼓励开发人员设计具有强认证、加密、活动监控和访问控制的 API。API 必须受到保护。
进行渗透测试,复制针对您的 API 端点的外部攻击,并获得安全的代码审查。最好确保您有一个安全的软件开发生命周期(SDLC ),以确保您不断开发安全的应用程序和 API。
此外,考虑对传输中的数据使用 SSL/TLS 加密。使用一次性密码、数字身份等模式实施多因素身份认证。确保强有力的认证控制。
3.知识产权的丢失或被盗
不可否认,知识产权(IP)是一个组织最有价值的资产之一,但它也容易受到安全威胁,尤其是当数据存储在网上时。
一项分析发现,上传到基于云的文件共享服务的文件中,几乎有 21%包含包括 IP 在内的敏感信息。当这些云服务遭到破坏时,攻击者可以访问存储在其中的敏感信息。
对于许多组织来说,知识产权就是他们拥有的数据,数据丢失意味着他们失去了知识产权。让我们来看看数据丢失的最常见原因:
- **数据变更:**当数据以某种方式被变更,并且无法恢复到以前的状态时,可能会导致数据完整性完全丧失,并可能使其变得无用。
- **数据删除:**攻击者可以从云服务中删除敏感数据,这显然会对组织的运营造成严重的数据安全威胁。
- **失去访问:**攻击者可以持有信息进行勒索(勒索软件攻击)或使用强加密密钥加密数据,直到他们执行其恶意活动。
因此,在云环境中采取预防措施来保护您的知识产权和数据至关重要。
如何防止知识产权丢失或被盗
频繁备份是防止知识产权丢失或被盗的最有效方法之一。制定定期备份的时间表,并明确划分哪些数据适合备份,哪些不适合备份。考虑使用数据丢失防护(DLP)软件来检测和防止敏感数据的未经授权的移动。
防止数据丢失或被盗的另一个解决方案是加密您的数据并对您的备份进行地理多样化。离线备份也非常重要,尤其是在勒索软件的情况下。
4.合规违规和监管措施
企业必须有坚定的规则来确定谁可以访问哪些数据以及他们可以用这些数据做什么。
虽然云提供了易于访问的优势,但它也带来了安全风险,因为很难跟踪谁可以访问云中的信息。根据合规性或行业法规,组织了解有关其数据存储和访问控制的详细信息非常重要。
将您的应用程序迁移到公共云中当然不能保证法规遵从性,并且通常会使遵从性变得更加困难。服务提供商提供的“分担责任模式”意味着他们拥有云安全,您必须在云中维护您的数据安全。
诸如 CCPA 、 PCI-DSS 和 GDPR 之类的隐私要求都适用于云计算,如果你的公司管理大量敏感数据,如 PII(个人身份信息),迁移到云计算可能会使合规性更成问题。
如何防止合规违规和监管行为
云中合规性的第一步也是最重要的一步是彻底分析云服务协议,并向您的服务提供商要求云和数据安全策略。
值得注意的是,维护云安全的责任将取决于云服务级别,无论是基础设施即服务(IaaS)、平台即服务(PaaS)还是软件即服务(SaaS)。这将影响您的云提供商和组织的安全性和所有权责任。
确保您实现了一个访问管理模型,在该模型中,您可以看到部署了哪些系统及其云安全级别的记录。以下是一些快速提示:
- 了解所有用户、角色和访问权限。
- 拥有清晰的身份,能够跨所有地理位置跟踪所有资产,并控制数据的位置。
- 通过频繁自动扫描模板来保持强大的配置管理。
针对与云计算相关的违规实施事件响应计划。这样,在发生云数据泄露或漏洞暴露给攻击者的情况下,您可以快速识别和缓解安全漏洞。响应策略应在您组织的总体事件响应计划中得到充分记录和批准。
5.失去对最终用户操作的控制
当公司不知道他们的员工如何使用云计算服务时,他们可能会失去对其数据资产的控制,最终容易受到违规和内部安全威胁的攻击。
内部人员不必突破虚拟专用网络(VPN)、防火墙或其他安全防御来访问企业云中的内部数据。他们可以毫不费力地直接访问云基础架构中的敏感数据。
这可能会导致对组织有明显影响的知识产权和专有信息的丢失。
处理对最终用户行为的失控需要监视、监控、上报、事件后分析、补救、调查和事件响应,所有这些都应集成到公司的数据安全计划中。
如何防止失去对最终用户行为的控制
向您的员工提供培训,教他们如何处理安全漏洞,如网络钓鱼和恶意软件。向他们介绍云计算,以及如何保护他们在移动设备或笔记本电脑上携带的机密信息。告知他们与恶意活动相关的后果。
定期审计云基础设施中的服务器,以识别可能被利用的数据安全漏洞,并及时修复它们。
重点关注经批准的强化图像,定期对其进行安全风险和漏洞扫描。然后从这些映像部署新的服务器,并不断扫描正确的配置和检测漏洞。重点是“牛不是宠物”。如果服务器易受攻击或不合规,不要修复它,用批准的强化映像替换它。
确保特权中央服务器和访问安全系统仅限于最少数量的人员,并且这些员工接受过足够的培训,能够安全地处理他们在云服务器中的管理权限。
6.糟糕的访问管理
不当的访问管理可能是最常见的云计算安全风险。在涉及 web 应用程序的违规事件中,多年来,被盗或丢失的凭据一直是攻击者最广泛使用的工具。
访问管理确保个人只能执行他们需要执行的任务。验证个人有权访问的内容的过程称为授权。
除了困扰当今组织的标准访问管理问题(如管理分散的工作人员和用户密码疲劳)之外,组织还面临其他几个特定于云的挑战,包括:
- 无效的分配用户
- 多个管理员帐户
- 不适当的用户和服务供应和取消供应—例如,公司不撤销前员工的访问权限
- 绕过企业访问管理控制的用户
此外,在云基础架构中创建角色和管理访问权限对企业来说也是一项挑战。
如何防止糟糕的访问管理
为了应对云服务中糟糕的访问管理,企业需要为用户帐户开发一个数据治理框架。对于所有人类用户,帐户应该直接链接到中央目录服务,如 Active Directory,它负责从中央存储提供、监控和撤销访问权限。
此外,企业应该使用云原生或第三方工具定期从云服务环境中提取角色、权限、用户和组的列表。AWS 命令行界面和 PowerShell for Azure 可以收集这种类型的数据,然后安全团队可以对其进行排序、存储和分析。
组织还应确保在云环境中建立日志记录和事件监控机制,以检测异常活动或未经授权的更改。应该严格控制和管理访问密钥,以避免糟糕的数据处理或泄漏。
7.违反与客户或业务伙伴的合同
云计算中的合同有些棘手。它通常会限制谁有权访问数据、如何使用数据以及数据存储的位置和方式。当员工在未经授权的情况下将受限数据移动到云中时,可能会违反业务合同,并可能引发法律诉讼。
例如,如果你的云服务提供商在他们的条款和条件下保留与第三方共享所有上传到云的数据的权利,他们就违反了与你公司的保密协议。
这可能会导致您的客户、员工和其他利益相关者上传到云的数据泄露。
如何防止违反与客户或业务合作伙伴的合同
云服务合同应该包括审查、监控和审计报告的权利。这样,任何安全风险都可以在成为问题之前的早期阶段被识别出来。公司还应该确保他们不会被服务合同所束缚,并且转换供应商可以是一项顺利的工作。
这意味着服务合同应包括业务的服务终止权(例如,控制权变更、服务恶化、监管要求、安全性/保密性海滩等)。)
服务合同还应强调知识产权风险,因为云服务可能包括根据许可协议使用知识产权或其他软件权利。如果第三方声称云服务提供商侵权,那么该组织可能会卷入法律纠纷。
最后的想法
如果不考虑降低随之而来的风险,在云中运营的公司将承担一个可以预防的巨大风险。企业必须拥有强大的云安全策略,这些策略可以很好地集成到团队用来构建应用程序和部署在云基础架构中的 IT 流程中。
云计算的采用改变了公司和黑客的工作方式。它带来了各种机遇,也带来了一系列全新的云安全风险。企业需要不断应对云安全风险和挑战,同时采用正确的安全工具来帮助简化运营工作。
Cypress Data Defense 的云安全解决方案将最新的安全技术与您的云基础设施相集成。有了正确的技术、云安全专家和深谋远虑,公司可以利用云计算的优势。
关于作者:
Steve Kosten 是 Cypress Data Defense 的首席安全顾问,也是“Java/JEE 中的 SANS DEV541 安全编码:开发可防御应用程序”课程的讲师。
面向有抱负的数据科学家的 7 个数据科学项目创意
2020 年 5 月数据科学项目的初学者友好列表
由于普遍的需求和许多请求,我决定为那些开始数据科学家之旅的人创建一个独特的数据科学项目列表。可视化项目、探索性数据分析项目和预测性建模混合在一起。我希望你喜欢这篇文章,并祝你好运!
印度的降雨量
项目类型:可视化
链接到数据集此处。
该数据集包含印度 36 个分区的月降雨量详情。以下是一些你可以自己尝试的可视化想法:
- 您可以创建条形图或饼图来比较各地区的降雨量
- 您可以创建一个折线图来比较一段时间内各地区的降雨量
- 您可以创建一个动画 choropleth 地图来显示随着时间的推移在哪里下雨!如果你想学习如何构建一个 choropleth 可视化,请查看我的教程 这里 。
全球自杀率
项目类型:探索性数据分析
链接到数据集此处。
这是一个整合的数据集,包含各国每年的自杀率、人类发展指数(HDI)数据、国内生产总值和人口统计数据。这个数据集的目的是看是否有任何与自杀率增加相关的指标。
探索数据,看看哪些国家和大陆的自杀率最高。你注意到了什么趋势?自杀率总体上是上升还是下降了?男女自杀人数的比例是多少?看看你能否找到任何与自杀率相关的变量。
夏季奥运会奖牌
项目类型:探索性数据分析
链接到数据集此处。
布莱恩·特纳在 Unsplash 上的照片
不那么可怕的是,这里有一个数据集,包含了从 1976 年蒙特利尔到 2008 年北京夏季奥运会的所有奖牌获得者。探索数据,看看哪些国家赢得了最多的奖牌。随着时间的推移,有没有表现更好的国家?随着时间的推移会变得更糟吗?
世界幸福报告
项目类型:探索性数据分析
链接到数据集此处。
由 KAL VISUALS 在 Unsplash 上拍摄的照片
幸福指数是一个国家平均“幸福度”的量化指标。这是基于六个因素:经济生产、社会支持、预期寿命、自由、没有腐败和慷慨。
这个数据集包含了 2015 年至 2019 年的 155 个国家及其相关的幸福得分和 6 个因素。我们每年在全球范围内变得更快乐还是更不快乐?哪个洲最幸福?最不开心?六个因素中哪一个对幸福感的影响最大?影响最小呢?
美国的污染
项目类型:可视化
链接到数据集此处。
图片由 Ella Ivanescu 在 Unsplash 上拍摄
该数据集包含美国从 2000 年到 2016 年每天的四种主要污染物(二氧化氮、二氧化硫、一氧化碳和臭氧)的信息。
以下是一些可视化的想法:
- 哪些州是最大的污染者?最少?
- 随着时间的推移,美国污染了多少?他们污染的是 10 多年前还是更少?
- 看看你是否可以创建一个 choropleth 地图来显示地理上的污染水平随着时间的推移!
麦当劳菜单的营养事实
项目类型:探索性数据分析
链接到数据集此处。
该数据集提供了美国麦当劳菜单上每个菜单项的营养分析,包括早餐、牛肉汉堡、鸡肉和鱼肉三明治、薯条、沙拉、苏打水、咖啡和茶、奶昔和甜点。
一般的麦当劳超值餐含有多少卡路里?点烤鸡而不是脆皮真的更健康吗?为了满足日常营养需求,你必须吃的最健康的食物组合是什么?
红酒质量
项目类型:预测建模
链接到数据集此处。
特里·维利迪斯在 Unsplash 上拍摄的照片
该数据集包含各种葡萄酒、其成分和葡萄酒质量的数据。这可能是一个回归或分类问题,取决于你如何设计它。看看你能否预测给定 11 个输入(固定酸度、挥发性酸度、柠檬酸、残糖、氯化物、游离二氧化硫、总二氧化硫、密度、pH、硫酸盐和酒精)的红酒质量。
更多项目灵感,请查看明明艾的博客!
感谢阅读!
如果你喜欢我的工作并想支持我,我会非常感谢你在我的社交媒体频道上关注我:
- 支持我的最好方式就是在媒体T2 上关注我。
- 在推特 这里关注我。
- 点击这里订阅我的新 YouTube 频道 。
- 在 LinkedIn 这里关注我。
- 在我的邮箱列表 这里报名。
- 查看我的网站terenceshin.comT21。
要记住的 7 条数据科学名言
# 2——如果你折磨数据的时间足够长,它会坦白。
阿迪·戈尔茨坦在 Unsplash 上的照片
人们喜欢阅读引语,因为引语是简洁的句子,表达智慧,来自经验,唤醒灵感。我喜欢引用,因为引用足够吸引人,能让我们记住并激发我们的思维到一个更好的地方。
数据科学领域有没有语录?是的,数据科学听起来可能很专业,但数据科学不仅仅是键入代码和创建模型。它在那里多得多;探索、交流、创新、诚实,这只是与数据科学相关的几件事。
作为一名数据科学家,我相当执着。我相信我看到的数字,我得到的统计结果,以及从数据中得到的信息。但是,我也是有意识的人,不是机器人;因此,我的思想是由我读到的名言中的建议形成的。我相信引用可以增强我们的力量,因此我想分享一些我作为数据科学家工作时一直记得的引用。
“受到喜爱的数据往往会保留下来。”库尔特·博拉克
当我们喜欢这些数据,并且它能通过一些选择标准时,你会认为这是一件好事吗?嗯,答案可能是否定的。为什么?因为这可能会导致生存偏差。如果我们从一组不完整的数据中得出一个结论,而这些数据又不符合我们的选择标准,那么这就是一个谬误。
在偏袒的情况下,我们总是试图确保我们的数据存活下来,无论是有意还是无意。我相信当我们热爱具体的数据时,我们会下意识地思考我们想要什么样的结论,这很可怕。即使我们是这个领域的专家,我们也需要对我们的数据保持中立;像我们什么都不知道一样思考,让数据来讲述故事。
当然,现实和理想主义是不同的。我总是试图尽可能做到“数据驱动”,但理想主义有时并不是最好的方法。当面对利益相关者或你的老板时,可能是这个利益相关者喜欢我们删除的数据,他们因此而批评我们。你可能会觉得很糟糕,因为你知道什么是对的,但这是现实;和某人一起工作意味着总有人在更高的位置上。请记住,你可能需要因为你的工作而撒谎,但尽量保持你的头脑没有偏见,你可以走了。
“如果你折磨数据的时间足够长,它就会招供。”罗纳德·科斯
哦,我多么喜欢科斯的这句话。虽然数据讲述了一个故事,但如果我们对它们进行足够的拷问,我们总能得到我们想要的任何结论。在这里,折磨可以指任何事情——删除数据、选择特定的方法、数据包含等。
这句话代表了我们作为数据科学家需要(或愿意)走多远才能得到我们想要的特定结论。对我们来说,在处理数据时多做一点并不总是一件坏事,但这取决于我们的意图。
你对你的数据做这么多是因为你脑子里已经有结论了吗?或者只是因为你想探索数据?
对第一个问题回答“是” 会导致偏差,如果有偏差要小心;这意味着你倾向于拒绝任何东西,除了你的偏见。对第二个问题回答是可能会更好,但是记住先解决你的业务问题。我知道有些人是数据狂人。
这句话贴近日常工作生活中发生的现实。利益相关者可能已经有了他们想要看到的趋势,我们作为数据科学家可能只需要折磨数据,直到他们承认,这样利益相关者就满意了。
“在不充分的数据基础上形成不成熟理论的诱惑是我们职业的祸根”。——夏洛克·福尔摩斯(出自《恐惧之谷》,阿瑟·柯南·道尔爵士)
没错,这是一句警探的名言,没错,这是亚瑟·柯南·道尔爵士笔下的一个虚构人物。然而,这听起来很符合我们的职业,因为我相信数据科学家是其他形式的侦探。
这句话不能更好地解释我们作为数据科学家需要相信什么;在我们有充分的数据之前不要下结论。尽管有些人可能会争论“足够”是如何难以定义的。在这种情况下,我们需要回到可以证明充分性的主题——统计数据(或者你的信念、利益相关者、经验等)。终究要看你的决定)。
在任何情况下,尝试围绕数据充分性构建您的数据科学组合和思维模式。你不想被指控给出错误的结论。特别是对于有抱负的数据科学家;通常情况下,你得到的数据是干净的、经过处理的、足够好的,可以进入下一步。在现实工作中,很少发生。这就是为什么有抱负的数据科学家几乎从来没有机会处理数据不足的问题。我的建议是试着自己收集数据用于练习。
“每个公司的未来都有大数据,每个公司最终都会从事数据业务。”托马斯·海斯·达文波特
我的教育背景是生物学家,过去的职业是研究员。现在,我是一名数据科学家。这似乎是一个剧烈的变化,但事实并非如此。我以前的经历和我现在所做的事情大同小异;只是域和环境不同。
嗯,我选择在数据科学领域,因为我看到未来将类似于上面的引用。迟早**,一切都会在数据行业。**是必然;我们已经生活在一个数据无处不在的时代,我们需要利用这个时代。最后,早起的鸟儿有虫吃;意味着你需要在更多竞争到来之前尽早离开。虽然早期的虫被鸟抓住了,所以在失败的情况下总有一张安全网。
“天才的数据科学家利用每个人都能看到的数据;有远见的数据科学家利用没人看到的数据。”— 文森特·格兰维尔
这句话代表了我作为一名数据科学家的愿望,我觉得每个人都应该有同样的愿望。虽然天才的数据科学家可以使用明显的数据来回答业务问题,但真正有远见的人看到的是不那么明显的模式;我告诉你,这是真正的天赋。你需要创造力和跳出框框的思维方式,才能抓住看不见的数据。
作为一名数据科学家,我仍然努力练习我的思维方式和技能,以成为有远见的数据科学家。我想说,如果有人真的想进入数据科学领域,试着成为有远见的数据科学家。它把你和其他人区分开来,即使是天才。
“数据不是信息,信息不是知识,知识不是理解,理解不是智慧。”— 克利夫·斯托尔
有些人不知道数据和其他相关术语之间的区别。这是因为不是每个人都想知道数据是什么,它与其他数据有何不同。对我来说,这句话是最好的提醒,让我的心态变得正确。
为什么知道这些差异很重要?这难道不是数据科学家工作中不必要的定义吗?。这与处理数据无关,但与我们的思维方式有关。毕竟,这两个术语之间有着根本的区别。
你可以试着把数据想象成一块石头;它就在那里,一点用也没有。为了从这块石头中得到什么,我们需要把它打磨成钻石。数据是一样的;当我们清理(或转换和探索)时,它就变成了信息。
正如我们所知,钻石很贵,但这是因为我们已经分析了岩石,并决定钻石是有价值的。就像信息一样,如果不经过任何分析过程,它只能作为信息存在,不会成为知识。
仅仅因为我们知道钻石的价格并不意味着我们了解钻石本身;为什么贵?为什么颜色很亮?等等。我们有知识,但我们需要问正确的问题才能完全理解。
最后,我们可能知道关于钻石的一切,但这并不意味着我们可以从中突然致富;我们需要把它卖给正确的人。我们可能理解一切,但只有将这种理解应用到正确的情况下,我们才能发挥所有数据的作用。
“如果我们有数据,让我们看看数据。如果我们只有意见,那就用我的吧。”詹姆斯·洛夫·巴克斯代尔
以上是一个简单的引语,每当我争论的时候,我都喜欢思考它。在论证中,我们来看看数据是否存在。我相信数据,而不是复杂的文字或美丽文字形式的想象。如果数据不能为争论推波助澜,最好还是听从我的意见,因为无论如何什么都无法被证明。最后,如果没有人知道任何事情,就听从任何你认为正确的建议。
结论
作为一名数据科学家,我试着记住以下几段话。是的,它没有那些编程和创建机器学习模型的人那么光荣,但数据科学家仍然是一个人,因此需要一个正确的心态来成为一名伟大的数据科学家。
如果你喜欢我的内容,并想获得更多关于数据或作为数据科学家的日常生活的深入知识,请考虑在这里订阅我的时事通讯。
如果您没有订阅为中等会员,请考虑通过我的推荐订阅。
7 种不同的方法来过滤熊猫数据帧
灵活性很重要。
Pandas 是一个非常强大和通用的 Python 数据分析库,它加速了数据分析和探索过程。熊猫的优势之一是它通常提供多种方式来完成一项任务。
在 Unsplash 上由 Waldemar Brandt 拍照
在数据分析过程中,我们几乎总是需要根据条件或通过选择数据帧的子集进行一些过滤。在这篇文章中,我们将通过 7 种不同的方法来过滤熊猫数据帧。
我将在加州住房数据集上做例子,这个数据集在 google colab 的 sample data 文件夹下。
import numpy as np
import pandas as pddf = pd.read_csv("/content/sample_data/california_housing_train.csv",
usecols =['total_rooms','total_bedrooms','population', 'median_income','median_house_value'])df.head()
最常用的方法是像选择列一样在方括号内指定条件。
#1df[df['population'] > 10][:5]
我们只得到人口数大于 1000 的行。
特定列中具有最大值的行可以用 nlargest 函数过滤。
#2df.nlargest(5, 'population')
将显示人口列中具有 5 个最大值的行。
类似地,我们可以选择具有最小值的行。
#3df.nsmallest(5, 'population')
根据列选择最大值或最小值的另一种方法是对行进行排序,然后进行切片。
#4df.sort_values(by='median_income', ascending=False)[:5]
dataframe 根据 median_income 列按降序排序,然后选择前 5 行。
熊猫查询功能是一种非常灵活的过滤方式。它允许将条件指定为字符串。
#5df.query('5000 < total_rooms < 5500')[:5]
在某些情况下,我们可能希望从数据帧中随机选择一个样本。它更像是一个选择而不是过滤,但绝对值得一提。 sample 函数返回指定大小的随机样本。
#6df.sample(n=5)
该示例包含 5 行。也可以指定一个分数。例如,以下代码将返回大小等于原始数据帧 1%的样本。
df.sample(frac=0.01)
我们还可以选择指定的指数范围。就像 sample 函数一样,这个方法更像是一个选择,而不是基于条件的筛选。但是,对于顺序数据(如时间序列),可以认为是一种过滤方式。
我们将使用的方法是 iloc ,它返回指定索引范围内的行或列。
#7df.iloc[50:55, :]
返回索引在(50:55)范围内的行。我们可以选择只选择一些列。
df.iloc[50:55, :3]
您可能已经注意到返回行的索引没有改变。它们仍然具有与原始数据帧中相同的索引。如果您想在过滤后创建一个新的数据帧,您可能想要重置索引,这可以通过 reset_index 函数来实现。
#without reset_indexdf_new = df.query('total_rooms > 5500')
df_new.head()
#with reset_indexdf_new = df.query('total_rooms > 5500').reset_index()
df_new.head()
我们已经介绍了过滤数据帧或选择其一部分的不同方法。尽管许多方法都可以完成相同的操作,但是由于语法或其他原因,您可能更喜欢其中一种方法。
拥有完成一项任务的灵活性和多种方式总是好的。而且,熊猫提供了大量的食物。
感谢您的阅读。如果您有任何反馈,请告诉我。
7 枚蟒蛇皮复活节彩蛋
在家自娱自乐的无数方式
在冠状病毒爆发期间,我们大多数人都在家工作。你们中的许多人可能已经厌倦了整天呆在家里。我能感受到你。
Python 可能只是你构建项目、模拟和自动化的一个工具,它可能真的很有趣。
感谢令人惊叹的 Python 社区,我们可以在这种开源语言中找到许多隐藏的功能和复活节彩蛋。以下是其中的 7 个。
1.最简单的“Hello World”
学习编程语言要做的第一件事就是在屏幕上打印出“Hello World”。用 Python 怎么做 Hello World?print('Hello World!')
?
原来 Python 开发者藏了一个模块,只要导入这个模块就可以做 Hello World!试试这个:
>>> import __hello__
Hello World!
那行代码只包含 16 个字符,包括空格键!这可以说是最简单的 Hello World 程序之一。
请注意,您不能在 Python 程序中重新导入模块,因此您可以在一次运行中打印一次消息。但我想这可能意味着一些深刻的东西…
2.Python 的禅
这是人教版 20 中提出的。PEP 代表 Python 增强提案。
Python 是你最喜欢的语言吗?你喜欢 Python 的什么?是设计的问题吗?Python 设计的指导原则可以用 20 条格言来描述,您可以通过以下方式找到其中的 19 条:
>>> import this
安妮·斯普拉特在 Unsplash 上的照片
失踪的那个呢?我想你不可能知道世界上的一切。以下是前三句格言:
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
你不得不感谢开发人员为制作这样一种优雅且人类可读的编程语言所付出的努力。
这也是迄今为止唯一一个在 Python 开发者指南中被称为“复活节彩蛋”的“官方”复活节彩蛋。
3.this.py
还记得 Python 之禅的前 3 行吗?
当你深入挖掘,找到模块文件this.py
时,它是我见过的最漂亮、最显式、最简单的代码。
点击查看文件。干得好。
4.体验反重力
你可以用 Python 中的一行代码体验反重力!
import antigravity
真的!试试吧!请记住,你可能被困在外太空,花几个小时浏览 xkcd 网络漫画。
freestocks 在 Unsplash 上拍摄的照片
5.吊带
与许多其他编程语言不同,Python 在构造语句、函数和循环时并不真正使用花括号{}
。但是他们将来可能会改变。
__future__
模块包含不兼容的变更,这些变更将在可预见的将来强制执行。例如,在 Python 2.6 或 2.7 中从__future__
导入print_function
允许你创建一个带参数print()
的函数,就像在 Python 3 中一样。
让我们从__future__
开始看看牙套是如何工作的:
>>> from __future__ import braces
SyntaxError: not a chance
打得好。
6.混杂
无穷大和 NaN 的散列。
>>> hash(float('inf'))
314159
>>> hash(float('nan'))
0
不知怎么的,我在 Reddit 上找到了这个复活节彩蛋。
老实说,我期待着生命、宇宙和一切的答案。
7.巴里叔叔
关于运营商选择的争论已经持续了 四两 之久。让我们解决这个问题。
这是人教版 401 中提出的。你可能会感觉到将要发生什么。
一位知名的 Python 开发者 Barry Warsaw(又名 Barry 大叔)被‘选中’成为终身友好的语言大叔,简称 FLUFL。伟大的缩写。
他做了一些“修改”,用菱形算子<>
替换不等式算子!=
。
如果你同意 Barry 叔叔的观点,你可以导入这个有趣的库,<>
语法将变得有效,而!=
将导致语法错误。
>>> from __future__ import barry_as_FLUFL>>> 0 != 1
SyntaxError: with Barry as BDFL, use '<>' instead of '!='>>> 0 <> 1
True
>>> 1 <> 1
False
愚人节快乐!可怜的巴里……我向你保证上面的例子没有打字错误。
照片由 Agnes Horváth 在 Unsplash 上拍摄
这个列表还可以继续下去,但是我会在这里停下来,让您自己去探索它们。
感谢阅读!如果您想收到我的新文章的更新,您可以使用下面的滑块订阅我的时事通讯:
如果你还在读这篇文章,你可能对 Python 感兴趣。以下文章可能有用:
超越 lambda、map 和 filter 的 Python 技巧
towardsdatascience.com](/5-python-features-i-wish-i-had-known-earlier-bc16e4a13bf4) [## Python 初学者应该避免的 4 个常见错误
我很艰难地学会了,但你不需要
towardsdatascience.com](/4-common-mistakes-python-beginners-should-avoid-89bcebd2c628) [## 停止在 Python 中滥用*args 和**kwargs
他们会回来缠着你
medium.com](https://medium.com/better-programming/stop-abusing-args-and-kwargs-in-python-560ce6645e14)
注意安全。
改进数据科学工作流程的 7 种简单方法
作为一名数据科学家,我学到了一些技巧
赢得数据科学比赛并不容易,但我们肯定有办法改进我们实践数据科学的方式。在这篇博客中,我们将讨论 7 种可以快速改善数据科学工作流程的简单方法。这些是我离开大学后艰难地学到的技巧。希望这可以帮助您组织您的环境,更好地编码,并为您的数据科学项目找到更合适的堆栈!
1.组织您的项目目录
没有什么比拥有一个Untitled.ipynb
到Untitled9999.ipynb
的乱七八糟的文件夹,文件夹里到处散落的数据 csv,还有一堆.ipynb_checkpoints
一样的缓存更糟糕的了。建立项目文件夹的第一步会让你的日常工作流程更加顺畅。一些有助于建立有序文件夹的常用工具有:
- Cookiecutter :帮助你建立标准文件夹目录的 Python 包。查看这里的一个受 cookiecutter 启发的插件,它可以直接从你的 Jupyter 开发环境中访问。
- 迷你巨蟒:巨蟒的一个准系统版本。如果您不需要 Anaconda 启动程序附带的 GUI 或其他应用程序,Miniconda 是一个不错的选择。
- requirements.txt 或 environment.yml:这有助于立即重新创建开发环境
- 。gitignore file:这有助于通过忽略不需要推送到 repo 的文件来保持 git 存储库的整洁。例如临时文件、笔记本检查点、venv 文件夹等。
关于这个话题的更多信息,请点击这里:
自定义 Jupyter 扩展,帮助组织您的项目文件夹
towardsdatascience.com](/cookiecutter-plugin-for-jupyter-easily-organise-your-data-science-environment-a56f83140f72)
2.清理您的 Python 环境
大多数 data science medium 博客帖子会告诉你,为你的项目创建一个虚拟环境,但很少告诉你保持环境整洁的重要性。通常,当您创建开发环境时,会安装一堆生产环境不需要的 IPython 相关包。要使您的工作流程更加顺畅,您可以:
- Multiple requirements.txt 或 enviornment.yml:对 dev 和 prod 进行单独的配置可能是有用的,但是当您添加新的包时,您需要更新这两者
- pipreqs :一个 Python 包,通过只保留您的代码通过运行
pipreqs /path/to/your/project/folder
导入的包来清理您的 production requirements.txt。 - pipdeptree :一个 Python 包,通过运行
pipdeptree
帮助您理解 Python 环境的依赖性。
关于这个话题的更多信息,请点击这里:
这个博客话题想法我煮了很久了。我做了大量的搜索,阅读和尝试,同时致力于…
medium.com](https://medium.com/python-pandemonium/better-python-dependency-and-package-management-b5d8ea29dff1)
3.更好地利用 Python 的标准库
不要重新发明轮子!很多时候,当您觉得有一些笨拙的代码需要编写时,您会重新创建 Python 提供的一些内置函数。
示例 1: collection.Counter
用于统计出现次数
# instead of this
counter = dict()
for item in my_list:
counter[item] = counter.get(item, 0) + 1# do this
from collections import Counter
counter = Counter(my_list)
例 2: itertools.chain.from_iterable
用于连接列表列表
# instead of this
joined_list = []
for sub_list in my_list_of_list:
joined_list.extend(sub_list)# do this
from itertools import chain
joined_list = list(chain.from_iterable(my_list_of_list))
例 3: collections.namedtuple
作为一个不可变类的替换
# instead of this
class Color:
def __init__(self, r, g, b):
self.r, self.g, self.b = r, g, b# or this
RED, GREEN, BLUE = 0, 1, 2
c = (0, 255, 120) # lime green
red_value = c[RED]# do this
from collections import namedtuple
Color = namedtuple('Color', ['r', 'g', 'b'])
c = Color(0, g=255, b=120) # lime green
red_value = c.r
示例 4: bisect.insort
用于维护排序列表
# just do this
from bisect import insort
my_sorted_list = []
for i in (1, 324, 52, 568, 24, 12, 8):
insort(my_sorted_list, i)
另一个常见的陷阱是使用过度的数据结构。例如,如果一旦定义了一个列表,你就不改变它的内容,那么一个元组会节省你很多内存;或者,如果您只使用列表的第一个或最后一个元素,那么请使用 deque。
关于此主题的更多信息:
[## Python 标准库- Python 3.9.0 文档
虽然 Python 语言参考描述了 Python 语言的确切语法和语义,但是这个库…
docs.python.org](https://docs.python.org/3/library/)
4.包装笔记本电脑时简化您的代码
我们自己都知道,就可读性、可伸缩性和可维护性而言,开发笔记本是世界上最糟糕的脚本之一。在将笔记本打包到 Python 包中时,通常有一些经验法则:
-
识别重复的代码片段,并将它们分组到一个函数中:例如,我不用每次都编写一个正则表达式来进行关键字匹配,而是使用下面的代码片段:
-
去掉多余的单元格、线和变量:对,我们说的是
df_temp = df.copy()
、gc.collect()
、temp = df.some_column.unique()
-
**将所有的函数和导入移到笔记本的开头:**我在大学的时候,C 给我上了一堂很好的课,那就是预先定义你需要的所有东西,你永远不需要担心去哪里找它们
-
**按执行顺序解开并排序单元格:**你最不想要的就是记住你是什么时候从笔记本的最后一个单元格跳到第一个单元格的
5.尽可能继承现有的抽象类
当涉及到组织代码时,面向对象编程和函数式编程将永远是一场争论。但是底线是,使用任何一个都比什么都不用要好。说到数据科学,有许多以 OOP 方式组织的包,例如 sci-kit learn、nltk、spacy 等等。如果你设法将你的脚本打包成扩展抽象类的类,这将有助于更好地组织你的代码,并允许与你的数据科学管道更好地集成。
例如,根据我以前的 regex 表达式构造片段,我想构造一个标记器,只返回函数捕获的标记。通过继承 nltk 的TokenizerI
,我的RegexpEntityTokenizer
现在与 say nltk 的PunktSentenceTokenizer
具有相同的结构。这意味着我现在可以将我的自定义标记器传递给 sklearn Pipeline
来实现无缝工作流。
关于这个话题的更多信息,请点击这里:
[## 面向数据科学家的面向对象编程:构建您的 ML 估计器
通过构建自己的 Scikit-learn-like,在机器学习环境中实现一些核心的 OOP 原则…
towardsdatascience.com](/object-oriented-programming-for-data-scientists-build-your-ml-estimator-7da416751f64)
6.停止腌制一切
是的,我知道。腌制数据框等物品方便;你基本上可以将你的 python 脚本中的所有东西序列化到一个.pkl
文件中。然而,pickle 的便利性伴随着几个薄弱环节:
- 不是为速度而设计的 : Pickle 是为任何对象而设计的,这使得它比其他更专业的序列化要慢
- 不安全:解包一个 pickle 文件可以执行一些已经隐藏在 pickle 文件中的任意代码。想象一下,如果你的前任为你准备了一些生日恶作剧。
- 不可移植:不同版本的 Python 之间并不是所有的 pickled 数据都兼容。
所以记住,pickle 不是保存数据和进度的唯一方法。以下是一些备选方案:
- cPickle :底线,看看 cPickle,这是用 C 实现的 Pickle,比 Pickle 快 1000 多倍。
- JSON : JSON 序列化你的数据比 pickle 快很多。最重要的是,JSON 使得在 Python 之外的文本编辑器中存储和编辑字典(或者配置模型的 kwargs)成为可能。
- NumPy :如果你正在序列化一个定义明确的结构,你可以把它放进
numpy.ndarray
,NumPy 的np.save
和np.memmap
是一些更快的选择 - Joblib :对于一直在开发机器学习模型的人来说,这应该并不陌生。如果你的对象包含大的
np.ndarray
,那么 joblib 可能适合你。它的界面与 pickle 基本相同,但更简单一些,所以你使用它应该没有问题。但是,请注意 joblib 与 pickle 有相同的安全问题。 - h5py :对于之前玩过 say tensorflow 或者 keras 的人来说并不陌生。HDF5 阵列可以存储大量压缩数字数据。的确,拥有一个包含压缩数据的层次数据结构意味着一点学习曲线,也意味着查询数据集有点困难;但另一方面,您将从中获得非常高效的数据 I/O。
7.考虑使用数据库
最后但同样重要的是,这将是一个巨大的飞跃,并有可能改变你的游戏计划。但是相信我,在自己经历了转换之后,是值得的。查看您是否经历过以下任何情况:
- 在你巨大的熊猫数据帧上不能再加速你的 python 脚本了
- 保存和加载数据集的时间越来越长
- 您的所有数据都位于同一位置,无论是原始数据、外部数据还是经过处理的数据
- 新数据不断出现,并保存为 CSV 格式
这些都是数据库将使你的生活变得容易得多的迹象。一旦有了数据库,SQL 会帮你做很多繁重的工作。很多时候,I/O 是我的 Python 脚本的瓶颈。通过将处理向数据靠近一步,读写速度得到了不同数量级的提高。最棒的是,无论你的需求是什么,你总能找到合适的数据库:MySQL、PostgreSQL、MongoDB、CouchDB 等。
关于这个话题的更多信息,请点击这里:
如何开始接触数据库世界?
towardsdatascience.com](/databases-101-introduction-to-databases-for-data-scientists-ee18c9f0785d)
出发前
这些是我的一些关于数据科学和 python 的中型博客,您可能想看看:
是时候停止过于依赖。iterrows()和。应用()
towardsdatascience.com](/efficient-implementation-of-conditional-logic-on-pandas-dataframes-4afa61eb7fce) [## 为数据科学建立必要的 Jupyter 扩展
自定义 Jupyter 扩展,帮助组织您的项目文件夹
towardsdatascience.com](/cookiecutter-plugin-for-jupyter-easily-organise-your-data-science-environment-a56f83140f72) [## Python 中高效的根搜索算法
在 Python 中实现高效的寻根和优化搜索算法
towardsdatascience.com](/mastering-root-searching-algorithms-in-python-7120c335a2a8)
好了
希望您已经发现这些提示对完善您的数据科学工作很有用。让我知道如果评论你如何找到这些技巧。
再见!
[## Louis Chan-FTI Consulting | LinkedIn 数据科学总监
雄心勃勃的,好奇的和有创造力的个人,对分支知识和知识之间的相互联系有强烈的信念
www.linkedin.com](https://www.linkedin.com/in/louis-chan-b55b9287/)
7 个必不可少的人工智能 YouTube 频道
如何跟上最新最酷的机器学习进展
Kon Karampelas 在 Unsplash 上拍摄的照片
几年来,机器学习一直是最热门的话题之一。每个人都在谈论它;各种规模的组织都在采用这些技术。
《哈佛商业评论》将数据科学家的角色描述为“21 世纪最性感的工作”。它们对商业决策至关重要,而且需求量很大。
机器学习研究的支出正在增长,从 2017 年的 15.8 亿美元增长到 2024 年的 208.3 亿美元。在学术领域,研究人员每天在 Arxiv 上发布大约 100 篇新的机器学习论文。
每 15 分钟一篇论文!
左:一堆研究,文章,高亮文章[ 来源 ] |右:Arxiv 上每天 100 篇新的机器学习论文[来源]
这张图表显示了机器学习的兴奋程度和进展。谁能跟上这一领域的发展呢?🤔
在这篇文章中,我将介绍分享我们兴奋的七个 YouTube 频道。这些频道旨在揭示机器学习领域最新、最酷的发展。
我们开始吧。
#1.两份会议记录文件
名单上的第一个,是我最喜欢的,由卡罗利·佐尔奈-菲尔撰写的两分钟论文。他的视频很有趣,很吸引人,看起来绝对是一种享受。他挑选并评论最令人兴奋的研究进展。DotA 游戏上的 OpenAI,检测 DeepFake,模拟物理,或者克隆你的声音。他在他的频道里拥有一切。
Károly 将描述他正在回顾的研究中有哪些精彩之处。即使是最先进和最新的人工智能研究,观看他的视频也不需要计算机科学博士学位。他的演示非常清晰,没有机器学习知识的人也能理解。
既然这是我最喜欢的频道,那就给你看其中一个视频, OpenAI 玩捉迷藏,破游戏 !🤖我相信你会喜欢的。
讲的是两个 AI 团队(隐藏者和寻求者)互相玩捉迷藏。当一方学会了新的策略,另一方就会适应反击。代理人一直玩到他们学会滥用游戏物理引擎的程度。太棒了。
YouTube: 两分钟论文
#2.莱克斯·弗里德曼
Lex Fridman 采访人工智能行业的超级明星。埃隆·马斯克、扬·勒昆、约舒阿·本吉奥、埃里克·施密特?是的,莱克斯已经采访过他们了。
这些采访可以让你对未来有所了解,因为他们会分享他们正在做的事情。利用人工智能找到癌症的治疗方法;Adobe 在做 AI;Neuralink 新的 iRobot 真空能力:YouTube 算法。你可以找到大量可供选择的主题。
莱克斯·弗里德曼是麻省理工学院的研究科学家。他进行深度学习和自动驾驶汽车讲座。如果你对参加麻省理工学院的深度学习讲座感兴趣,Lex 也会在他的频道上分享它们。
YouTube: 莱克斯弗里德曼
#3.亨利·艾实验室
亨利艾实验室。这个渠道丰富!自然语言处理,强化学习,生成对抗网络,弱监督学习。涵盖了所有最热门的话题。
亨利总结了谷歌和脸书等公司的研究实验室发表的新论文。如果你想跟上人工智能的最新发展,这绝对有用。他概述了最新的研究课题和现实世界的应用,你不必自己消化整篇论文。
YouTube: 亨利·艾实验室
#4.ArXiv 见解
研究论文可能有点枯燥&需要一段时间来阅读,对吗?史云光·斯廷布鲁格将为您提供帮助!他旨在简化和解释机器学习论文中的技术细节。
在撰写本文时,该频道只有 11 个视频。但是他的高质量和可靠的内容已经吸引了 4.5 万订户。他将复杂的主题,如生成对立网络,分解成一步一步的微小解释。
在观看他的视频时,我在想,“伙计,我多么希望我的讲师能像他一样解释概念。
YouTube:ArXiv 洞见
#5.扬尼克·基尔彻
Yannic Kilcher 重点讲解深度学习研究论文。他介绍了这篇论文,并描述了它背后的新颖性。他一丝不苟地给你读论文,他像讲故事一样讲。他涵盖了关于深度学习架构、自然语言处理和强化学习的主题。
细节的水平令人难以置信。扬尼克把一本厚厚的纸分成几部分,一段一段地揭示每个想法。他解释并在屏幕上涂鸦,引导你思考整个过程。当有论文没有涉及的概念时,他会参考其他资源来揭示论文之外的任何概念。
在视频的最后,感觉我已经对论文有了充分的理解,就好像我已经通读了至少三遍。我多么希望他能评论我正在阅读的论文。
YouTube: 扬尼克·基尔彻
#6.利奥·伊西克多根
利奥·伊西克多根
Leo Isikdogan 展示了将简明的研究课题转化为实际的、真实的应用。他涉及机器学习和计算机视觉的主题。他还创建了指导性的机器学习教程。
Leo 是英特尔的一名研究员,他在频道中介绍了自己的工作。我喜欢的一项研究是利用深度神经网络进行眼神交流矫正。在他的视频中,他解释说,在通话中保持目光接触需要看着摄像头,而不是屏幕。他的工作是纠正凝视,提高视频会议体验的质量。
我喜欢研究有现实世界的应用和影响。
这个频道对任何开始深度学习的人来说也很棒,有很多东西可以学习。查看他的频道中的播放列表、深度学习速成系列课程和tensor flow 编码实践课程。
YouTube: 利奥伊西多根
#7.卡格尔
最后同样重要的是, Kaggle ,你的数据科学之家。这是最大的数据科学社区。用户可以在 Kaggle 平台中找到数据集和代码。他们可以发布笔记本来共享代码、协作和相互学习。有现金奖的比赛;竞争是一种很好的学习方式,现金绝对是取得好成绩的巨大动力。
如果说 Kaggle 是你做和学的地方,那么 Kaggle YouTube 频道就是你看和学的地方。
有关于深度学习、构建仪表板和数据处理的“how-to”编码教程。他们有关于如何解决数据科学问题的现场编码会议。
关于最新 NLP 研究的更新,有一个播放列表, Kaggle 阅读小组。她阅读和讨论 NLP 的研究论文。她会向你解释每一个段落,图表,代码,数学方程式。如果你是一名新的研究人员或刚接触学术论文,观看这些视频,你将学会如何剖析论文。
YouTube:ka ggle
这就对了。我希望你会喜欢这些频道。如果你有渠道推荐,请在评论中告诉我(和其他读者)。
如果机器学习让你兴奋,那就跟着我上 Medium ( 顺口溜);因为我会写更多关于机器学习的应用。特别是在医疗保健中,对视网膜和脑机接口的影响。我也开发原型来展示机器学习。
阅读介质上的顺口溜。博士生|阿里巴巴|医疗保健中的机器学习| TDS 副主编|…
medium.com](https://medium.com/@jinglesnote)
我将引用罗伊·班尼特的话来结束我的演讲。
过上成功而充实的生活有五件重要的事情:永远不要停止梦想,永远不要停止相信,永远不要放弃,永远不要停止尝试,永远不要停止学习。
40%的吸尘器,40%的看门人,20%的算命师。
towardsdatascience.com](/data-scientist-the-dirtiest-job-of-the-21st-century-7f0c8215e845)
用 Jupyter 笔记本写作的 7 个基本技巧
数据科学
第一篇数据科学文章指南
**Table of Contents**[**Introduction**](#792b)1\. [Help, shortcuts, and number lines](#7358)
2\. [Theme](#78aa) and [Font & font size](#4f95)
3\. [Markdown](#53a8)
4\. [Jupyter Notebook LaTeX](#36a1)
5\. [Jupyter Notebook LaTeX equation numbering & alignment](#ece0)
6\. [Two columns](#231d)
7\. [Page break](#28da)
8\. [Footnotes](#699a)
9\. [Writing tools](#b5ba)
10\. [How to print out from Jupyter Notebook without code blocks](#87e5)
11\. [Exporting to an MS Word file](#13be)[**Conclusion**](#e6f0)
介绍
Jupyter Notebook 是创建和共享包含代码、可视化和文本的文档的好工具。在本文中,我将介绍使用 Jupyter Notebook 撰写第一篇数据科学文章的有用技巧。
如果你想看 Jupyter 笔记本入门指南,请阅读这篇文章。
我们开始吧!
帮助、快捷键和数字行
快捷方式会加快你的写作速度。按下h
切换键盘快捷键屏幕。你可以通过按⌘⇧f.看到所有的命令。我经常使用下面的快捷键,如果你能记住它们会很有用。
Mac 和 Windows 键盘符号。摄影:冈田新一
Mac Jupyter 笔记本快捷方式。摄影:冈田新一
行号
在你的笔记本上放上行号是个好主意。当你有一个错误,很容易找到线。除了上述快捷方式,您还可以使用视图>切换行号。
Jupyter 笔记本单元格中的行号。摄影:冈田新一
主题
为你的 Jupyter 笔记本设计一个漂亮的 Jupyter 主题就像一个舒适的枕头。你将花很多时间用 Jupyter 笔记本写作,让我们为你的口味找一个好的主题,并修改字体大小。
让我们安装 JupyterThemes 。打开您的终端并键入以下内容。对于 PIP 用户;
pip install jupyterthemes
pip install --upgrade jupyterthemes
对于康达用户;
conda install -c conda-forge jupyterthemes
有九个主题,chesterish,3 年级,ggruvboxd,gruvboxl,monokai,oceans16,onedork,solarizedd,solarizedl。
Jupyter 笔记本主题。摄影:冈田新一
如果你想使用 ocean16,请在 Jupyter 笔记本单元格中输入以下内容,然后按 shift+enter。
!jt -t oceans16
当你改变一个主题时,你需要刷新你的浏览器!
如果您想重置主题,请使用以下代码。
!jt -r
[## 如何在 Docker 上运行 Jupyter 笔记本
不再有 Python 环境和包更新
towardsdatascience.com](/how-to-run-jupyter-notebook-on-docker-7c9748ed209f) [## 手把手的 Jupyter 笔记本黑客
您应该使用的技巧、提示和快捷方式
towardsdatascience.com](/hands-on-jupyter-notebook-hacks-f59f313df12b)
字体和字体大小
方法一
下图显示了字体的位置。
Jupyter 笔记本字体名称及其选项名称。
下图显示了字体大小。
Jupyter 笔记本字体大小名称及其选项名称。
如果您想要更改文本单元格的字体和字体大小,您可以在单元格中键入以下内容,然后按 shift+enter。
!jt -t oceans16 -tf merriserif -tfs 14 -nf ptsans -nfs 14
不要忘记刷新浏览器以使更改生效。
你可以在这里找到所有的字体类型。
让我们试试不同的设置。
!jt -t grade3 -tf firacode -tfs 13 -mathfs 110 -fs 13 -N -T
方法二
如果你不想改变主题,但想改变字体大小和字体,那么你需要改变 Jupyter 笔记本的 CSS。在编辑器中打开.jupyter/custom/custom.css
。如果没有编辑器,请安装 VS 代码。
并将以下内容粘贴到文件中。你可以把font-size:130%
改成你喜欢的任何数字。
div#notebook p, div#notebook{
font-size: 130%;
line-height: 125%;
}.rendered_html pre, .rendered_html table{
font-size:130%;
line-height: 125%;
}.CodeMirror, .CodeMirror pre, .CodeMirror-dialog, .CodeMirror-dialog .CodeMirror-search-field, .terminal-app .terminal {
font-size: 130%;
line-height: 125%;
}
保存文件并重新加载页面以查看更改。
方法三(仅针对代码单元格)
这可能是最容易的代码单元字体。这不适用于减价单元格。
在 Nbextensions 中,您可以启用代码字体大小。
从设置到描述性统计
towardsdatascience.com](/beginners-guide-to-jupyter-notebook-8bb85b85085) [## 使用 Jupyter 笔记本进行版本控制
Jupytext 循序渐进指南
towardsdatascience.com](/version-control-with-jupyter-notebook-b9630bc5996e)
降价
Markdown 是一种具有纯文本格式语法的轻量级标记语言。(维基百科)
如何将单元格改为降价
将单元格更改为 markdown 的一种方法是从下拉列表中选择 Markdown。
单元格选项。摄影:冈田新一
另一种方法是使用m
快捷键,选中一个单元格后。如果您正在单元格中键入m
、y
转换为代码和r
转换为原始数据,您可能需要按 escape 键。
标题
使用#
表示 H1,##
表示 H2 等。
# Main title
## Sub title
### H3 title
#### H4 title
上面将打印出以下内容。
Jupyter 笔记本降价标题示例。摄影:冈田新一
目录
您可以使用*或-来创建一个嵌套的无序列表,并将数字用于有序列表。
- main 1
- sub 1
- sub 2
- main 2
- main 31\. Main list 1
2\. Main list 2
- Sub list 2-1
- Sub list 2-2
3\. Main list 3
以上产生了以下内容。
Jupyter 笔记本降价清单示例。摄影:冈田新一
链接
像[Link name](url)
一样,降价链接在链接文本后立即使用括号。
[Google]([https://www.google.com](https://www.google.com))
上面的代码产生, Google 。
图像
Markdown image 语法类似于 Links 语法,但是您可以在它前面加上一个感叹号,如
。
 "Logo Title Jupyter Notebook logo")
上述降价产生:
Jupyter 笔记本图像示例。
桌子
要添加表格,请使用三个或更多连字符创建每列的标题,并使用竖线(|)分隔每列。您可以选择在表格的任意一端添加管道。使用:---:
将一列居中,:---
向左对齐。
Id | Syntax | Description
--|:---------:|:-----------:
1|Header | Something very long long long here
2|Long long long paragraph | Text
渲染输出如下所示:
Jupyter 笔记本降价表示例。摄影:冈田新一
如果你想了解更多关于减价的信息,请阅读本页。
使用 Jupyter 笔记本和 JupyterLab 让您的工作流程更加高效
towardsdatascience.com](/stepping-into-intermediate-with-jupyter-f6647aeb1184) [## 如何创建一个有吸引力的泡泡图
从 Github repo 抓取数据的分步指南
towardsdatascience.com](/how-to-create-an-attractive-bubble-map-5cf452c244e9)
Jupyter 笔记本乳胶
LaTeX 在学术界被广泛用于多个领域的科学文献的交流和发布。
- 您需要用美元($)符号将它们括起来。
若要向左对齐,请使用一个美元( ) 符号。 ‘ )符号。` )符号。‘P(A)=\frac{n(A)}{n(U)}$`
Jupyter 笔记本乳胶示例左对齐。摄影:冈田新一
- 要居中对齐,请使用双美元( ) 符号。 ‘ )符号。` )符号。‘P(A)=\frac{n(A)}{n(U)}$$`
Jupyter 笔记本乳胶例子,对齐中心。摄影:冈田新一
- 使用
\limits
的\lim
、\sum
和\int
为每个标志的顶部和底部添加限制。 - 使用反斜杠来转义 LaTeX 特殊单词,如数学符号、拉丁单词、文本等。
下表显示了基本的 LaTeX 命令。
Jupyter 笔记本乳胶例子。摄影:冈田新一
你能写出下列乳胶中平均值的方程式吗?
Jupyter 笔记本乳胶方程的例子。摄影:冈田新一
矩阵
Jupyter 笔记本乳胶矩阵的例子。摄影:冈田新一
**cases**
为分段函数
用左花括号渲染多行。
$$
\begin{align}
\text{Probability density function:}\\
\begin{cases}
\frac{1}{b-a}&\text{for $x\in[a,b]$}\\
0&\text{otherwise}\\
\end{cases}
\\
\text{Cumulative distribution function:}\\
\begin{cases}
0&\text{for $x<a$}\\
\frac{x-a}{b-a}&\text{for $x\in[a,b)$}\\
1&\text{for $x\ge b$}\\
\end{cases}
\end{align}
$$
上述代码产生以下内容。
Jupyter 笔记本乳胶分段函数的例子。摄影:冈田新一
Jupyter 笔记本乳胶方程式编号和对齐
方程式编号
对于方程编号,需要加上[jupyter_contib_nbextensions](https://jupyter-contrib-nbextensions.readthedocs.io/en/latest/install.html#install-the-python-package)
。
PIP
如果你用pip
安装了 Jupyter 笔记本,你可以用 Jupyter 笔记本的电池安装[jupyter_contib_nbextension](https://jupyter-contrib-nbextensions.readthedocs.io/en/latest/install.html#install-the-python-package)
。
!pip install jupyter_contrib_nbextensions
然后需要安装 CSS。
!jupyter contrib nbextension install --user
或者从没有!
的终端。
pip install jupyter_contrib_nbextensions
康达
如果您的安装是通过 Conda,那么从 Jupyter 笔记本手机或终端运行以下程序。
jupyter contrib nbextension install --user
刷新您的浏览器,您应该在主菜单中看到 Nbextensions 选项卡。
Jupyter 笔记本 nb 扩展标签。摄影:冈田新一
单击 Nbextensions 选项卡并搜索公式自动编号。单击该框以启用扩展。
Jupyter 笔记本方程自动编号。摄影:冈田新一
刷新浏览器并尝试以下方程以查看方程编号。请将以下内容添加到减价单元格中。它在 1 到 3 的末尾添加方程式编号。你需要从\begin{align}
and end with \end{align}
开始。
$$
\begin{align}
{x} = \sigma(y-x) \\
{y} = \rho x - y - xz \\
{x+y+z} = -\beta z + xy
\end{align}
$$
Jupyter 笔记本乳胶方程编号示例。摄影:冈田新一
换行和标记
刷新浏览器并尝试以下方程以查看方程编号。您可以使用\tag{}
添加方程式编号。双反斜杠\\
代表一个新行。你需要用\begin{align}
and \end{align}
把所有方程括起来。
$$
\begin{align}
{x} = \sigma(y-x) \tag{1-1}\\
{y} = \rho x - y - xz \tag{1-2}\\
{x+y+z} = -\beta z + xy \tag{1-3}
\end{align}
$$
Jupyter 笔记本乳胶方程编号示例使用对齐和制表符。摄影:冈田新一
等式对齐
右对齐
正常情况下,等式与上面的示例一样向右对齐。
等号对齐
通过添加&符号,等式将在该点对齐。例如,如果你想在等号处对齐等式,使用&=
。
$$
\begin{align}
{x} & = \sigma(y-x) \tag{3-1}\\
{y} & = \rho x - y - xz \tag{3-2}\\
{x+y+z} & = -\beta z + xy \tag{3-3}
\end{align}
$$
Jupyter 笔记本乳胶方程对齐等号。摄影:冈田新一
左对齐
$$
\begin{align}
& {x} = \sigma(y-x) \tag{4-1}\\
& {y} = \rho x - y - xz \tag{4-2}\\
& {x+y+z} = -\beta z + xy \tag{4-3}
\end{align}
$$
Jupyter 笔记本乳胶方程左对齐。摄影:冈田新一
混合对齐
如果你想让文本靠左对齐,公式居中对齐,你可以使用下面的方法。
$
\text{Normal distribution} \\
$
$$
X \sim N(\mu,\sigma^2) \\
$$
$
\text{Probability density function} \\
$
$$
\frac{1}{\sigma \sqrt{2 \pi}}e^{-\frac{(x- \mu)^2}{2 \sigma^2}}
$$
Jupyter 笔记本 LeTeX 方程混合对齐。摄影:冈田新一
两列
如果你想创建两列布局,你可以试试这个方法。
请将以下内容复制并粘贴到其中一个单元格中。
<div class="row">
<div class="column">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas quis nunc pulvinar urna faucibus tincidunt ut vestibulum ligula. Sed placerat sollicitudin erat, quis dapibus nibh tempor non.
<br/>
Id | Syntax | Description
--|:---------:|:-----------:
1|Header | Something here
2|More here | Text
</div>
<div class="column">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas quis nunc pulvinar urna faucibus tincidunt ut vestibulum ligula. Sed placerat sollicitudin erat, quis dapibus nibh tempor non.
<br/>
$$
\begin{align}
{x} & = \sigma(y-x) \tag{3-1}\\
{y} & = \rho x - y - xz \tag{3-2}\\
{x+y+z} & = -\beta z + xy \tag{3-3}
\end{align}
$$
</div>
</div>
接下来,您需要向其中一个单元格添加 CSS 样式。(这包括“如何在没有代码块的情况下从 Jupyter 笔记本中打印”中的代码,您可以在本文的后面找到它。)
%%html
<style>
[@media](http://twitter.com/media) print {
* {
box-sizing: border-box;
} .row {
display: flex;
} /* Create two equal columns that sits next to each other */
.column {
flex: 50%;
padding: 10px;
}
div.input {
display: none;
padding: 0;
}
div.output_prompt {
display: none;
padding: 0;
}
div.text_cell_render {
padding: 1pt;
}
div#notebook p,
div#notebook,
div#notebook li,
p {
font-size: 10pt;
line-height: 115%;
margin: 0;
}
.rendered_html h1,
.rendered_html h1:first-child {
font-size: 10pt;
margin: 3pt 0;
}
.rendered_html h2,
.rendered_html h2:first-child {
font-size: 10pt;
margin: 3pt 0;
}
.rendered_html h3,
.rendered_html h3:first-child {
font-size: 10pt;
margin: 3pt 0;
}
div.output_subarea {
padding: 0;
}
div.input_prompt{
display: none;
padding: 0;
}}
这里我用的是 CSS flexbox 。Flexbox 是一种创建多列的现代方法。您需要执行单元格,并使用浏览器的打印来查看效果。
两列
分页
原始 NBConvert
创建一个原始的 NBConvert 单元格并添加以下代码。
<div style="page-break-after: always;"></div>
转到 Jupyter 笔记本,文件,打印预览。
打印预览
然后转到浏览器的文件、打印或 Cmd+p 来打印页面。
脚注
将以下内容添加到单元格中。
This is a example of footnote[<sup>1</sup>](#fn1). And this is another footnote[<sup>2</sup>](#fn2).
在另一个单元格中,添加以下内容。
<span id="fn1"> Your footnote 1 here.</span>
<span id="fn2"> Your footnote 2 here.</span>
通过点击上标,它将跳转到它的脚注。
书写工具
在发表你的文章之前,我总是需要检查语法和单词。
- 语法上
截至撰写本文时,Grammarly 还不能在浏览器上运行。所以你必须复制粘贴到的网络应用或者的桌面应用。
- 海明威编辑
检查完语法后,海明威应用程序是让你的文章变得大胆清晰的下一个工具。即使你的观众是成年人,海明威应用程序的可读性也要达到 6 级。
朱庇特笔记本写作工具,海明威编辑。
- 拼写检查器
您可以在 Nbextensions 中启用拼写检查器。
作者图片
如何在没有代码块的情况下从 Jupyter 笔记本中打印出来
一旦你完成了你的写作,如果你想把它导出为 PDF 文件,你可以把它打印成 PDF 格式。
有几种方法可以做到这一点。但是我想到了一个最简单灵活的方法。
您需要将下面的代码复制并粘贴到您的一个单元格中。然后转到文件,打印预览。代码块和输出块将被删除。为打印调整标题填充和边距。使用这种方法,您可以随意调整代码。
我发现原始的 NBConvert 块在打印视图中没有 div 或 class,所以很难控制这些块。我建议不要使用 Raw NBConvert 进行打印。
%%html
<style>
@media print {
div.input {
display: none;
padding: 0;
} div.output_prompt {
display: none;
padding: 0;
} div.text_cell_render {
padding: 1pt;
} div#notebook p,
div#notebook,
div#notebook li,
p {
font-size: 11pt;
line-height: 135%;
margin: 0;
} .rendered_html h1,
.rendered_html h1:first-child {
font-size: 16pt;
margin: 7pt 0;
} .rendered_html h2,
.rendered_html h2:first-child {
font-size: 14pt;
margin: 6pt 0;
} .rendered_html h3,
.rendered_html h3:first-child {
font-size: 13pt;
margin: 6pt 0;
} div.output_subarea {
padding: 0;
}
} @page {
size: A4;
}
</style>
进入浏览器打印,文件>打印,需要在页眉和页脚选择空白。
您需要在页眉和页脚中选择空白。摄影:冈田新一
现在,您可以打印出这个 HTML 页面或将其导出为 PDF 格式,而无需代码和页眉/页脚。
选择在预览中打开或另存为 PDF。摄影:冈田新一
导出到 MS Word 文件
是否要在 MS Word 中编辑 Jupyter 笔记本文件?这是你能做的。
首先,你需要安装 Pandoc 。下载 macOS 的最新安装程序,或者按照 Windows 的说明进行操作。通过pandoc --version
检查是否安装正确。
接下来,您需要从您的终端安装 jupyter-docx-bundler 。
$ pip install jupyter-docx-bundler
$ jupyter bundlerextension enable --py jupyter_docx_bundler --sys-prefix
移除输入或代码单元格
转到视图>单元格工具栏>标签,并将nbconvert-remove-input
添加到标签字段。这将删除单元格的输入代码。
如何查找单元格标记
隐藏代码单元格
您可以通过添加nbconvert-remove-cell
来删除整个单元格。
在您的终端运行中:
jupyter nbconvert --execute --to=docx <source notebook>.ipynb --output <target document>.docx
运行 nbconvert 将 ipynb 转换为 docx 文件
结论
我希望这将节省您的时间,并为您的第一篇数据科学文章做好准备。如果你还有其他建议,请写在评论里。
通过 成为 会员,可以完全访问媒体上的每个故事。
参考
- https://markdown-guide . readthedocs . io/en/latest/basics . html # markdown-basics
- https://github . com/Adam-p/Markdown-here/wiki/Markdown-cheat sheet
- https://www.markdownguide.org/extended-syntax/
- https://qiita.com/koikoi_jam/items/29d9ef4e16a42038325c
- https://github . com/duno vank/jupyter-themes # monospace-fonts-code-cells
- https://www . over leaf . com/learn/latex/Integrals,_sums_and_limits
你好。你坚持到了最后。既然你来了,请帮我传播这篇文章。您也可以关注我,获取更多的 Jupyter、统计和技术文章。
Jupyter 技巧和提示的集合
medium.com](https://medium.com/series/jupyter-hacks-and-tips-1b1a3a10bc79)*
7 种你永远不会使用,但无论如何都应该知道的预测技巧
基准技术作为复杂预测的垫脚石
时间序列预测工具箱就像瑞士军刀,有许多选项可供选择。这些选项经常让数据科学家不知所措、迷惑不解,有时甚至彻底困惑。
据我所知,至少有 25 种不同的技术。但幸运的是,它们彼此之间并没有太大的不同。例如,ARIMA 技术(如 AR、MA、ARIMA、SARIMA、ARIMAX)看似不同,但实际上一种只是另一种的变体。
然而,今天我要写一些简单的技巧,这些技巧人们很少谈论,但对理解预测基础却非常有用。这些模型被称为“基准”或“基线”预测。
正如您将在下面看到的,这些技术很少在实践中应用,但它们有助于建立预测直觉,并在此基础上增加额外的复杂性。首先我将演示一些代码作为例子,然后在文章的后半部分讨论它们的相似之处和不同之处。
让我们首先实现三种技术:天真、均值和漂移模型。我在演示中使用的数据集是只有一个变量的航空乘客数据集。当然,我将使用 python!
导入库和数据
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
df = pd.read_csv("../gasprice.csv")
将数据分成训练集和测试集
train = df.iloc[0:556, ]
test = df.iloc[556:,]yhat = test.copy().drop('value', axis=1)
建模
# model building
yhat['naive'] = train.loc[len(train)-1, 'value'] #Naive
yhat['average'] = train['value'].mean() #Average
yhat['drift'] = train.loc[len(train)-1]['value'] + (train.loc[len(train)-1]['value']
- train.loc[0]['value'])/len(train)* np.linspace(0, len(yhat)-1, len(yhat)) # Drift# visualization
plt.figure(figsize=(12,4))
plt.plot(train['value'], label = "train")
plt.plot(test['value'], label = "test")
plt.plot(yhat['naive'], label = "naive")
plt.plot(yhat['average'], label = "mean")
plt.plot(yhat['drift'], label = "drift")
plt.legend()
plt.show()
评估
# model evaluation
eval = pd.concat([test, yhat], axis = 1)
eval['error_naive'] = eval['value'] - eval['naive']
mae_naive = np.mean(np.abs(eval['error_naive']))
rmse_naive = np.sqrt(np.mean(eval['error_naive']**2))
print('MAE_naive:', round(mae_naive))
print('RMSE_naive:', round(rmse_naive))eval = pd.concat([test, yhat], axis = 1)
eval['error_average'] = eval['value'] - eval['average']
mae_average = np.mean(np.abs(eval['error_average']))
rmse_average = np.sqrt(np.mean(eval['error_average']**2))
print('MAE_average:', round(mae_average))
print('RMSE_average:', round(rmse_average))eval = pd.concat([test, yhat], axis = 1)
eval['error_drift'] = eval['value'] - eval['drift']
mae_drift = np.mean(np.abs(eval['error_drift']))
rmse_drift = np.sqrt(np.mean(eval['error_drift']**2))
print('MAE_drift:', round(mae_drift))
print('RMSE_drift:', round(rmse_drift))
- MAE_naive: 16
- RMSE_naive: 20
- MAE_average: 25
- RMSE _ 平均:28
- MAE_drift: 17
- RMSE _ 漂移:21
现在,让我们进入一些细节,以了解基本知识。
- 天真的预测:
在简单预测中,未来值被假定为等于过去值。因此,某一特定产品在周三的销量将与周二的销量相似。
天真的预测很像一个 零假设 ,与另一个假设进行比较,明天的销售收入会因为这样那样的原因。
2。季节性天真:
顾名思义,季节性天真在其预测中考虑了季节性因素。所以在某种程度上,这是对幼稚方法的改进。在这种情况下,12 月的收入预测将等于前一年 12 月的收入。这样做是为了考虑到节日的影响。
同样,它仍然像 零假设 一样工作,但认为季节性是其相对于天真预测的关键改进。
3。平均模型
简单预测采用一个过去的值作为预测值。相比之下,均值模型采用所有过去的观察值,进行平均,并将该平均值用作预测值。
如果数据是随机分布的,没有清晰的模式和趋势(也称为白噪声),均值模型比朴素模型更适合作为基准。
4。漂移模型
漂移模型是简单预测的另一种变体,但有明显的改进。与 Naive 一样,它采用最后一次观察,然后根据过去值的变化调整观察。
预测值=过去观察值+/-过去观察值的平均变化
5。线性趋势
上述均值模型是一条不随时间变化的水平恒定线,因为它处理的是没有趋势的训练数据。但是,如果检测到趋势,线性模型比均值模型提供更好的预测值。
实际上使用线性趋势预测实际上是下面形式的最佳拟合线(即回归线):
y(t)=α+β* t
RSME 或 R2 值决定了拟合线的预测效果。
6。随机漫步
在这种情况下,预测值从其当前位置向前“行走”随机一步(类似于布朗运动)。就像一个蹒跚学步的孩子,下一步可以是任意方向,但不会离上一步太远。
Y(t+1)=Y(t) +噪声(t)
周三的股价可能会接近周二的收盘价,因此随机漫步可以提供合理的猜测。但是预测太多的时间步是不合适的,因为,嗯,每一步都是随机的。
7。几何随机漫步
在几何随机游走中,对下一个值的预测将等于上一个值加上一个常数变化(例如,收入的月增长百分比)。
ŷ(t)= y(t-1)+α
它也被称为“随机增长模型”。长期的股票价格遵循某种几何随机游走模型。
最后的想法
本文的目的是挖掘一些非典型的时间序列预测技术。即使它们没有在实践中使用,它们也是一个重要的垫脚石,为预测如何工作以及如何开发高级预测模型建立直觉。
关于一些高级预测技术的其他文章正在准备中,敬请关注。关于新闻和更新,你可以在推特上找到/关注我。
2020 年每个数据科学家都应该阅读的 7 本免费电子书
学习一项新技能不一定要很贵。2020 年你只需要时间和付出就能学会一项新技能。
T 这里有许多学习数据科学的在线资源。有些免费,有些付费。也有专门研究人工智能的昂贵的大学课程。你应该选择哪一个?
让我告诉你一个秘密。学习一项新技能不一定要很贵。2020 年学一门新技能,只需要时间和付出。
在这篇文章中,我整理了 7 本免费电子书,可以帮助你学习数据科学和机器学习。坚持学习!
我关于这个话题的其他文章:
[## 2020 年每个数据科学家都应该阅读的 7 本免费编程书籍
这些书将向你展示如何培养许多数据科学家缺乏的技能。都是免费的!
towardsdatascience.com](/7-free-programming-books-every-data-scientist-should-read-in-2020-608c00d7cf3c) [## 常春藤大学的 7 大免费人工智能课程
顶级人工智能课程精选列表。向该领域最优秀的人学习——有选择地使用你的时间、精力和…
towardsdatascience.com](/top-7-free-artificial-intelligence-courses-from-the-ivy-league-universities-7c951f787a55)
在 2020 年,你只需要时间和奉献来学习一项新技能
如果您想投资自己,请查看以下课程:
- [Labeling and Data Engineering for Conversational AI and Analytics](https://www.humanfirst.ai/)- [Data Science for Business Leaders](https://imp.i115008.net/c/2402645/880006/11298) [Course]- [Intro to Machine Learning with PyTorch](https://imp.i115008.net/c/2402645/788201/11298) [Course]- [Become a Growth Product Manager](https://imp.i115008.net/c/2402645/803127/11298) [Course]- [Deep Learning (Adaptive Computation and ML series)](https://amzn.to/3ncTG7D) [Ebook]- [Free skill tests for Data Scientists & Machine Learning Engineers](https://aigents.co/skills)
上面的一些链接是附属链接,如果你通过它们购买,我会赚取佣金。请记住,我链接课程是因为它们的质量,而不是因为我从你的购买中获得的佣金。
1.深度学习
作者:伊恩·古德菲勒、约舒阿·本吉奥和亚伦·库维尔
深度学习本书最初于 2016 年发布,是第一批致力于深度学习领域的书籍之一。它是由当时处于发展前沿的杰出研究人员团队编写的,在深度神经网络领域仍然具有很高的影响力和认可度。
这是一部自下而上的、重理论的深度学习专著。这不是一本充满代码和相应评论的书,也不是神经网络的表面水平的手动概述。这是对该领域基于数学的深入解释。
安妮·斯普拉特在 Unsplash 上的照片
2.深入学习
作者:阿斯顿·张,扎克·c·利普顿,,亚历克斯·j·斯莫拉
深入学习是一本交互式深度学习书籍,包含代码、数学和讨论。它提供了 NumPy/MXNet、PyTorch 和 TensorFlow 实现。作者是亚马逊的员工,他们使用亚马逊的 MXNet 库来教授深度学习。这本书会定期更新,所以请务必阅读最新版本。
扎卡里·利普顿说得好:
《深入学习》(D2K)的独特之处在于,我们在“边做边学”的理念上走得很远,整本书本身都是由可运行的代码组成的。我们试图将教科书的最佳方面(清晰度和数学)与实践教程的最佳方面(实践技能、参考代码、实现技巧和直觉)结合起来。每一章都通过多种形式、交织的散文、数学和一个独立的实现来教授一个关键思想,可以很容易地抓住和修改它,为您的项目提供一个良好的开端。我们认为这种方法对于教授深度学习是必不可少的,因为深度学习中的许多核心知识都来自实验(而不是第一原则)。
3.机器学习向往
作者:吴恩达
这本书是由斯坦福大学教授、在线教育先驱吴恩达写的。他还联合创立了 Coursera 和 deeplearning.ai。
机器学习向往本书侧重于教授如何让 ML 算法工作(而不是教授 ML 算法)。它优先考虑人工智能项目最有前途的方向。
这本书是一个有用信息的宝石,将帮助您解决实际问题,如诊断 ML 系统中的错误,如何应用端到端学习,迁移学习和多任务学习等。
4.可解释的机器学习
副标题:让黑盒模型变得可解释的指南
作者:克里斯托夫·莫尔纳尔
这本书使用了“支付你想要的价格策略”,所以从技术上来说它不是免费的。
可解释机器学习专注于表格数据(也称为关系或结构化数据)的 ML 模型,较少关注计算机视觉和自然语言处理任务。
这本书推荐给机器学习从业者、数据科学家、统计学家和其他任何对让机器学习模型可解释感兴趣的人。它详细说明了如何为机器学习项目选择和应用最佳解释方法。
5.黑客的贝叶斯方法
作者:卡梅伦·戴维森
黑客的贝叶斯方法从技术上讲并不是一本机器学习书籍,因为它专注于数据科学的一个重要领域,称为贝叶斯推理。
《黑客的贝叶斯方法》旨在从计算/理解第一,数学第二的角度介绍贝叶斯推理。这是针对爱好者与较少的数学背景或一个谁是不感兴趣的数学,但简单的贝叶斯方法的实践,这篇文章应该是足够的和有趣的。
这本书也是学习 PyMC(Python 中的概率编程语言)的极好资源。
马库斯·斯皮斯克在 Unsplash 上拍摄的照片
6.Python 数据科学手册
作者:杰克·范德普拉斯
Python 数据科学手册面向初级数据科学家。它展示了如何使用最重要的工具,包括 IPython、NumPy、Pandas、Matplotlib、Scikit-Learn 和许多其他工具。这本书非常适合解决日常问题,例如清理、操作和转换数据,或者构建机器学习模型。
Viktor Forgacs 在 Unsplash 上拍摄的照片
7.统计学习简介
副标题:申请中作者:加雷斯·詹姆斯、丹妮拉·威滕、特雷弗·哈斯蒂和罗伯特·蒂布拉尼
统计学习介绍提供统计学习方法介绍。它面向非数学科学领域的高水平本科生、硕士生和博士生。这本书还包含一些 R labs,详细解释了如何在现实生活中实施各种方法,应该是数据科学家的宝贵资源。
在你走之前
在推特上关注我,在那里我定期发关于数据科学和机器学习的推特。
照片由Courtney hedge在 Unsplash 上拍摄
2020 年每个数据科学家都应该阅读的 7 本免费编程书籍
这些免费书籍将向你展示如何培养许多数据科学家缺乏的技能
两周前,我出版了 7 本免费电子书,每个数据科学家都应该在 2020 年阅读。我得到了惊人的回应!所以很自然的事情就是展开这个话题。
[## 2020 年每个数据科学家都应该阅读的 7 本免费电子书
学习一项新技能不一定要很贵。2020 年你只需要时间和付出就能学会一项新技能。
towardsdatascience.com](/7-free-ebooks-every-data-scientist-should-read-in-2020-32508ad704b7) [## 常春藤大学的 7 大免费人工智能课程
顶级人工智能课程精选列表。向该领域最优秀的人学习——有选择地使用你的时间、精力和…
towardsdatascience.com](/top-7-free-artificial-intelligence-courses-from-the-ivy-league-universities-7c951f787a55)
现实世界的数据科学不仅仅是拟合模型。数据科学家还需要了解最佳编码实践、Bash、Git 和基本 web 框架。本文中的书籍将帮助你发展这些技能。
很多读者评论说,“我没时间看”。
编程书不是你必须从头到尾看完的小说。我尝试阅读 10%的技术书籍——通常不是从一开始。我浏览了目录。这样我就了解了这本书的要点。
当我在现实世界中面临问题时,我知道去哪里找解决方案。
如果您想投资自己,请查看以下课程:
- [Labeling and Data Engineering for Conversational AI and Analytics](https://www.humanfirst.ai/)- [Data Science for Business Leaders](https://imp.i115008.net/c/2402645/880006/11298) [Course]- [Intro to Machine Learning with PyTorch](https://imp.i115008.net/c/2402645/788201/11298) [Course]- [Become a Growth Product Manager](https://imp.i115008.net/c/2402645/803127/11298) [Course]- [Deep Learning (Adaptive Computation and ML series)](https://amzn.to/3ncTG7D) [Ebook]- [Free skill tests for Data Scientists & Machine Learning Engineers](https://aigents.co/skills)
上面的一些链接是附属链接,如果你通过它们购买,我会赚取佣金。请记住,我链接课程是因为它们的质量,而不是因为我从你的购买中获得的佣金。
现在,让我们从 2020 年每个数据科学家都应该阅读的 7 本免费编程书籍开始。
面向专业人士的 Python 注释
作者:堆栈溢出的人
这本 Python 书籍是我见过的最完整的 Python 指南之一。它是由栈溢出文档编译的,内容是由栈溢出的人编写的。
这本书广泛涵盖了你(很可能)会用到的 Python 的每个领域。我建议你不要从头到尾读一遍,而是把它作为你想进一步了解的某个主题的参考。
如果你不精通 Python,我推荐你深入阅读这本书。这本书有 816 页,提供的信息足以让你精通 Python。
您没有使用(但应该使用)的 20 个 Python 库
作者:Caleb Hattingh
Jukan Tateisi 在 Unsplash 上拍摄的照片
对于精通 Python 的程序员,我推荐阅读 Caleb Hattingh 的 20 个你不用的 Python 库。本书篇幅较短,涵盖了标准 Python 库、Python 系统工具、Web APIs 和一些通用库的基本库。
当您需要用 Python 编写多处理脚本或任何其他高级脚本时,这是一本很好的参考书籍。
面向对象设计的构建技巧
作者:史蒂文·f·洛特
乔治·帕甘三世在 Unsplash 上的照片
许多来自静态类型语言(如 Java 或 C)的程序员在很短的时间内就开始使用 Python 了。他们说“我输入的一切都能正常工作”或者“我一边说一边编码”。但是这种方法经常会导致无用的代码。Python 有它自己的怪癖。
另一边是来自数学背景的数据科学家,他们甚至没有听说过面向对象设计模式。
对于以上两组数据科学家,我建议做几个来自构建面向对象设计技能书的练习。它提供了一系列有趣的、相对复杂的面向对象设计练习。
作者就“为什么要读这本书?”
一些软件开发人员在尝试进行面向对象(OO)设计时发现自己停滞不前。作为程序员,他们已经理解了编程语言的语法,并拼凑了一些小例子。然而,要成为一名设计师往往很难迈出下一步。从语言功能的引导学习到自我指导的设计工作的过渡经常被忽视。程序员在没有适当技能或支持的情况下,不得不艰难地完成他们的第一个设计项目。
学习熊猫
作者:埃尔南·罗哈斯
Pandas 成为 Python 中数据科学的事实上的标准。学熊猫这本书是用 Jupyter 笔记本写的,并附有文字。
它从如何创建数据框架的基本课程开始,以创建 Excel 报表结束。它的目标是那些仍在熟悉熊猫的初级数据科学家。
要了解更多先进的熊猫技巧,我建议你查看我的熊猫系列进行数据分析:
从提示和技巧,如何不指南到与大数据分析相关的提示,熊猫文章的精选列表。
medium.com](https://medium.com/@romanorac/pandas-data-analysis-series-b8cec5b38b22)
会话 Git
作者:艾伦·霍恩
许多初级数据科学家不知道最佳编码实践,其中之一就是 Git。我已经在我的 5 个数据科学家应该学习的技能文章中写了这个话题。
有哪些数据科学家在网络课程或大学里学不到的?了解这 5 项技能的基础知识会让你…
towardsdatascience.com](/5-skills-data-scientists-should-learn-27d186820d17)
Conversational Git 是一本令人惊叹的书,以一种可理解的方式展示了 Git 中的基本操作。我建议你花一个下午的时间浏览这本书。花一些时间学习 Git 是一项很好的投资,因为它会带来更好的开发实践。
如果你只是需要一个 Git 速成班,查看一下 Git 指南,它以一种有趣的方式介绍了基本的 Git 操作。
给专业人士的 Bash 笔记
作者:堆栈溢出的人
与 Git 一样,如果您打算长期留在软件开发领域,学习 Bash 也是一项不错的时间投资。Git 和 Bash 会一直在这里!
Bash Notes for Professionals是一本关于 Bash 的综合书籍。它涵盖了您需要了解的关于 Bash 的所有内容。
阅读和学习 Bash 可能会很乏味,所以请将这本书作为参考。随着时间的推移,你会做得更好的。
对于不熟悉 Bash 的初级软件开发人员,我建议花些时间通读这本书并学习 Bash 基础知识。有一点是肯定的——你迟早会遇到巴什。
探索烧瓶
作者:罗伯特·皮卡德
让一个机器学习模型在 Jupyter 笔记本上进行预测是很酷的!你知道什么更酷吗?拥有一个模型在云中进行预测的 Web 应用程序!
Explore Flask 是一本关于用 Flask 开发 web 应用程序的最佳实践和模式的书。普通的烧瓶应用程序有很多部分。这本书试图展示如何用 Flask 做事情的“正确方法”。
您想了解如何使用 Flask 在云中部署机器学习模型吗?那你应该查一下我的课程:
一步一步的指导,将告诉你如何训练一个机器学习模型,建立一个网络应用程序,并部署到…
medium.com](https://medium.com/@romanorac/hands-on-data-science-course-e764853f516b)
在你走之前
在 Twitter 上关注我,在那里我定期发布关于数据科学和机器学习的消息。
照片由Courtney hedge在 Unsplash 上拍摄