编写更好代码的 12 个 Python 技巧和诀窍
通过掌握最新的 Python 特性、技术、技巧和诀窍来提高代码的质量👨💻👩💻
克里斯·里德在 Unsplash 上拍摄的照片
1.f 弦
F-Strings 提供了一种简洁的和方便的方式来将 Python 表达式嵌入到字符串文字中用于格式化。****
首先,让我们定义两个变量name
和age
,它们将包含在我们的print
语句中。
name = "Pavel"
age = 23
为了不处理字符串连接或在打印语句中使用逗号,可以使用 Python 3.6 中发布的改进的字符串格式化语法**“f-Strings”**。
简单地在带有变量或表达式的字符串前面加上一个小写或大写字母 “f” 在花括号内。
F-Strings 是一种很棒的格式化字符串的新方法,比其他格式化方法更容易阅读,更快,更简洁,更 T42,更不容易出错。
2.帮助功能
Python help
函数用于查找模块、函数、类、关键字等的文档。
只需将中的一个对象传递给help
函数,即可检索该对象的文档**😗*
3.找出任何物体的大小
默认的sys
模块包含一个函数getsizeof
,它接受一个对象,并以字节返回其大小。该对象可以是任何类型的****。****
例如:
只有的内存消耗的直接归于被占对象,而不是它所指对象的内存消耗。****
另一个例子:
4.比较运算符的链接
通常要检查比多的两个条件,你就必须使用逻辑运算符,比如and
//or
if a < b and b < c:
在 Python 中,有一种更好的方式来编写它,使用比较操作符链接**。**
运算符的链接可以写成如下形式:
if a < b < c:
例如:
5.列出理解
****列表理解是另一种更优雅的制作列表的方式。
不用创建一个空的列表和添加每个元素到结束**,你可以简单的定义列表和它的内容在相同的 时间如下格式:**
new_list = [**expression** for **item** in **iterable** (if **conditional**)]
例如:
另一个例子(有条件):
6.字符串乘法
在 Python 中,不仅数字可以相乘,字符串也可以相乘。
例如:
7.在一行中分配多个变量
通过用逗号分隔变量和值**,可以将多个值分配给多个变量😗*
当析构** / 解包序列,如列出或元组时,这也是一种更为优雅的方式将序列元素分配给单个变量,因为不需要使用循环或单独索引序列的每个元素。**
8.就地交换变量
在许多其他编程语言中,交换两个或两个或更多变量的值只能通过定义一个额外的temp
(临时)变量来完成。****
假设你想交换 x 和 y:
temp = x
x = y
y = temp
在 Python 中,有一个简单的单行构造来交换变量,类似于单行中将值分配给多个变量的概念。****
以下代码与上述代码相同,但没有使用任何临时变量:
9.创建枚举
Enum 是 Python 中用于创建枚举的类,枚举是附加在唯一**、常量值上的一组符号名。**
为了创建一个 枚举 ,需要创建一个类,这个类是你想要的 枚举 的名称**。**
剩下要做的就是列出T21 变量和设置它们等于你想要的值**😗*
以访问枚举成员Paul
为例,你可以只做Person.Paul
,它将返回0
。
在 Python 中,上面的例子可以通过在旁边列出变量并设置它们等于范围函数而被缩短为**😗*
10.列举
通常当循环遍历一个列表时,你不仅想访问列表中位置为的索引,还想访问实际的元素。****
让我们定义一个字符的列表**😗*
x = ['a', 'b', 'c']
代替循环通过它的标准方式,访问元素和索引:
使用枚举
Enumerate 是 Python 的一个内置函数,允许我们循环遍历一个可迭代的并拥有一个自动计数器**。它本质上是将列表中的每个元素与对应的索引配对。大部分新人甚至一些高级程序员都没有意识到。**
您可以将变量i
和v
更改为您喜欢的变量名。比如for **index, count** in enumerate(x)
。
11.Dir 函数
dir()
是 Python3 中一个强大的内置函数,它返回任何对象的属性和方法的列表,如函数、模块、字符串、列表、字典等。
这在几乎没有关于模块的信息时非常有用,有助于更快地学习新模块。
例如:
dir()
通常用于调试目的。当分别处理dir()
许多dir()
类和函数时,dir()
列出所传递参数的所有属性的能力非常有用。
12.参数解包
有时被称为 Splat 或 Scatter 操作符*****
在一个需要分离** 位置 参数的函数调用中需要对列表/元组中的参数进行解包时起作用。**
例如,内置的range()
函数期望单独的 开始 和 停止 参数。在编写函数调用时,可以使用*
操作符来将参数从列表或元组中解包**😗*
让我们定义一个简单的列表x = [1,2,3,4,5]
解包操作符的一个常见例子是使用print
:
print(*x) // Result: 1 2 3 4 5
这只是简单地打印出列表中的每个元素除了彼此由空格分隔**,因为解包操作符获取列表中的所有元素,将它们作为参数传递给,所以上面代码的翻译将是print(1,2,3,4,5)
。**
这个 Python 技巧在函数中经常使用,将方法调用接收的所有参数打包到一个单变量中。****
例如:
上面的func
函数可以带一个无限量的自变量 ( args[0]
和args[1]
会分别给你第一个自变量和第二个自变量)。
类似地,字典可以用******
操作符传递关键字参数。
让我们定义一个名为person
的 Python 字典:
**person = {"**name**": "Paul", "**age**": 23, "**location**": "London"}**
您可以使用******
操作符将字典中的 传递给一个函数。
传入的字典将分解键键作为函数关键字参数,然后将值作为传递给该参数的实际值。
例如:
遗言
感谢您的阅读,希望这篇文章对您有用!
如果有你认为我应该包括的提示或其他建议,请评论。💬
编码快乐!💻☕️
展现 AI 真相的 12 个 XKCD 条
简笔画洞察假人工智能,反向图灵测试,超级智能,等等。
乔·奇恰雷利在 Unsplash 上的照片
XKCD ,一个 15 岁的“浪漫、讽刺、数学和语言的网络漫画家”,巧妙地将复杂的想法,如人工智能,提炼成简单的漫画。
XKCD 慷慨地允许带归属的重新打印,所以这里有 12 个 XKCD 条,展示了关于 AI 的真相。
生物神经网络与人工神经网络
你的大脑是一个由 860 亿个神经元组成的互联网络——如果你愿意,可以称之为神经网络。人工神经网络受到这种设计的启发,虽然最简单的构造——感知机——只是单个神经元,但现代神经网络(NNs)可以达到 10 亿个权重和数百万个神经元。
通过从数据中学习模式,神经网络可以完成从图像识别到预测的广泛任务。
然而,如果我们走得太远,我们可能会浪费时间来构建模型,而手动工作会更好。
一厢情愿、不稳定和寻找模式的冒险
towardsdatascience.com](/when-not-to-use-machine-learning-or-ai-8185650f6a29)
假 AI
从各方面来看,人工智能似乎无处不在。转向产品搜索、Twitter 或/r/startups,看起来好像每分钟都有新的人工智能解决方案冒出来。
但事实真的是这样吗——还是有些公司在“作弊”?事实证明,几家公司已经被抓到了,他们声称使用人工智能,但实际上是外包粗活。据《福布斯》报道,这些只是犯有“伪人工智能”罪的公司中的一部分:
- 汉森机器人公司
- X.人工智能
- 克拉拉实验室
人工智能是一个广泛的热门话题-从寻求实施人工智能系统的企业到…
www.forbes.com](https://www.forbes.com/sites/cognitiveworld/2020/04/04/artificial-or-human-intelligence-companies-faking-ai/#4112061c664f)
理论
虽然未来主义者和思想领袖可能会告诉你,但我们真的不知道超级智能人工智能创造出来后会发生什么。
会仁慈吗?恶毒?中立?无感觉但超级聪明?无论发生什么,都会让我们大吃一惊。
哲学的进步可能远比科学技术更难
towardsdatascience.com](/rights-of-sentient-artificial-beings-1ada7e7d3e6)
数据管道
建立数据管道并不容易。要构建数据产品,您需要能够从潜在的数百万用户那里收集数据,并近乎实时地处理结果。您的管道需要健壮、可伸缩、高效,并具有监控功能。
有多难,很多管道都不勾选所有的框。
对于分析和 ML 的成功,可扩展和高效的数据管道与可靠的供应线一样重要…
towardsdatascience.com](/scalable-efficient-big-data-analytics-machine-learning-pipeline-architecture-on-cloud-4d59efc092b5)
培养
通过训练神经网络——或者多次将训练数据传递给复合函数,以便学习模式——我们可以预测新数据。如果你训练的时间不够长,你的模型将会“不合适”,或者根本没有学习到数据中的模式。
你可能最终会有一个会说胡言乱语的聊天机器人,或者一辆只能直行的自动驾驶汽车。
了解您的代码…
towardsdatascience.com](/epoch-vs-iterations-vs-batch-size-4dfb9c7ce9c9)
聊天机器人
Cleverbot 于 1997 年发布,所以有点像样的聊天机器人已经有很长的历史了。
然而,创造新的和独特的东西的人工智能和仅仅检索人类过去做过或说过的东西的人工智能之间有很大的区别——比如 Cleverbot。
公平地说,现代聊天机器人在技术上有了很大的进步,而且惊人地准确。
* [## 我尝试了脸书新的人工智能聊天机器人…太好了,太吓人了。|黑客正午
我:嘿,你最喜欢哪个棒球队?Bot:我真的没有喜欢的球队。我更像一个足球迷。什么…
hackernoon.com](https://hackernoon.com/i-tried-facebooks-new-ai-chatbot-its-so-good-its-scary-jn3332ez)*
数据➡️回答
尽管我们在人工智能方面取得了很多进展,但在可解释性方面做得相对较少。虽然“黑盒”人工智能的想法有点像神话——因为有很多方法可以解释结果——但对于大多数人工智能模型,尤其是深度学习,如何真正在引擎盖下工作,还没有完全的透明度或直觉。
在世界各地的诊所中,一种称为深度学习的人工智能开始补充或…
undark.org](https://undark.org/2019/12/04/black-box-artificial-intelligence/)*
感觉
阿西莫夫机器人第三定律是机器人必须保护自己的存在。核爆炸触发 EMP摧毁电子设备,因此遵守阿西莫夫定律的有感知能力的人工智能可能会寻求摧毁我们的核武器,而不是用它们来对付我们。
* [## 阿西莫夫的机器人定律,以及为什么人工智能可能不遵守它们
阅读为人工智能-人类合作设计的法律,并在此过程中一窥 NLP 的最新水平。
towardsdatascience.com](/asimovs-laws-of-robotics-and-why-ai-may-not-abide-by-them-e6da09f8c754)*
我们不应该担心人类吗?
有很多关于人工智能的恐惧,有些是合理的(人工智能可能会带来种族和性别偏见,人工智能可能会刺激失业,等等),其他人是不合理的(人工智能会杀了我们)。
然而,所有这些恐惧忘记了一件事:人类,而不是 AI,才是危险。不幸的事实是,历史上有多达 10 亿人在战争中丧生。
数据科学的民主化。“71%的消费者担心人工智能会侵犯他们的隐私。”当被问及他们的想法时…
hackernoon.com](https://hackernoon.com/why-ai-is-a-fear-driven-discipline-346zj3yrk)*
图灵检定
在关于人工智能的开创性论文 计算机械与智能 中,图灵问道:“机器能思考吗?”—或者,更准确地说,机器能模仿思维吗?
到目前为止,答案是“不”,但我们很可能有一天会实现这一目标,也许会通过一项新的测试来提高标准。
机器会思考吗?
towardsdatascience.com](/the-history-of-artificial-intelligence-the-turing-test-c1d6777d2970)*
人类更擅长…
随着每一个新的人工智能的进步,愤世嫉俗者不断改变目标,人工智能也不断赶上。
* [## 14 种深度和机器学习的使用使 2019 年成为一个新的人工智能时代。
比格根、塞勒根、斯泰尔根、高根、艺术育种家、德奥迪菲等。:我非常私人的清单(包括奖金)。
towardsdatascience.com](/14-deep-learning-uses-that-blasted-me-away-2019-206a5271d98)*
简单与不可能的任务
在计算机领域,外行人看似相似的两个任务可能很容易成为琐碎和几乎不可能的区别。今天,在上面这幅漫画诞生多年后,图像识别任务已经变得简单多了,但许多其他任务却极具挑战性。
例如,我们如何创建一个神经网络,它不仅可以解释,而且可以直观地解释?我们如何创建新的最先进的神经网络而不是简单地增加更多的计算、更多的数据和更多的参数?我们怎样才能创造出通用的人工智能,而不是狭义的人工智能?我们如何实现第 5 级自动驾驶——它可以处理像道路工人举着停止标志,同时通过眼神接触向你旁边的司机示意继续前进这样的事情?****
该领域有许多未解的问题,这使得它更加令人兴奋!
[## 那是只莺吗?Python 中 Keras CNN 的鸟类分类
有没有想过“那是什么鸟?”
towardsdatascience.com](/is-that-a-warbler-bird-classification-with-keras-cnn-in-python-db4606555a33)
想要更多这样的内容?
如果你想了解更多关于人工智能和数据科学的知识,请关注我的走向数据科学,以及我参与撰写的 Apteo 的数据科学博客。
阅读 Frederik Bussler 在《走向数据科学》中的文章。数据科学的民主化。Apteo 的顾问-无代码…
towardsdatascience.com](https://towardsdatascience.com/@frederikbussler)
2021 年你应该知道的 120+数据科学家面试问答
面试问题来自脸书、Yelp、亚马逊、谷歌、苹果、网飞等等
约瑟夫·巴里恩托斯在 Unsplash 上拍摄的照片
2020 年不是最伟大的一年,所以我想为什么不在 2021 年领先一步呢!
这篇文章有超过 120 个数据科学面试问题,来自世界上一些顶尖的科技公司,如脸书、谷歌、Yelp、亚马逊等等!
一定要 订阅 千万不要错过另一篇关于数据科学指南、诀窍和技巧、生活经验等的文章!
这篇文章和我以前的文章有什么不同?
- 更多问题!这篇文章不是 100 个问题,而是超过 120 个面试问题来帮助你准备。
- 更多 SQL!这一次,根据要求,有更多的一般 SQL 问题,而不是技术编码问题。
- 更多深度学习!这一次,关于神经网络和深度学习的问题更多了。
- 更多案例分析!有一堆 SQL 案例研究和业务案例研究,这样你就可以自己应用了。
- 更精致!更少的语法错误(希望如此),以及更少的错误。更多图片和图表!
这分为几个部分:
- 机器学习
- 结构化查询语言
- 统计、概率和数学
- 数据和业务分析
- 多方面的
- 个案研究
说到这里,祝你好运!
机器学习
问:线性回归需要哪些假设?如果这些假设中的一些被违反了呢?
有四个与线性回归模型相关的假设:
- **线性:**X 和 Y 的均值之间的关系是线性的。
- **同方差:**残差的方差对于 x 的任意值都是相同的。
- **独立性:**观测值相互独立。
- **正态:**对于 X 的任意固定值,Y 都是正态分布。
极端违反这些假设将使结果变得多余。对这些假设的小的违反将导致估计的更大的偏差或方差。
问:什么是共线性?什么是多重共线性?你是怎么处理的?
共线性是两个预测值之间的线性关联。多重共线性是两个或更多预测值高度线性相关的情况。
这可能是有问题的,因为它破坏了一个独立变量的统计意义。虽然它不一定对模型的准确性有很大影响,但它会影响预测的方差,并降低独立变量的解释质量。
您可以使用方差膨胀因子(VIF)来确定自变量之间是否存在多重共线性-标准基准是,如果 VIF 大于 5,则存在多重共线性。
一定要 订阅 千万不要错过另一篇关于数据科学指南、诀窍和技巧、生活经验等的文章!
问:线性模型的缺点是什么?
线性模型有几个缺点:
- 线性模型有一些强有力的假设,在应用中可能不成立。它假设线性关系、多元正态性、没有或很少多重共线性、没有自相关和同方差。
- 线性模型不能用于离散或二元结果。
- 您不能改变线性模型的模型灵活性。
问:什么是岭回归和套索回归,它们之间有什么区别?
L1 和 L2 正则化都是用于减少训练数据过拟合的方法。最小二乘法使残差平方和最小,这可能导致低偏差但高方差。
L2 正则化,也称为岭回归,最小化残差平方和加上λ乘以斜率平方。这个附加项被称为岭回归损失。这增加了模型的偏差,使得对训练数据的拟合更差,但是也减少了方差。
如果你取岭回归罚,用斜率的绝对值代替,那么你得到套索回归或者 L1 正则化。
L2 不太稳健,但有一个稳定的解决方案,而且总是一个解决方案。L1 更稳健,但是具有不稳定的解,并且可能具有多个解。
问:K 近邻是如何工作的?
作者创建的图像
K-最近邻是一种分类技术,其中通过查看最近的分类点对新样本进行分类,因此称为“K-最近”。在上面的例子中,如果 k=1,那么未分类的点将被分类为蓝点。
如果 k 值太低,它可能会受到异常值的影响。但是,如果它太高,可能会忽略只有几个样本的类。
问:如何为 k 均值选择 k?
您可以使用肘法,,这是一种用于确定 k 的最佳值的常用方法。实际上,您要做的是在图表上绘制 k 的每个值的平方误差(x 轴上的 k 值和 y 轴上的平方误差)。一旦图形制作完成,失真下降最多的点就是肘点。
作者创建的图像
以上面的图像为例,你可以看到当 k=3 时出现肘部,因此 k 应该等于 3。
问:为什么朴素贝叶斯“幼稚”?
朴素贝叶斯之所以是朴素的,是因为它有一个强有力的假设,即假设要素之间是不相关的,但事实通常并非如此。
问:SVM 的支持向量是什么?
支持向量是接触最大边距边界的数据点(见下文)。
作者创建的图像
什么是决策树中的修剪?
剪枝是机器学习和搜索算法中的一种技术,通过删除对实例分类几乎没有帮助的部分或分支来减少决策树的大小。
问:什么是随机森林?为什么朴素贝叶斯更好?
随机森林是一种基于决策树的集成学习技术。随机森林包括使用原始数据的自举数据集创建多个决策树,并在决策树的每一步随机选择一个变量子集。然后,该模型选择每个决策树的所有预测的模式。依靠“多数获胜”模型,它降低了单个树出错的风险。
作者创建的图像
例如,如果我们创建一个决策树,第三个,它会预测 0。但是如果我们依赖所有 4 个决策树的模式,预测值将是 1。这就是随机森林的力量。
随机森林提供了其他几个好处,包括强大的性能,可以模拟非线性边界,不需要交叉验证,并赋予功能重要性。
从过程和结果易于训练和理解的意义上来说,朴素贝叶斯更好。一个随机的森林看起来就像一个黑盒。因此,在实现和理解方面,朴素贝叶斯算法可能更好。但是,就性能而言,随机森林通常更强,因为它是一种集合技术。
问:什么时候你会使用随机森林来对抗 SVM,为什么?
为什么随机森林是比支持向量机更好的算法选择有几个原因:
- 随机森林允许您确定要素的重要性。SVM 不能这么做。
- 随机森林比 SVM 建造起来更快更简单。
- 对于多类分类问题,支持向量机需要一种 one-vs-rest 方法,这种方法扩展性差,占用内存多。
问:你认为 50 个小决策树比一个大决策树好吗?为什么?
问这个问题的另一种方式是“随机森林是比决策树更好的模型吗?”答案是肯定的,因为随机森林是一种集成方法,需要许多弱决策树来形成强学习器。随机森林更准确、更健壮,并且不容易过度拟合。
问:AdaBoosted 树和渐变 Boosted 树有什么区别?
AdaBoost 是一种增强的算法,类似于随机森林,但有几个显著的区别:
- AdaBoost 通常制作树桩森林(树桩是只有一个节点和两片叶子的树),而不是树木森林。
- 每个树桩的决策在最终决策中的权重并不相等。总误差少(精度高)的树桩会有更高的话语权。
- 树桩创建的顺序很重要,因为每个后续树桩都强调在前一个树桩中被错误分类的样本的重要性。
梯度增强在某种意义上类似于 AdaBoost,它构建了多棵树,其中每棵树都是基于前一棵树构建的。与 AdaBoost 构建树桩不同,Gradient Boost 构建的树通常有 8 到 32 片叶子。
更重要的是,Gradient 与 AdaBoost 在决策树的构建方式上有所不同。梯度增强从初始预测开始,通常是平均值。然后,基于样本的残差构建决策树。通过采用初始预测+学习率乘以残差树的结果来进行新的预测,并且重复该过程。
问:什么是偏差-方差权衡?
估计量的偏差是期望值和真实值之差。具有高偏差的模型往往过于简单,导致拟合不足。方差表示模型对数据和噪声的敏感度。具有高方差的模型会导致过度拟合。
因此,偏差-方差权衡是机器学习模型的一个属性,其中较低的方差导致较高的偏差,反之亦然。一般来说,可以找到两者的最佳平衡,使误差最小化。
作者创建的图像
问:解释什么是 bootstrap 抽样方法,并举例说明何时使用该方法。
从技术上讲,bootstrap 抽样法是一种使用带替换的随机抽样的重抽样方法。此处阅读更多。
它是随机森林算法以及其他集成学习算法的重要组成部分。
问:装袋和助推有什么区别?
Bagging 又称 bootstrap aggregating ,是用原始数据集的自举样本对同一学习算法的多个模型进行训练的过程。然后,像上面的随机森林示例一样,对所有模型的输出进行投票。
作者创建的图像
Boosting 是 bagging 的一种变体,其中每个单独的模型都是按顺序构建的,并迭代上一个模型。具体来说,任何被前一个模型错误分类的数据点都会在后一个模型中得到强调。这样做是为了提高模型的整体准确性。这里有一个图表,可以更好地理解这个过程:
作者创建的图像
一旦建立了第一模型,除了第二自举样本之外,还采用错误分类/预测的点来训练第二模型。然后,针对测试数据集使用集合模型(模型 1 和 2 ),并且该过程继续。
问:XGBoost 如何处理偏差-方差权衡?
作者创建的图像
XGBoost 是一种利用梯度推进算法的集成机器学习算法。本质上,XGBoost 就像是类固醇上的装袋和助推技术。因此,可以说 XGBoost 处理偏差和方差的方式类似于任何 boosting 技术。Boosting 是一种集成元算法,通过对许多弱模型进行加权平均来减少偏差和方差。通过关注弱预测和迭代模型,误差(从而偏差)减少了。类似地,因为它采用了许多弱模型的加权平均值,所以最终模型比每个弱模型本身具有更低的方差。
问:什么是交叉验证?
交叉验证本质上是一种用于评估模型在新的独立数据集上表现如何的技术。
交叉验证最简单的例子是将数据分为三组:训练数据、验证数据和测试数据,其中训练数据用于构建模型,验证数据用于调整超参数,测试数据用于评估最终模型。
问:假设您需要使用多元回归生成一个预测模型。解释你打算如何验证这个模型。
有两种主要方法可以做到这一点:
A)调整后的 R 平方。
r 平方是一种度量,它告诉你因变量的方差在多大程度上是由自变量的方差来解释的。更简单地说,当系数估计趋势时,R 平方表示最佳拟合线周围的散布。
然而,添加到模型中的每个额外的独立变量总是增加 R 平方值——因此,具有几个独立变量的模型可能看起来更适合,即使它不是。这就是调整后的 R 的用武之地。调整后的 R 补偿每个额外的独立变量,并且仅在每个给定变量将模型改进到超出概率可能的程度时才增加。这很重要,因为我们正在创建一个多元回归模型。
B)交叉验证
大多数人常用的方法是交叉验证,将数据分成三组:训练、验证和测试数据。见前面的回答。
问:在线学习和批量学习有什么区别?
批量学习,也称为离线学习,就是你学习一组组的模式。这是大多数人都熟悉的学习类型,在这种情况下,您可以获取一个数据集,然后一次性在整个数据集上构建一个模型。
另一方面,在线学习是一种一次吸收一个观察数据的方法。在线学习是数据高效的,因为数据一旦被消费就不再需要,这在技术上意味着你不必存储你的数据。
问:给出几种处理缺失值的方法
有多种方法可以处理空值,包括:
- 您可以完全忽略空值行
- 您可以用集中趋势的度量值(平均值、中值、众数)替换空值,或者用新的类别替换空值(如“无”)
- 您可以根据其他变量预测空值。例如,如果某一行的 weight 值为空,但它的 height 值为空,则可以用该给定高度的平均重量替换该空值。
- 最后,如果您正在使用自动处理空值的机器学习模型,则可以保留空值。
问:缺失数据的均值插补是可接受的做法吗?为什么或为什么不?
均值插补是用数据的均值替换数据集中的空值的实践。
均值插补通常是不好的做法,因为它没有考虑特征相关性。例如,假设我们有一个显示年龄和健康分数的表格,并假设一个 80 岁的老人缺少健康分数。如果我们从 15 岁到 80 岁的年龄范围内取平均健康分数,那么 80 岁的人看起来会比他实际应该得到的健康分数高得多。
第二,均值插补减少了数据的方差,增加了数据的偏倚。由于方差较小,这导致模型不太精确,置信区间较窄。
什么是混淆矩阵?
混淆矩阵,也称为误差矩阵,是用于评估分类模型性能的汇总表。正确和错误预测的数量用计数值汇总,并按每个类别细分。
由作者创建
问:什么是监督与非监督学习?
监督学习包括在标记为的数据集上学习,其中目标变量是已知的*。***
无监督学习用于从输入数据中得出推论和发现模式,而不需要参考标记的结果——没有目标变量。
问:什么是集成学习?
集成学习是一种多种学习算法联合使用的方法。这样做的目的是让您获得比单独使用单个算法更高的预测性能。随机森林就是一个例子。
问:如何识别异常值?
有几种方法可以识别异常值:
***Z 值/标准偏差:*如果我们知道一个数据集中 99.7%的数据位于三个标准偏差内,那么我们可以计算一个标准偏差的大小,乘以 3,并确定超出该范围的数据点。同样,我们可以计算给定点的 z 分数,如果它等于+/- 3,那么它就是异常值。
注意:使用该方法时,需要考虑一些意外情况;数据必须呈正态分布,这不适用于小数据集,并且过多异常值的存在会影响 z 值。
四分位距(IQR): IQR,用于构建箱线图的概念,也可用于识别异常值。IQR 等于第三个四分位数和第一个四分位数之差。然后,如果一个点小于 Q1-1.5 * IRQ 或大于 Q3 + 1.5IQR,则可以确定该点是否为异常值。这达到大约 2.698 个标准偏差。*
其他方法包括 DBScan 聚类、隔离森林和稳健随机采伐森林。
什么是内球?
一个内联者是一个数据观察,它位于数据集的其余部分内,是不寻常的或者是一个错误。由于它位于数据集中,通常比异常值更难识别,需要外部数据来识别它们。
问:如何处理异常值?
有几种方法:
- 如果离群值是垃圾值,则将其移除。
- 你可以试试不同的型号。例如,非线性模型处理异常值的方式可能与线性模型不同。
- 您可以标准化数据以缩小范围。
- 您可以使用计算异常值的算法,例如随机森林。
问:协同过滤和基于内容的过滤有什么相似之处?不一样?
在基于内容的过滤中,您使用对象的属性来查找相似的产品。例如,使用基于内容的过滤,电影推荐器可以推荐相同类型的电影或者由同一导演执导的电影。
在协同过滤中,你的行为会与其他用户进行比较,有类似行为的用户会决定向你推荐什么。给一个非常简单的例子,如果你买了一台电视,另一个用户买了一台电视和一个躺椅,你也会被推荐这个躺椅。
问:什么是主成分分析?解释你会用主成分分析来解决哪类问题。
从最简单的意义上来说,PCA 涉及将高维数据(例如 3 维)投影到更小的空间(例如 2 维)。这导致数据的维度降低(2 维而不是 3 维),同时保持模型中的所有原始变量。
PCA 通常用于压缩目的,以减少所需的内存并加速算法,以及用于可视化目的,使汇总数据更容易。
问:验证集和测试集之间有什么区别?
通常,验证集用于调整模型的超参数,而测试集用于评估最终模型。
问:如何避免过度拟合模型?
对于那些不知道的人来说,过度拟合是一种建模错误,当一个函数与数据过于接近时,会导致新数据被引入模型时出现高水平的错误。
有多种方法可以防止模型过度拟合:
- 交叉验证:交叉验证是一种用于评估模型在新的独立数据集上表现如何的技术。交叉验证最简单的例子是将数据分成两组:定型数据和测试数据,其中定型数据用于构建模型,测试数据用于测试模型。
- 正则化:当模型具有更高次多项式时,会发生过拟合。因此,正则化通过惩罚高次多项式来减少过拟合。
- 减少特征数量:你也可以通过减少输入特征的数量来减少过度拟合。您可以通过手动移除特征来实现这一点,或者您可以使用一种称为主成分分析的技术,该技术将高维数据(例如 3 维)投影到较小的空间(例如 2 维)。
- 集成学习技术:集成技术通过 bagging 和 boosting 将许多弱学习者转化为强学习者。通过装袋和增压,这些技术比它们的替代技术更容易过度适应。
问:在应用机器学习算法之前,数据争论和数据清洗的一些步骤是什么?
当数据争论和数据清理时,可以采取许多步骤。下面列出了一些最常见的步骤:
- ***数据剖析:*几乎每个人都从了解自己的数据集开始。更具体地说,您可以使用。形状和对数值变量的描述。描述()。
- ***数据可视化:*有时,用直方图、箱线图和散点图来可视化数据很有用,可以更好地理解变量之间的关系,也可以识别潜在的异常值。
- 语法错误:这包括确保没有空格,确保字母大小写一致,检查错别字。您可以使用。unique()或使用条形图。
- 标准化或规范化:根据您正在处理的数据集和您决定使用的机器学习方法,标准化或规范化您的数据可能会很有用,这样不同变量的不同尺度就不会对模型的性能产生负面影响。
- 处理空值:有多种方式来处理空值,包括完全删除具有空值的行,用均值/中值/众数替换空值,用新的类别(例如未知)替换空值,预测值,或者使用可以处理空值的机器学习模型。此处阅读更多。
- ****其他还有:去除无关数据,去除重复,类型转换。
问:你应该如何处理不平衡的二进制分类?
有许多方法可以处理不平衡的二进制分类(假设您想要识别少数类):
- 首先,你要重新考虑你用来评估模型的指标**。你的模型的准确性可能不是最好的衡量标准,因为我将用一个例子来解释为什么。假设 99 次银行取款不是欺诈,1 次取款是欺诈。如果你的模型只是简单地将每个实例归类为“非欺诈”,那么它的准确率将达到 99%!因此,您可能需要考虑使用精度和召回率等指标。**
- 另一种改善不平衡二进制分类的方法是通过增加错误分类少数类的成本。通过增加这样的惩罚,该模型应该更准确地对少数民族进行分类。
- 最后,你可以通过过采样少数阶级或者欠采样多数阶级来改善阶级的平衡。你可以在这里了解更多关于的信息。
问:精确和召回的区别是什么?
****回忆一下试图回答“正确识别实际阳性的比例是多少?”
Precision 试图回答“多大比例的肯定识别实际上是正确的?”
问:为什么均方差不是衡量模型性能的好方法?你有什么建议?
均方误差(MSE)对大误差给予相对较高的权重,因此,MSE 往往过于强调大偏差。更可靠的替代方法是 MAE(平均绝对偏差)。
问:解释什么是假阳性和假阴性。为什么这些对彼此很重要?举例说明什么时候假阳性比假阴性重要,什么时候假阴性比假阳性重要。
一个假阳性是当一个条件不存在时对其存在的不正确识别。
****假阴性是对实际存在的条件不存在的错误识别。
假阴性比假阳性更重要的一个例子是癌症筛查。与其说有人得了癌症,后来才发现没有,不如说有人没得癌症。
这是一个主观的论点,但从心理学的角度来看,假阳性可能比假阴性更糟糕。例如,彩票中奖的假阳性结果可能比假阴性结果更糟糕,因为人们通常并不期望彩票中奖。
问:用于选择正确变量的特征选择方法有哪些?
有两种类型的特征选择方法:过滤方法和包装方法。
过滤方法包括以下几种:
- 线性判别分析
- 方差分析
- 卡方检验
包装方法包括以下几种:
- 向前选择:我们一次测试一个特性,并不断添加它们,直到我们得到一个合适的为止
- 反向选择:我们测试所有的特性,并开始移除它们,看看哪个更好
问:简要解释一个基本的神经网络是如何工作的
在其核心,神经网络本质上是数学方程的网络。它接受一个或多个输入变量,并通过一个方程式网络,产生一个或多个输出变量。
作者创建的图像
在神经网络中,有一个输入层**,一个或多个隐藏层,以及一个输出层。输入层由一个或多个特征变量(或输入变量或独立变量)组成,表示为 x1,x2,…,xn。隐藏层由一个或多个隐藏节点或隐藏单元组成。节点就是上图中的一个圆圈。类似地,输出变量由一个或多个输出单元组成。**
作者创建的图像
就像我一开始说的,神经网络只不过是一个方程网络。神经网络中的每个节点由两个函数组成,一个线性函数和一个激活函数。这是事情变得有点混乱的地方,但是现在,把线性函数想成一些最佳拟合线。另外,把激活功能想象成一个电灯开关,它会产生一个介于 1 或 0 之间的数字。
问:为什么整流线性单位是一个很好的激活函数?
由作者创建
整流线性单元,也称为 ReLU 函数,已知是比 sigmoid 函数和 tanh 函数更好的激活函数,因为它执行梯度下降更快。请注意,在左侧的图像中,当 x(或 z)非常大时,斜率非常小,这会显著降低梯度下降的速度。然而,这不是 ReLU 函数的情况。
问:网络中的权重是如何初始化的?
神经网络的权重必须随机初始化,因为这是随机梯度下降的期望。
如果您将所有权重初始化为相同的值(即 0 或 1),那么每个隐藏单元将获得完全相同的信号。例如,如果所有权重初始化为 0,所有隐藏单元将获得零信号。
问:如果学习率设置得太高或太低会发生什么?
如果学习率太低,您的模型将训练得非常慢,因为在每次迭代中对权重的更新很少。因此,在达到最小值之前,需要进行多次更新。
如果学习率设置得太高,由于权重的剧烈更新,这会导致损失函数出现不期望的发散行为,并且可能无法收敛。
问:什么是递归神经网络?
递归神经网络,也称为 RNNs,是一类允许以前的输出用作输入,同时具有隐藏状态的神经网络。
它们通常用于识别数据中的序列模式,包括时间序列数据、股票市场数据等
问:激活功能的作用是什么?
激活函数的目的是将非线性引入神经元的输出。激活函数通过计算加权和并进一步加上偏差来决定一个神经元是否应该被激活。
结构化查询语言
问:聚合函数和窗口函数有什么区别?
窗口函数类似于聚合函数,它返回聚合值(如 SUM()、COUNT()、MAX())。
窗口函数的不同之处在于它不对结果集进行分组。输出中的行数与输入中的行数相同。
问:ROW_NUMBER 和 RANK 什么时候会给出不同的结果?举个例子。
对于特定的排序值,当分区内有联系时,ROW_NUMBER 和 RANK 将给出不同的结果。
示例:
****SELECT ROW_NUMBER() OVER(ORDER BY GPA) as ROW_NUMBER
SELECT RANK() OVER(ORDER BY GPA) as RANK****
由作者创建
更多类似问题, 查看 StrataScratch100 个 SQL 问题。
问:左连接和全外连接可能产生相同的结果吗?为什么或为什么不?
是的。如果第二个表中的每一个行都可以连接到第一个表,并且第一个表中的每一个行都可以使用左连接连接到第二个表,那么对于完全外连接,结果将是相同的。****
问:RANK 和 DENSE_RANK 有什么区别?
RANK 给出了您在有序分区中的排名。平局被分配相同的等级,跳过下一个等级。如果您看到下图,1 之后的下一个等级是 4,因为 3 行的等级是 1。
DENSE_RANK 也给出了有序分区内的等级,但是等级是连续的。如果有包含多个项目的等级,则不会跳过任何等级。您可以在下图中看到这一点,因为使用 DENSE_RANK,迈克尔的排名是 2,而不是 4。
DENSE_RANK 与 RANK 的示例
问:如果我按 SELECT 语句中没有的列进行分组,会发生什么情况?为什么会这样?
您的查询将不会返回任何结果。这是因为作为分组依据的列需要包含在 SELECT 语句中,以便查询可以识别给定列的值。
示例:
**SELECT COUNT(DISTINCT ID)
FROM table
GROUP BY Date**
因为 Date 没有包含在 SELECT 子句中,所以它不会返回任何内容。
问:滞后和超前在什么情况下特别有用?
当您想要比较不同时期的值时,滞后和超前函数非常有用。例如,如果您想将每周的销售额与前几周进行比较。
问:IFNULL 和 COALESCE 有什么区别?
有几个不同之处:
- ISNULL 只计算一次,因为是函数。另一方面,COALESCE 表达式的输入值可以计算多次。
- 每个结果表达式的数据类型决定是不同的。ISNULL 使用第一个参数的数据类型,而 COALESCE 遵循 CASE 表达式规则,返回优先级最高的值的数据类型。
- 最后,ISNULL 和 COALESCE 的验证是不同的。例如,ISNULL 的 NULL 值被转换为 int,这与必须提供数据类型的 COALESCE 不同。ISNULL 只接受 2 个参数,而 COALESCE 接受可变数量的参数。
问:临时表能让你的代码更干净、更快吗?是二者之一,还是没有?为什么?
通常,临时表既快又干净。它比子查询更容易阅读和理解,而且在速度方面,SQL 被优化用于连接而不是子查询。
问:编写 SQL 查询来查找两个事件之间的时间差。
首先,您可以使用 LEAD()或 LAG()函数创建一个要比较的新日期列。
然后,您可以使用 DATEDIFF 来获取这两个事件之间的时间差。
问:创建视图需要在数据库中存储吗?
不,视图不需要数据库中的任何存储,因为它在物理上并不存在。视图唯一需要的空间是存储视图定义的空间,而不是它所表示的数据。
问:在查询数据集时,如何处理空值?
当语句、 IFNULL 或 COALESCE 时,您可以使用 CASE 查询来处理 NULL。
统计、概率和数学
问:p 值的定义是什么?
p - 值是在假设零假设正确的情况下,获得一个检验的观察结果的概率;较小的 p 值意味着有更强的证据支持替代假设。
问:什么是协方差和相关性?它们之间有什么关系?
****协方差是一个变量与其均值的偏差与另一个变量与其均值的偏差相匹配程度的定量度量。
****相关性是两个变量之间关系的度量。它是两个变量的协方差,由每个变量的方差归一化。
问:什么是大数定律?
大数定律是一种理论,它指出随着试验次数的增加,结果的平均值将越来越接近期望值。
正面硬币 100,000 次的翻转次数应该接近 0.5 次而不是 100 次。
问:什么是中心极限定理?解释一下。为什么重要?
中心极限定理表明,无论总体分布的形状如何,随着样本量的增加,样本均值的抽样分布都接近正态分布。
中心极限定理很重要,因为它用于假设检验和计算置信区间。
问:什么是马尔可夫性质?
当对一个随机过程建模时,在这个随机过程中,一个主体随时间做出随机决策,这样的假设被称为马尔可夫属性** 。**
问:什么是统计能力?
“统计功效”是指二元假设的功效,即假设替代假设为真,测试拒绝零假设的概率。
问:什么是混杂变量?
混杂变量或混杂因素是一种既影响因变量又影响自变量的变量,导致虚假关联,即两个或更多变量相关但无因果关系的数学关系。
问:实验数据如何与观测数据对比?
观察数据来自观察研究,即在没有干预的情况下观察某些变量,并试图确定是否存在相关性。
****实验数据来自实验研究(带干预),就是你控制某些变量并保持它们不变,来确定是否有因果关系。
问:解释选择偏差(关于数据集,而不是变量选择)。为什么重要?丢失数据处理等数据管理程序如何使情况变得更糟?
****选择偏倚是指在选择个人、群体或数据进行分析时,没有实现适当的随机化,最终导致样本不能代表总体的现象。
理解和识别选择偏差是很重要的,因为它会严重扭曲结果,并提供关于特定人群的错误见解。
选择偏差的类型包括:
- 抽样偏差:非随机抽样导致的有偏差样本
- 时间间隔:选择支持预期结论的特定时间范围。例如,在临近圣诞节时进行销售分析。
- 暴露:包括临床易感性偏倚、原发性偏倚、适应症偏倚。这里阅读更多**。**
- 数据:包括摘樱桃、压制证据、证据不全的谬误。
- 流失:流失偏倚类似于生存偏倚,即只有那些在长期过程中“存活”下来的人才会被纳入分析,或者类似于失败偏倚,即那些“失败”的人才会被纳入分析
- 观察者选择:与人择原理有关,这是一种哲学上的考虑,即我们收集的关于宇宙的任何数据都要经过过滤,为了使它可以被观察到,它必须与观察它的有意识和有智慧的生命兼容。
处理缺失数据会使选择偏差变得更糟,因为不同的方法会以不同的方式影响数据。例如,如果您用数据的平均值替换空值,您就增加了偏差,因为您假设数据并不像实际可能的那样分散。
问:内插法和外推法的区别是什么,为什么它很重要?
****插值是指使用一组观察值内的输入进行预测。
****外推是指使用一组观察值之外的输入进行预测。
了解两者的区别很重要,因为内插法通常比外推法更准确。
问:举一个例子,中间值比平均值更好衡量
当有许多异常值正或负地扭曲了数据时。
问:什么是生存偏差?
在分析中只包括或排除那些在长期过程中“幸存”下来的样本,从而产生有偏差的样本的现象。
Sreenivasan Chandrasekar 提供的一个很好的例子如下:
“我们注册健身房会员,参加几天。每当我们去健身房时,我们看到许多健康、积极、每天锻炼的人的相同面孔。几天后,我们变得沮丧,为什么我们不能坚持我们的时间表和动机超过一周,而我们在健身房看到的大多数人可以。我们没有看到的是,许多注册健身房会员的人也在一周后停止了健身,我们没有看到他们。”
问:给我介绍一下概率基础知识
八大概率法则
- 规则#1:对于任何事件 A,0≤P(A)≤1;换句话说,一个事件发生的概率范围可以从 0 到 1。
- 规则 2:所有可能结果的概率总和总是等于 1。
- 规则#3: P(非 A)= 1—P(A);这个规则解释了一个事件的概率和它的补事件之间的关系。补充事件是指包含 a 中没有的所有可能结果的事件
- 规则#4:如果 A 和 B 是不相交事件(互斥),那么 P(A 或 B)= P(A)+P(B);这被称为不相交事件的添加规则
- 规则#5: P(A 或 B) = P(A) + P(B) — P(A 和 B);这就是所谓的一般加法法则。
- 规则#6:如果 A 和 B 是两个独立事件,那么 P(A 和 B)= P(A) P(B);这叫做独立事件的乘法法则。*
- 规则#7:给定事件 A,事件 B 的条件概率为 P(B|A) = P(A 和 B) / P(A)
- 规则#8:对于任意两个事件 A 和 B, P(A 和 B)= P(A) P(B | A);这叫做一般乘法法则*
计数方法
阶乘公式:n!= n x(n-1)x(n-2)x…x 2 x 1 当项目数等于可用位置数时使用。找出 5 个人可以坐在 5 个空座位上的总方法。
= 5 x 4 x 3 x 2 x 1 = 120
基本计数原理(乘法) 当允许重复且填充空位的方式数不受之前填充的影响时,应使用该方法。有 3 种早餐、4 种午餐和 5 种甜点。组合总数= 5 x 4 x 3 = 60
排列:P(n,r)= n!/(n r)! 此方法用于不允许替换且项目排序重要的情况。一个代码有 4 个特定顺序的数字,数字范围从 0 到 9。如果一个数字只能用一次,有多少种排列?
P(n,r) = 10!/(10–4)!=(10 x 9 x 8 x 7 x 6 x 5 x 4 x 3 x2 x 1)/(6x 5 x 4 x 3 x2 x 1)= 5040
组合公式:C(n,r)=(n!)/[(n r)!r!] 当不允许替换且项目的排列顺序无关紧要时使用。要赢得彩票,你必须以 1 到 52 的任意顺序选出 5 个正确的数字。有多少种可能的组合?
C(n,r) = 52!/ (52–5)!5!= 2598960
问:什么是根本原因分析?你如何确定原因和相互关系?举例说明。
****根本原因分析是一种解决问题的方法,用于确定问题的根本原因
您可以使用简单的数据分析来确定相关性。然后,你可以通过进行实验来识别原因,以便所有其他变量都被隔离(理想情况下)。
问:你在赌场,有两个骰子可以玩。你每掷一次 5 就赢 10 美元。如果你一直玩到你赢了然后停止,预期的回报是多少?
作者创建的图像
我们假设每次你想玩的时候要花 5 美元。
两个骰子有 36 种可能的组合。在 36 种组合中,有 4 种组合会掷出 5(见蓝色)。这意味着有 4/36 或 1/9 的机会掷出 5。
1/9 的胜算意味着你会输八次,赢一次(理论上)。
因此,您的预期支出等于$ 10.00 * 1-$ 5.00 * 9 =-35.00。
问:给我 3 种类型的统计偏差,并用例子解释每一种。
- ****抽样偏倚是指由非随机抽样引起的有偏倚的样本。
举个例子,想象一个房间里有 10 个人,你问他们喜欢葡萄还是香蕉。如果你只调查了三位女性,并得出大多数人喜欢葡萄的结论,你就证明了抽样偏差。
图片由作者创建,图标由 Freepik 提供
- ****确认偏见:偏爱确认个人信念的信息的倾向。
- 存活偏差:在分析中只包括或排除那些在长期过程中“存活”下来的样本,从而产生有偏差的样本的现象。
问:解释什么是长尾分布,并提供三个具有长尾的相关现象的例子。为什么它们在分类和回归问题中很重要?
****长尾分布是一种重尾分布,它有一条(或多条)逐渐渐近消失的尾巴。
3 实际例子包括幂定律、帕累托原则(通常称为 80-20 法则)和产品销售(即最畅销的产品与其他产品相比)。
在分类和回归问题中注意长尾分布是很重要的,因为出现频率最低的值构成了总体的大多数。这最终会改变您处理异常值的方式,并且它也与一些假设数据正态分布的机器学习技术相冲突。
问:什么是 A/B 测试?实践中什么时候用?
A/B 检验是一种统计假设检验,用于 A 和 B 两个变量的随机实验。它通常用于产品开发和营销。
问:你如何控制偏见?
你可以做很多事情来控制和减少偏见。两个常见的事情包括随机化**,参与者被随机分配,以及随机抽样,每个成员被选中的概率相等。**
问:给定两个公平的骰子,得分总和为 4 的概率是多少?到 8?
滚动 a 4 有 4 种组合(1+3,3+1,2+2):
P(滚动 a 4) = 3/36 = 1/12
有滚安 8 的组合(2+6,6+2,3+5,5+3,4+4):
P(滚安 8) = 5/36
问:给出既不是高斯分布也不是对数正态分布的数据的例子。
- 任何类型的分类数据都不会有高斯分布或对数正态分布。
- 指数分布——例如,汽车电池的持续时间或地震发生前的时间。
问:如何评估洞察力的统计显著性?
您将执行假设检验来确定统计显著性。首先,你要陈述零假设和替代假设。其次,您将计算 p 值,即假设零假设为真,获得测试观察结果的概率。最后,您将设置显著性水平(alpha ),如果 p 值小于 alpha,您将拒绝 null 换句话说,结果具有统计显著性。
问:苏格兰的谋杀率从前年的 115 下降到了去年的 99。这种报道的变化真的值得注意吗?
由于这是一个泊松分布问题,均值=λ=方差,也就是说标准差=均值的平方根。
- 95%的置信区间意味着 z 值为 1.96
- 一个标准偏差= sqrt(115) = 10.724
因此置信区间= 115+/- 21.45 = [93.55,136.45]。由于 99 在这个置信区间内,我们可以假设这个变化不是很值得注意。
问:有多少种方法可以从一副 52 张牌中抽出 6 张牌?
回答
问:如果一个变量有 3 个不同的类别(香草、巧克力、草莓),表示它所需的虚拟变量的最小数量是多少?
你需要 2 个虚拟变量来代表 3 个不同的类别。例如:
- 巧克力→ x1=1,x2=0
- 香草→ x1=0,x2=1
- 草莓→ x1=0,x2=0
问:箱线图和直方图有什么区别?
虽然箱线图和直方图是用于显示数据分布的可视化工具,但它们传达信息的方式不同。
直方图是显示数值变量值的频率的条形图,用于估计给定变量的概率分布。它允许您快速了解分布的形状、变化和潜在的异常值。
箱线图表达了数据分布的不同方面。虽然您无法通过箱线图看到分布的形状,但您可以收集其他信息,如四分位数、范围和异常值。当您想要同时比较多个图表时,箱线图尤其有用,因为它们比直方图占用更少的空间。
问:ACF 和 PACF 的含义是什么?
要理解 ACF 和 PACF,首先需要知道什么是自相关或序列相关**。自相关着眼于给定时间序列与其自身滞后版本之间的相似程度。**
因此,自相关函数(ACF) 是一种工具,用于发现数据中的模式,具体来说,是指由各种时间滞后分隔的点之间的相关性。例如,ACF(0)=1 意味着所有数据点都与自身完美相关,ACF(1)=0.9 意味着一个点与下一个点之间的相关性为 0.9。
PACF 是偏自相关函数的简称。引用 StackExchange 中的一段文字,“它可以被认为是由若干个周期 n 分隔的两个点之间的相关性,但中间相关性的影响已被消除。”比如说。如果 T1 与 T2 直接相关,而 T2 与 T3 直接相关,则似乎 T1 与 T3 相关。PACF 将消除与 T2 之间的关联。
问:对于我们正在考虑的新功能,你会如何设计实验?什么样的指标是重要的?
作者创建的图像
我会进行 A/B 测试,以确定新特性的引入是否会在我们关心的给定指标上带来统计上的显著改进。度量标准的选择取决于功能的目标。例如,可以引入一个功能来提高转换率、web 流量或保留率。
首先,我会制定我的零假设(特征 X 不会改善度量 A)和我的替代假设(特征 X 会改善度量 A)。
接下来,我会通过随机抽样来创建我的控制组和测试组。因为 t 检验天生就考虑样本量,所以我不打算指定一个必要的样本量,虽然越大越好。
一旦我收集了我的数据,根据我的数据的特点,我会进行 t 检验,韦尔奇的 t 检验,卡方检验,或贝叶斯 A/B 检验,以确定我的控制组和测试组之间的差异是否有统计学意义。
问:在任何 15 分钟的间隔中,有 20%的概率你会看到至少一颗流星。你在一小时内看到至少一颗流星的可能性有多大?
15 分钟内看不到任何流星的概率:
= 1 — P(看到一颗流星)
= 1–0.2 = 0.8
一小时内看不到流星的概率:
= (0.8) ^ 4 = 0.4096
一小时内至少看到一颗流星的概率:
= 1 — P(没有看到任何星星)
= 1–0.4096 = 0.5904
问:你从 100 枚硬币中随机抽取一枚——1 枚不公平硬币(正面朝上),99 枚公平硬币(正面朝下),然后掷 10 次。如果结果是 10 头,硬币不公平的概率是多少?
这可以用贝叶斯定理来回答。贝叶斯定理的扩展方程如下:
假设选到不公平硬币的概率表示为 P(A),连续翻转 10 个头像的概率表示为 P(B)。那么 P(B|A)等于 1,P(B∣ A)等于 0。⁵ ⁰,P( A)等于 0.99。
如果填入等式,那么 P(A|B) = 0.9118 或者 91.18%。
问:你如何用一个骰子产生一个介于 1-7 之间的随机数?
如果你掷骰子两次,考虑两次掷骰子的情况,有 36 种不同的结果。如果我们排除组合(6,6),将有 35 种可能的结果。然后,您可以为从 1 到 7 的每个数字分配 5 种组合。
问:有一个游戏,给你两个公平的六面骰子,让你掷骰子。如果骰子上的数值之和等于 7,那么您将赢得 21 美元。但是,每次掷出两个骰子,你都必须支付 5 美元。你玩这个游戏吗?
掷出 7 的几率是 1/6。
这意味着期望支付 30 美元(5*6)赢得 21 美元。
取这两个数字,预期支付额为-$ 9(21–30)。
由于预期支出是负数,你不应该玩这个游戏。
问:我们有两种在 Newsfeed 中投放广告的选择。方案一:每 25 个故事中,就有一个是 ad。方案二:每个故事都有 4%的几率成为广告。对于每个选项,100 个新闻故事中显示的广告的预期数量是多少?
两种选择的预期赔率都是 4/100。
对于选项 1,1/25 相当于 4/100。
对于选项 2,100 的 4%是 4/100。
问:如果有 8 个重量相等的弹珠和 1 个稍重的弹珠(总共 9 个弹珠),需要称重多少次才能确定哪个弹珠最重?
作者创建的图像
需要称重两次(见上文 A 和 B 部分):
- 你将九个弹珠分成三组,每组三个,称其中两组的重量。如果天平平衡(选择 1),你知道重的弹球在第三组弹球中。否则,您将选择权重更大的组(选项 2)。
- 然后你将练习同样的步骤,但是你将有三组一个弹球,而不是三组三个。
问:在位置 A 找到一件商品的概率是 0.6,在位置 b 找到一件商品的概率是 0.8。在亚马逊网站上找到该商品的概率是多少?
我们需要对这个问题做一些假设才能回答。让我们假设在亚马逊上有两个可能的地方购买一件特定的商品,在位置 A 找到它的概率是 0.6,在位置 B 找到它的概率是 0.8。在亚马逊上找到该商品的概率可以这么解释:
我们可以把上面的话重新措辞为 P(A) = 0.6,P(B) = 0.8。此外,让我们假设这些是独立的事件,这意味着一个事件的概率不受另一个事件的影响。然后我们可以使用公式…
P(A 或 B) = P(A) + P(B) — P(A 和 B)
P(A 或 B) = 0.6 + 0.8 — (0.6*0.8)
P(A 或 B) = 0.92
问:只知道性别身高,你如何证明男性平均比女性高?
你可以用假设检验来证明男性平均比女性高。
零假设是男性和女性平均身高相同,而另一个假设是男性的平均身高高于女性的平均身高。
然后,您将收集男性和女性身高的随机样本,并使用 t 检验来确定您是否拒绝空值。
问:如果一个项目经理说他们想把新闻订阅的广告数量增加一倍,你如何判断这是不是一个好主意?
您可以通过将用户分成两组来执行 A/B 测试:一组是广告数量正常的对照组,一组是广告数量翻倍的测试组。然后,您将选择指标来定义什么是“好主意”。例如,我们可以说零假设是广告数量翻倍会减少花在脸书上的时间,另一个假设是广告数量翻倍不会对花在脸书上的时间有任何影响。但是,您可以选择不同的指标,如活跃用户数或流失率。然后,您将进行测试,并确定拒绝或不拒绝 null 的测试的统计显著性。
问:一个盒子里有 12 张红卡和 12 张黑卡。另一个盒子里有 24 张红牌和 24 张黑牌。你想从两个盒子中的一个里随机抽取两张卡片,一次抽取一张。哪个盒子得到同色卡片的概率更大,为什么?
有 24 张红卡和 24 张黑卡的盒子获得两张同色卡片的概率更大。让我们走过每一步。
假设你从每副牌中抽出的第一张牌是红色的 a。
这意味着在有 12 个红和 12 个黑的牌组中,现在有 11 个红和 12 个黑。因此,你再抽一张红色的几率等于 11/(11+12)或 11/23。
一副牌中有 24 个红和 24 个黑,那么就有 23 个红和 24 个黑。因此,你再抽一张红色的几率等于 23/(23+24)或 23/47。
由于 23/47 > 11/23,所以卡数较多的第二副牌有较大概率得到相同的两张牌。
问:如何判断给定的硬币是否有偏差?
这不是一个难题。答案很简单,就是进行假设检验:
- 零假设是硬币没有偏向,翻转头的概率应该等于 50% (p=0.5)。另一个假设是硬币有偏差,p!= 0.5.
- 抛硬币 500 次。
- 计算 Z 得分(如果样本小于 30,则需要计算 t 统计量)。
- 对比 alpha(双尾检验所以 0.05/2 = 0.025)。
- 如果 p 值>α,则不拒绝 null,硬币不偏。
如果 p 值<α,则 null 被拒绝,硬币有偏差。
让不公平的硬币变得公平
由于抛硬币是二进制的结果,你可以通过抛两次硬币来使不公平的硬币变得公平。如果你掷两次,有两种结果可以赌:正面跟着反面或者反面跟着正面。
P(正面) P(反面)= P(反面) P(正面)**
这是有意义的,因为每一次抛硬币都是一个独立的事件。这意味着如果你得到正面→正面或反面→反面,你需要重新抛硬币。
问:给你 40 张四种不同颜色的卡片——10 张绿卡、10 张红牌、10 张蓝卡和 10 张黄牌。每种颜色的卡片都从一到十编号。随机抽取两张牌。找出所选卡片不是相同号码和相同颜色的概率。
由于这些事件不是独立的,我们可以使用规则:
P(A 和 B) = P(A) * P(B|A),也等于
P(非 A 非 B) = P(非 A) * P(非 B |非 A)
例如:
P(非 4 非黄)= P(非 4) * P(非黄|非 4)
P(非 4 非黄)= (36/39) * (27/36)
P(非 4 非黄)= 0.692
所以,挑出来的牌不是同号同色的概率是 69.2%。
问:医院的感染率高于每 100 人-日感染 1 例被认为是高的。某医院在过去的 1787 人/天中有 10 例感染风险。给出医院是否低于标准的正确片面检验的 p 值。
由于我们查看的是给定时间段内发生的事件数量(感染数量),因此这是一个泊松分布问题。
在一个区间内观察到 k 个事件的概率
零(H0):每人每天 1 例感染
备选方案(H1): >每人每天 1 例感染
*k(实际)= 10 次感染
λ(理论)= (1/100)1787
p = 0.032372 或 3.2372% 计算使用。excel 中的 poisson()或 R 中的 ppois
由于 p 值< alpha (assuming 5% level of significance), we reject the null and conclude that the hospital is below the standard.
Q: You roll a biased coin (p(head)=0.8) five times. What’s the probability of getting three or more heads?
Use the General Binomial Probability formula to answer this question:
General Binomial Probability Formula
p = 0.8
n = 5
k = 3,4,5
P(3 头以上)= P(3 头)+ P(4 头)+ P(5 头)= 0.94 或 94%
问:假设出现在公交车站的人数为泊松分布,平均值为 2.5 人/小时。在四小时内最多出现三人的概率是多少?
x = 3
平均值= 2.5*4 = 10
使用 Excel…
p = poisson.dist(3,10,true)
p = 0.010336
问:艾滋病毒检测的敏感性为 99.7%,特异性为 98.5%。患病率为 0.1%的人群中的受试者获得阳性测试结果。测试的精确度是多少(即他是 HIV 阳性的概率)?
精度方程(PV)
精度=阳性预测值= PV
PV =(0.001 * 0.997)/[(0.001 * 0.997)+((1–0.001)*(1–0.985))]
PV = 0.0624 或 6.24%
问:你正在竞选公职,你的民意调查机构调查了数百人。他们中的 60 个人声称他们会投你的票。你能放松吗?
- 假设只有你和另一个对手。
- 另外,假设我们想要 95%的置信区间。这使我们的 z 值为 1.96。
置信区间公式
p-hat = 60/100 = 0.6
z * = 1.96
n = 100
这给了我们一个[50.4,69.6]的置信区间。因此,给定 95%的置信区间,如果你可以接受最糟糕的捆绑情形,那么你可以放松了。否则,你不能放松,直到 100 分中有 61 分说是。
问:盖革计数器在 5 分钟内记录 100 次放射性衰变。找到每小时衰变数的大约 95%的区间。
- 因为这是一个泊松分布问题,均值=λ=方差,这也意味着标准差=均值的平方根
- 95%的置信区间意味着 z 值为 1.96
- 一个标准偏差= 10
因此置信区间= 100 +/- 19.6 = [964.8,1435.2]
问:苏格兰的凶杀率从前年的 115 下降到了去年的 99。这种报道的变化真的值得注意吗?
- 因为这是一个泊松分布问题,均值=λ=方差,这也意味着标准差=均值的平方根
- 95%的置信区间意味着 z 值为 1.96
- 一个标准偏差= sqrt(115) = 10.724
因此置信区间= 115+/- 21.45 = [93.55,136.45]。由于 99 在这个置信区间内,我们可以假设这个变化不是很值得注意。
问:考虑双亲异性恋家庭的流感流行。假设父母中至少有一方患病的概率是 17%。父亲感染流感的概率为 12%,而母亲和父亲都感染该疾病的概率为 6%。母亲感染流感的概率有多大?
用概率的一般加法法则:
P(母亲或父亲)= P(母亲)+ P(父亲)— P(母亲和父亲)
P(母亲)= P(母亲或父亲)+ P(母亲和父亲)— P(父亲)
P(母亲)= 0.17+0.06–0.12
P(母亲)= 0.11
问:在感兴趣的人群中,9 名男性的样本产生了 1,100cc 的样本平均脑容量和 30cc 的标准偏差。这个新群体的平均脑容量的 95%学生 T 置信区间是多少?
样本的置信区间
假设置信度为 95%,自由度等于 8,t 值= 2.306
置信区间= 1100 +/- 2.306(30/3)
置信区间= [1076.94,1123.06]*
问:在六周的时间里,9 名受试者服用了减肥药。体重的平均差异(随访-基线)为-2 磅。要使 95% T 置信区间的上端点达到 0,体重差异的标准偏差必须是多少?
上限=平均值+ t 得分(标准偏差/sqrt(样本大小))
0 =-2+2.306 (s/3)
2 = 2.306 * s/3
s = 2.601903
因此,标准偏差必须至少约为 2.60,95% T 置信区间的上限才能达到 0。
数据和业务分析
问:如果 iOS 上 70%的脸书用户使用 Instagram,但 Android 上只有 35%的脸书用户使用 Instagram,你会如何调查这种差异?
有许多可能的变量会导致这种差异,我将检查一下:
- iOS 和 Android 用户的人口统计数据可能会有很大差异。例如,根据 Hootsuite 的调查,43%的女性使用 Instagram,而男性只有 31%。如果 iOS 的女性用户比例明显高于 Android,那么这可以解释这种差异(或者至少是部分差异)。这也适用于年龄、种族、民族、地点等
- 行为因素也会对差异产生影响。如果 iOS 用户比 Android 用户更频繁地使用手机,他们更有可能沉迷于 Instagram 和其他应用程序,而不是那些在手机上花费时间少得多的人。
- 另一个需要考虑的因素是 Google Play 和 App Store 有什么不同。例如,如果 Android 用户有明显更多的应用程序(和社交媒体应用程序)可供选择,这可能会导致用户的更大稀释。
- 最后,与 iOS 用户相比,用户体验的任何差异都会阻止 Android 用户使用 Instagram。如果这款应用对安卓用户来说比 iOS 用户更容易出错,他们就不太可能在这款应用上活跃。
问:在一个平台上的喜欢、用户和花费的分钟数在增加,但用户总数在减少。它的根本原因是什么?
一般来说,你会想从面试官那里获得更多的信息,但是让我们假设这是他/她唯一愿意提供的信息。
关注每个用户的点赞数,有两个原因可以解释为什么这个数字会上升。第一个原因是,随着时间的推移,用户的平均参与度普遍提高了——这是有道理的,因为随着使用该平台成为一种习惯性做法,久而久之的活跃用户更有可能成为忠实用户。每个用户点赞数会增加的另一个原因是分母,即用户总数,在减少。假设停止使用该平台的用户是不活跃的用户,也就是参与度和点赞数低于平均水平的用户,这将增加每个用户的平均点赞数。
上面的解释也适用于在平台上花费的时间。随着时间的推移,活跃用户变得越来越活跃,而很少使用的用户变得不活跃。总体而言,参与度的增加超过了参与度很低的用户。
更进一步说,有可能“参与度低的用户”是脸书能够检测到的机器人。但随着时间的推移,脸书已经能够开发出识别和删除机器人的算法。如果以前有大量的机器人,这可能是这种现象的根本原因。
问:脸书发现赞数每年增长 10%,为什么会这样?
给定年份的总赞数是用户总数和每个用户的平均赞数的函数(我称之为参与度)。
用户总数增加的一些潜在原因如下:由于国际扩张而获得的用户以及随着年龄增长而注册脸书的年轻群体。
参与度增加的一些潜在原因是用户对应用程序的使用增加,用户变得越来越忠诚,新的特性和功能以及用户体验的改善。
问:改变基本会员费会对市场产生什么影响?
让我们举一个主要会员费上涨的例子——有两方参与,买方和卖方。
对于买家来说,提高会员费的影响最终取决于买家需求的价格弹性。如果价格弹性很高,那么给定的价格上涨将导致需求大幅下降,反之亦然。继续购买会员费的买家可能是亚马逊最忠诚和最活跃的客户——他们也可能更加重视 prime 产品。
卖家将受到打击,因为现在购买亚马逊一篮子产品的成本更高了。也就是说,一些产品将受到更严重的打击,而其他产品可能不会受到影响。亚马逊最忠实的顾客购买的高端产品可能不会受到太大影响,比如电子产品。
问:如何定义/选择指标?
没有放之四海而皆准的标准。选择用于评估机器学习模型的度量取决于各种因素:
- 是回归还是分类任务?
- 商业目标是什么?精确度与召回率
- 目标变量的分布是什么?
可以使用的指标有很多,包括调整后的 r 平方、MAE、MSE、准确度、召回率、精确度、f1 分数等等。
问:你正在为每个月上传的用户内容编写一份报告,并注意到 10 月份的上传量有一个峰值。特别是图片上传的高峰。您可能认为这是什么原因造成的,您将如何测试它?
照片上传数量激增的潜在原因有很多:
- 一项新功能可能已经在 10 月份实施,它涉及上传照片,并获得了用户的大量关注。例如,提供创建相册能力的功能。
- 同样,有可能之前上传照片的过程不直观,在 10 月份得到了改善。
- 可能有一场病毒式的社交媒体运动,包括持续了整个 10 月的上传照片。八月天,但更具扩展性的东西。
- 这有可能是因为人们上传了自己穿着万圣节服装的照片。
测试的方法取决于尖峰的原因,但是您可以进行假设测试来确定推断的原因是否是实际原因。
多方面的
问:定义以下术语:提升、KPI、稳健性、模型拟合、实验设计、80/20 法则?
****提升:提升是针对随机选择目标模型测量的目标模型的性能的度量;换句话说,lift 告诉你你的模型在预测事物方面比没有模型时好多少。
KPI 代表关键绩效指标,这是一个可衡量的指标,用于确定公司实现其业务目标的情况。错误率。
****健壮性:健壮性通常指系统处理可变性并保持有效的能力。
****模型拟合:指一个模型对一组观察值的拟合程度。
****实验设计:也称为 DOE,是在假设反映变量的条件下,对任何旨在描述和解释信息变化的任务的设计。[4]本质上,实验的目的是根据一个或多个输入(独立变量)的变化来预测结果。
****80/20 法则:又称帕累托原理;80%的结果来自 20%的原因。80%的销售额来自 20%的顾客。
问:定义质量保证和六西格玛。
****质量保证:一项或一组活动,旨在通过减少错误和缺陷来维持期望的质量水平。
****六西格玛:一种特定类型的质量保证方法,由一套用于过程改进的技术和工具组成。六西格玛流程是指所有结果的 99.99966%没有缺陷。
个案研究
案例研究 1:调查用户参与度的下降
要打开 Mode 的 SQL 编辑器,请转到 此链接 并点击显示“打开另一个模式窗口”的超链接。
链接到案例 。
本案例的目的是确定 Yammer 项目用户参与度下降的原因。在深入研究这些数据之前,您应该先阅读一下 Yammer 的概述这里的。您应该使用 4 张表。
到案例的链接将为您提供关于问题、数据和应该回答的问题的更多细节。
如果您需要指导,请点击此处查看我是如何完成这个案例研究的。
案例研究 2:了解搜索功能
链接到案例 。
这个案例更侧重于产品分析。在这里,您需要深入研究数据,确定用户体验是好是坏。这个案例的有趣之处在于,由你来决定什么是“好”和“坏”以及如何评估用户体验。
案例研究 3:验证 A/B 测试结果
链接到 。
最实际的数据科学应用之一是执行 A/B 测试。在本案例研究中,您将深入研究 A/B 测试的结果,其中对照组和治疗组之间存在 50%的差异。在这种情况下,您的任务是在彻底分析后验证或否定结果。
感谢阅读!
如果你喜欢这篇文章,请务必 订阅 千万不要错过另一篇关于数据科学指南、技巧和提示、生活经验等的文章!
恭喜你。你坚持到了最后。我希望你觉得这很有用,因为我花了几个小时在这上面。让我知道你希望下次在评论中看到更多的内容。
一如既往,我祝您在数据科学领域取得最大成就!
不确定接下来要读什么?我为你选了另一篇文章:
** [## 如果我可以重新开始,我会如何学习数据科学(两年内)
尽可能有效地学习数据科学的指南
towardsdatascience.com](/how-id-learn-data-science-if-i-could-start-over-2-years-in-b821d8a4876c)
查看 StrataScratch 了解更多数据科学面试问题:
[## 斯特拉斯克拉奇
编辑描述
platform.stratascratch.com](https://platform.stratascratch.com/?utm_source=blog&utm_medium=click&utm_campaign=terenceshin)
特伦斯·申
122 本来自 SpringerNature 的免费计算机科学 AI、ML、DL 和统计学书籍
庆祝斯普林格-自然发行 1000 本免费书籍。
在新冠肺炎疫情期间,开放存取运动得到了巨大的推动。领先的出版物之一 SpringerNature 已经将免费图书的数量增加到超过 1000 本!它包含了海量的书籍,仅计算机科学就有 122 本!
SpringerNature 的计算机科学分科书籍的部分内容。
SpringerNature-1000 本书的部分内容。
让我们探索一下在计算机科学的每个子学科中我们都有什么:
1。122 计算机科学书籍
斯普林格的计算机科学书籍的部分列表
2。26 人工智能书籍
斯普林格的人工智能书的部分清单
3。24 本软件工程书籍
Springer 的软件工程书籍的部分列表
4。19 通信网络书籍
斯普林格的通信网络书籍部分列表
5。22 信息系统应用书籍
斯普林格的信息系统应用书籍的部分列表
6。17 编程和操作系统书籍
Springer 的编程和操作系统书籍的部分列表
结论
斯普林格正在领导一场走向开放知识的伟大运动,这是对科学民主化的巨大贡献。希望看到免费发布的额外书籍和学术论文。
Ori Cohen 博士拥有计算机科学博士学位,主要研究机器学习。他是 TLV 新遗迹公司的首席数据科学家,从事 AIOps 领域的机器和深度学习研究。
数据科学家的 13 个 Conda 命令
此外,何时使用迷你康达,蟒蛇,康达锻造,以及皮普康达好时光😁
Python 是最受数据科学家欢迎的语言。🐍Conda 是使用 Python 为数据科学家创建虚拟环境和管理包的最常用工具。
不幸的是,找出在您的机器上安装 conda 的最佳方式以及何时从各种渠道安装软件包并不简单。在一个地方找到使用 conda 和 pip 的最有用的命令并不容易。☹️
在本文中,我将提供基本的 conda 命令和建议,以帮助您避免安装和使用方面的麻烦。🎉
有时 Python 虚拟环境和包感觉像一座火山。资料来源:pixabay.com
我们开始吧!🚀
需求
无论是在本地工作还是在云中的服务器上工作,您都需要一个虚拟环境来隔离您的 Python 版本和包,以便您可以:
- 对不同的项目使用不同的包版本
- 试用最新包装版本
- 获得与您的队友相同的 Python 和包版本,这样您的共享代码就可以类似地工作
我一定要用康达吗?
没有。在数据分析和科学计算中很常见,但在外面不那么常见。
有许多工具可以用来管理虚拟 Python 环境。康达、 Venv 、 pyenv、 pipenv 、诗仙、 Docker 、 virtualenv 最为突出。相信我,你不会想掉进这个兔子洞的。🐇
但是如果你必须这么做的话,这里有一个黑客新闻线索让你感受一下其中的乐趣。谷歌云的开发者倡导者 Yufeng G 在 conda、virtualenv 和 pyenv 上有一个很好的视频。
今天我们探索康达,所以让我们开始吧!
蟒蛇
Anaconda 既是软件背后的公司名称,也是功能齐全的软件发行版的名称。Anaconda 公司提供咨询和三个 Anaconda 版本:个人版、团队版和企业版。个体是普遍而强大的。这不像有免费软件。😉我用的就是这个。
发行版:Anaconda vs Miniconda
您可以选择下载并安装两个发行版之一: Anaconda 或 Miniconda 。
类似
- Anaconda 和 Miniconda 都将软件包管理器和虚拟环境管理器合二为一。
- 两者都可以安装在 Windows、Mac 或 Linux 系统上。
- 两者都安装了 Python 和 pip。
差异
- Anaconda 发行版安装了许多数据科学常用的 Python 包和工具。Miniconda 没有。这就是包含电池的大下载和没有为你安装很多软件包的最小下载的区别。
- 2020 年中期,Miniconda 的安装量在 50 到 90 兆字节之间,这取决于你的操作系统。
- 根据 2020 年中期的文档,Anaconda 发行版需要“至少 5 GB 的磁盘空间来下载和安装”。
- Anaconda 发行版安装程序还包括安装 GUI 和其他流行软件(如 VSCode 文本编辑器)的选项。
如果您正在开始使用 Python 进行科学计算,并且您的计算机上有足够的空间,我建议您下载 Anaconda 发行版。很多东西,但都是好东西。👍
如果你以前和康达合作过,我建议你下载 Miniconda。您可以随时添加您需要的包。😀
请参见 Anaconda 的安装说明,此处为,Miniconda 的安装说明,此处为。
资料来源:pixabay.com
Conda 命令
如果您安装了 Anaconda 发行版,您可以使用 GUI 安装程序,但是我建议使用命令行界面来帮助您更快地工作。你毕竟是一个程序员(或者即将成为一个程序员)!😉
让我们看看创建和管理 conda 环境的常见 conda 命令。无论您安装的是 Anaconda 还是 Miniconda,一切都是一样的。在这一点上都是康达。😀
创造康达环境
conda create -n myenv pandas jupyterlab
创建一个名为 myenv 的新 conda 环境,在 conda 主频道上提供最新版本的 Python。将 pandas 和 jupyterlab 软件包安装到环境中。-n
是--name
的简称。
康达要求确认包装变化。当询问您是否要继续时,按y
。
conda create -n myclone --clone myenv
将名为 myenv 的环境复制到名为 myclone 的新环境中。所有的包裹都随车而来!🚙
conda create -n myenv python=3.8
用指定的 Python 版本创建一个名为 myenv 的新 conda 环境。安装了 Pip 和大约 15 个其他软件包。
我保证这本指南里只有蛇的图片。资料来源:pixabay.com
管理 conda 环境
conda activate myenv
—激活 myenv 虚拟环境。
您可以知道您处于一个活动的虚拟环境中,因为您的命令行提示符将以括号中的虚拟环境名称开始。像这样:
(base) Jeffs-MBP:~ jeffhale$
默认的 conda 环境被命名为 base 。
Conda 可以设置为在您打开终端时激活环境。安装软件时,安装程序会询问您是否要“通过运行 conda init”来初始化它。我建议你说是,这样你的 shell 脚本就会被修改。然后,您将在 conda 环境中开始您的终端会话。
无论您在 on CLI 中的哪个位置导航,您都将处于激活的 conda 虚拟环境中。🎉
conda deactivate
—停用当前环境。现在你不会在虚拟环境中。你所处的康达环境仍然存在,你只是不在其中。👍
conda env list
—列出康达环境。
conda env remove --name myenv
—移除 myenv conda 环境。永远删除。
资料来源:pixabay.com
管理活动环境中的包
在活动的 conda 环境中使用这些命令。这些是我最常用的 conda 命令。😀
conda list
—列出活动环境中已安装的软件包。输出包括软件包版本和安装软件包的 conda 通道。👍
康达包装
conda install pandas
—从 conda 主频道下载并安装 pandas 包。
conda install -c conda-forge pandas
—从 conda-forge 主频道下载并安装 pandas 包。
conda-forge 频道是“一个社区主导的菜谱集合,为 conda 包管理器构建基础设施和发行版。”当一个包在主通道上不存在或者主通道上的版本没有你想要的新时,使用 conda-forge 通道。在康达主频道之前,康达-福吉上的软件包经常会更新。☝️
你也可以指定一些其他的渠道,但是康达-福吉是你会发现很多包的地方。
conda update pandas
—从康达主频道下载并安装最新的熊猫包。
conda update all
—下载并安装所有已安装软件包的最新版本。如果你有很多过时的包,速度会很慢。⚠️
conda uninstall pandas
—在您的 conda 环境中卸载 pandas 软件包。
点
Pip 是最常见的软件包安装程序。它与 Python 一起发布。
当处于活动 conda 环境中时,pip 会将软件包安装到该活动 conda 环境中。⚠️
pip install -U pandas
—从 Python 包索引 PyPI 安装或更新 pandas 包。-U
指定更新所有依赖包。
pip uninstall pandas
—卸载 pip 安装的 pandas 包。
PyPI 是找到 Python 包最常见的地方。PyPI 经常有不在 conda 或 conda-forge 上的包。PyPI 通常首先获得最新版本的包。
偶尔 conda 会有不在 PyPI 上的包,但这并不常见。
Conda 和 PyPI 包通常可以很好地配合使用。🎉
确保如果你正在安装来自 PyPI 的软件包版本,你还没有从 conda 安装相同的软件包。如果你已经安装了,那么先卸载 conda 版本。否则康达不会用新的 PyPI 版本。默认情况下,conda 官方频道是优先级最高的频道,conda 将首先使用优先级较高的频道的软件包版本。☝️
conda 官方的建议是先尝试从主要的 conda 通道安装包,然后根据需要从 conda-forge 安装包,最后是 pip。这有助于避免冲突。一般来说,从这些来源中的任何一个安装都应该可以正常工作。
如果事情出了岔子
有时候事情会变得一团糟。一般来说,卸载软件包或创建一个新的 conda 环境是你所需要的,以解决这种情况。
如果不起作用,conda update conda
更新 conda 软件本身。
如果那不起作用,你可以卸载重新安装 conda。👍
有很多 conda 用户和大量的文档,所以一如既往,搜索引擎是你的朋友。😉
资料来源:pixabay.com
包装
我希望你喜欢这个康达概述。如果你有,请在你最喜欢的社交媒体上分享,这样其他人也可以找到它。😀
我写关于 Python 、 SQL 、 Docker 和其他技术主题的文章。如果你对这些感兴趣,请注册我的邮件列表,查看我的 60 多篇文章在这里你可以增长你的技能。👍
资料来源:pixabay.com
祝您愉快!
13 个重要的机器学习面试问题
赢得任何机器学习职位的面试
查尔斯·德鲁维奥在 Unsplash 上拍摄的照片
鉴于对机器学习领域专家的需求增加,越来越多的开发人员开始在这类面试中寻找常见问题。在这个故事中,我列出了我和其他开发人员在申请该领域工作时遇到的典型问题。
Q1。机器学习和深度学习有什么区别?
机器学习是一种使用算法组织数据,从中学习,并对现实世界的问题做出预测的实践。与为每个特定问题找到解决方案相比,机器使用大量数据进行训练,以自行找到解决方案。
深度学习是一种基于人脑原理的机器学习形式。简而言之,深度学习是一种实现机器学习的技术。神经网络是深度学习的重要组成部分,深度学习基于神经元互连的原理。
Q2。精度和召回是什么意思?
简单来说,精度就是相关条目数占条目总数的比例。精度表示相关结果的百分比。所以如果你在谷歌搜索“棕色狗”,十张图片中只有七张是棕色狗,那么精度就是 7/10=0.7。
recall 是所有相关实例中检索到的实例数。在这种情况下,我们从所有可用的正确条目中寻找显示给我们的正确条目。假设有十五页正确的关于棕色狗的内容。因为我们只得到 7 个,所以我们的召回率是 7/15=0.47。
Q3。F1 的分数是多少?你会如何使用它?
在统计分析中,F1 是测试准确性的度量。在机器学习的情况下,它指的是模型的性能。
它是以模型精度和召回率的加权平均值来计算的。接近 1 的结果最好,接近 0 的结果最差。当我们需要在精度和召回率之间寻求平衡,并且存在不均匀的类别分布时,F1 得分是最好的。
Q4。模型精度和模型性能哪个更重要?
这是一个相当简单的难题,可能有很多。模型精度只是模型性能的一部分。精度和性能成正比。因此,更好的性能导致更准确的预测。
Q5。给定一个数据集,如何决定使用哪种机器学习算法?
当然,没有一种更好的算法可以适用于每一种情况。这就是为什么有这么多,每一个都是针对某一个问题或数据集。要决定使用哪一个,请考虑以下问题:
- 数据集有多大?是连续的还是绝对的?
- 有标签的,无标签的,还是两者结合?
- 这个问题与关联、分类、聚类还是回归有关?
- 算法的目标是什么?
基于这些问题,以下是针对每种情况的一些算法示例:
- 连续输出->线性回归
- 分类输出->决策树,KNN,随机森林,逻辑回归,朴素贝叶斯
- 聚类输出-> K 均值聚类,层次聚类,PCA
- 非线性交互数据->升压、打包
- 输出是一个关联->先验
- 输出的是图像(音频)->神经网络
Q6。你最喜欢的算法是什么?两分钟之内解释清楚。
概括复杂观点并以简单易懂的方式解释它们的能力经常在面试中受到考验。对于这些类型的问题,确保你有几个你能很好解释的算法。此外,在短时间内练习解释它们。
Q7。如何处理数据集中丢失或损坏的数据?
如果在数据集中发现丢失或损坏的数据,可以删除这些行或列。或者,您可以选择用另一个值来替换它们。
例如,在 Pandas 中,isnull()
和dropna()
将帮助您找到丢失或损坏数据的数据列,并删除它们。您也可以使用fillna()
将这些值替换为零。
Q8。数组和链表有什么区别?
所有类型的面试都会测试数据结构,所以为此做好准备通常是个好习惯。
一个数组是一组相似的数据对象,以一个共同的变量名顺序存储。
链表是一种包含元素序列的数据结构,其中每个元素都链接到下一个元素。链表中的每一项通常包含两个字段:数据字段和到下一项的链接。
最显著的区别是这两者的存储方式。数组有固定的大小,必须在使用之前声明。另一方面,链表可以单独存储,所以它总是可以扩展的。
Q9。什么是决策树分类?
决策树以树形结构构建模型。数据被分解成更小的子集,这些子集遵循具有节点和分支的树的结构。数值和分类数据都可以用决策树来处理。
Q10。决策树中的修剪是什么?是怎么做到的?
修剪意味着通过删除树中多余或不重要的部分来简化或压缩决策树。它可以防止过度拟合,从而提高精度。
修剪有两种方式(方向):
- 自下而上—从树叶开始向上。
- 自上而下—从房间开始向下。
提到任何剪枝算法,例如减少错误剪枝,将展示对该概念的实际理解。确保快速解释,同时提及其中最重要的部分。
Q11。比较 K-均值和 KNN 算法。
- K-means 是无监督的。KNN 在自然界是受监督的。
- K-means 是一种聚类算法,而 KNN 是一种分类算法。
- 在 K-中,意味着每个聚类中的点是相似的,而聚类彼此不同。KNN 根据 K 个周围邻居对未标记的观察值进行分类。
Q12。你最近读过的机器学习论文有哪些?
这类问题旨在发现你是否真的对机器学习充满热情。跟上最新的科学文献来证明你对这个职位的兴趣是很重要的。
搜索一些可信的研究论文,并确保你很好地理解它们。一般来说,最好是阅读与你的研究和工作领域相关的文献。
Q13。你通常在哪里搜索数据集?
如果你真的对这个领域充满热情,你一定已经独立完成了几个项目。这个问题是用来更好地了解你的兴趣,这是一个展示你的知识和提及你过去的项目的机会。看看外面有什么,并准备好谈论它。
最后的想法
你可能已经注意到了,并不是面试中的每个问题都是为了测试你的编程技能。拥有适当的技能是必不可少的,然而,对概念的理解和对机器学习的普遍兴趣同样重要。
你永远不知道你会在面试中得到哪些确切的问题,然而,这些问题往往会重复出现。很有可能你会在下一次面试中遇到这些问题或类似的问题。一定要练习,花时间去理解这些概念。
参考资料:
[1] Copeland,M. (2016 年)。人工智能、机器学习和深度学习有什么区别?2020 年 8 月 27 日检索,来自https://blogs . NVIDIA . com/blog/2016/07/29/whats-difference-人工智能-机器学习-深度学习-ai/
[2]维尔马,E. (2020)。机器学习面试问答。检索于 2020 年 8 月 27 日,来自https://www . simpli learn . com/tutorials/machine-learning-tutorial/machine-learning-interview-questions
[3]霍尔,J. (2017)。机器学习:修剪决策树。2020 年 8 月 27 日检索,来自https://www . displayr . com/machine-learning-pruning-decision-trees/
130,780 点量子分类
使用真实世界数据集的量子分类
博士后研究员维沙尔·夏尔马博士最近通过 LinkedIn 短信问我关于量子分类的问题。我不会透露他的 5 列、26,156 行数据集的任何信息,除了它的大小——总共 130,780 个数据点——但我会透露我与他分享的修改后的算法。
介绍
量子计算和机器学习是两个截然不同的领域。虽然他们很好地互相恭维,但有可能只熟悉其中一个而不熟悉另一个。因此,在简要介绍量子分类之前,简要介绍一下分类可能是有益的。
对分类的一个过于简单的描述是,我们有许多被分成类(组)的数据点,我们有新的数据要分配给一个现有的组。通常,该新数据是单个数据点,就像已经分组在一起的所有其他单个数据点一样,尽管也可以将新组分配给现有组。
因此,量子分类是使用量子处理器或其模拟来执行这项任务。由于这两个领域与线性代数的关系,量子计算有望在机器学习任务中表现出色。
ibmq _ 16 _ 墨尔本
我最初的意图是在 NISQ 处理器和量子计算模拟器上运行这个算法,并比较运行时间,但很快就发现这是不可能的。
该电路将一个测试状态与一个等级进行比较。因为可用的量子位数量有限,所以每个类只能运行一次。
前五个量子位各自代表来自数据集的一个类别的一个特征,后五个量子位各自代表来自测试数据点的一个特征。最后一个量子位是用于交换测试的辅助量子位,用于确定测试数据与类数据的接近程度。每个 Fredkin 门(受控交换)使用 ancilla 量子位作为其控制,并使用代表与目标量子位相同特征的量子位。
这是传输电路的样子。Fredkin 门不仅会在传输过程中显著增加电路深度,而且处理器的有限连接性还需要许多额外的交换操作。
因为整体电路深度,结果毫无价值。当状态相同时,交换测试测量|0 >的概率为 1,当状态最大程度相反时,测量|0 >的概率为 0.5,但是测量| 0 >的概率远低于 0.5。那是错误的。
ibmq_qasm_simulator
因为 32 量子位 IBM Q Experience simulator 允许重置门(NISQ 处理器不允许),所以可以在一个电路中比较多个类别的测试数据。重置操作还减少了需要模拟的量子位的数量,这可以大大减少大型电路的运行时间。
第一轮没有使用重置门,因为量子位是刚刚初始化的,但下面是每个类别比较的工作方式:
- 初始化或重置类数据和测试数据量子位
- 使用 RY 旋转将数据映射到相应的量子位;因为每个类比较的测试数据保持不变,所以“set”块是一个简化 OpenQASM 代码的子例程
- 将每个测试特征与每个类特征进行比较;“test”块是一个子程序,它执行与上面的 ibmq_16_melbourne 电路所示相同的 Hadamard 操作和交换测试
- 在这个裁剪的电路中没有显示:测量控制量子位“ax”,这是用于交换测试的辅助量子位
算法
该算法需要适度的经典预处理。因为我收到了 CSV 文件中的数据,所以我在 Excel 中打开它并在那里进行计算。MIN、MAX 和 AVERAGE 等函数使用起来很简单,甚至连归一化函数也只是减法和除法。
- 计算每个要素的全局最小值和全局最大值
- 计算每个类每个要素的平均值
- 选择测试数据
- 使用全局最小值和最大值归一化平均值,并使用公式((输入-最小值)/(最大值-最小值))测试从 0 到 1 的数据点
- 将量子位围绕 y 轴旋转归一化值乘以π;对类别数据的每个特征使用一个量子位,对测试数据的每个特征使用一个量子位
- 使用交换测试逐个功能地将测试数据与类数据进行比较
- 测量| ^ 0 >概率最高的交换测试是最接近测试数据的类
当然,你可以在 Python 中完成所有这些,但是我更喜欢在 OpenQASM 中完成所有与量子计算相关的工作,这样就可以把重点放在电路上了。
了解数据
因为我对 SWAP 测试很熟悉,并且我相信这种算法应该可行,所以我发现了一个数据问题,这些数据可能对寻求其他机器学习方法有所帮助。简而言之,标准化的数据太接近了。因此,任何测试数据点都可能被归类为任何类别,就好像算法只是随机生成结果一样。没有一个测试结果是准确的。
幸运的是,可以选择一部分数据来解决这个问题,而不会影响结果。这允许规范化的值之间有一点空间,我终于开始看到准确的分类。
结果和结论
我通常在我的文章中包含直方图,但是这个项目需要太多的测试。相反,我将总结我的发现。
如果您直观地检查测试数据和类数据,您会看到该算法准确地将明显属于某个类的测试数据分类。当测试值介于类值之间时,精确度会降低。有些数据看起来可以用一种方式分类,但却用不同的方式标注。我对数据了解不多,不知道为什么会这样,但我不认为这是一个算法问题。数据点理所当然地更接近其他标签,而不是自己的标签。
未来工作
Sharma 博士最初询问了量子限制玻尔兹曼机器(QRBM),但我对交换测试更熟悉,所以我向他介绍了这种方法。当然,将我的方法与 QRBM 实现以及 scikit-learn 实现进行比较会很有趣。简单的 QRBM 似乎有可能在 NISQ 处理器上工作,这肯定会很有趣。
鸣谢
所有图片均来自 IBM Q Experience。
14 天隔离期间要做的 14 个数据科学项目
2020 年发展新技能和强化你的投资组合的终极项目清单
在 Unsplash 上由 Austin Distel 拍摄的照片
一定要 订阅 千万不要错过另一篇关于数据科学指南、诀窍和技巧、生活经验等的文章!
首先,我想对所有的护士、医生、杂货店店员、公共行政人员和其他任何冒着生命危险为社区服务的人大声疾呼。
我们不要认为这是理所当然的。把这段时间单独拿出来学习新技能,看书,提升自己。对于那些对数据、数据分析或数据科学感兴趣的人,我提供了一个 14 个数据科学项目的列表,你可以在业余时间做这些项目!
有三种类型的项目:
- 可视化项目
- 探索性数据分析(EDA)项目
- 预测建模
可视化项目
也许最快完成的项目是数据可视化!下面是三个有趣的数据集,你可以用它们来创建一些有趣的可视化效果,添加到你的文件夹中。
冠状病毒可视化
难度:容易
链接到数据集这里。
了解如何使用 Plotly 构建动态可视化,以显示冠状病毒如何像上面这样随着时间的推移在全球传播!Plotly 是一个了不起的库,它使数据可视化变得动态、吸引人和简单。
如果你想学习如何建立一个像上面这样的可视化,查看我的教程 这里 。
我的朋友 Jack 也写过一篇预测冠状病毒复苏的文章 这里 !
澳大利亚野火可视化
难度:容易
链接到数据集这里。
摘自 Vox
2019-2020 森林火灾季节,也被称为黑色夏天,由 2019 年 6 月开始的几次极端野火组成。据维基百科报道,这场大火烧毁了大约 1860 万公顷土地和超过 5900 栋建筑。
这是一个有趣的项目!使用 Plotly 或 Matplotlib 利用您的数据可视化技能来显示野火的规模和地理影响。
在这里 看看我的朋友杰克是如何预测巴西的野火模式 !
一定要 订阅 千万不要错过另一篇关于数据科学指南、诀窍和技巧、生活经验等的文章!
地表温度可视化
难度:容易-中等
链接到数据集这里。
有否认气候变化的人吗?创建一些数据可视化来显示地球表面温度如何随时间变化。你可以通过创建一个线形图或另一个动画 Choropleth 地图来做到这一点!
额外收获:创建一个预测模型,显示五十年后地球的预期温度。
探索性数据分析项目
探索性数据分析(EDA),也称为数据探索,是数据分析过程中的一个步骤,其中使用了多种技术来更好地理解所使用的数据集。
如果你想了解更多关于 EDA 的知识,可以查看我的指南 这里 !
纽约 Airbnb 数据探索
难度:中等
链接到数据集这里。
奥利弗·尼布赖特在 Unsplash 上拍摄的照片
自 2008 年以来,客人和主人一直使用 Airbnb 来拓展旅行的可能性,并提供更个性化的体验世界的方式。该数据集包含 2019 年纽约房源及其地理信息、价格、评论数量等信息。
您可以尝试回答以下一些问题:
- 哪些主机最忙,为什么?
- 哪些区域的流量比其他区域大,为什么会这样?
- 价格、评论数量和某个列表被预订的天数之间有什么关系吗?
与员工流失和绩效相关的最重要因素
难度:简单的
链接到数据集这里。
IBM 创建了一个合成数据集,您可以使用它来了解各种因素如何影响员工流失和满意度。一些变量包括教育、工作投入、绩效评级和工作生活平衡。
探索这个数据集,看看是否有任何重要的变量确实影响员工满意度。更进一步,看看你是否能从最重要到最不重要排列变量。
世界大学排名
难度:容易
链接到数据集这里。
你认为你的国家有世界上最好的大学吗?成为“最好的”大学意味着什么?该数据集包含三个全球大学排名。使用这些数据,看看你能否回答以下问题:
- 顶尖大学在哪些国家?
- 决定一个人世界排名的主要因素是什么?
一定要 订阅 千万不要错过另一篇关于数据科学的文章,包括指南、诀窍和技巧、生活经验等!
酒精和学业成功
难度:容易
链接到数据集这里。
酒精对学生成绩有影响吗?如果不是,那是什么?这一数据是在对中学数学和葡萄牙语课程学生的调查中获得的。它包含几个变量,如酒精消费,家庭规模,课外活动。
利用这个,探究学校成绩和各种因素的关系。作为奖励,看看你能否根据其他变量预测学生的最终成绩!
口袋妖怪数据探索
难度:简单的
链接到数据集这里。
取自 Pokemon.com
对于所有的游戏玩家来说,这里有一个数据集,包含了所有七代 802 个口袋妖怪的信息。这里有几个问题你可以试着回答一下!
- 哪一代人的口袋妖怪最强?哪个最弱?
- 什么口袋妖怪类型最强?最弱的?
- 有没有可能建立一个分类器来识别一个传说中的口袋妖怪?
- 身体特征和力量统计(攻击、防御、速度等)之间有关联吗?)?
探索预期寿命的因素
难度:容易
链接到数据集这里。
世卫组织创建了一个所有国家的健康状况数据集,包括预期寿命、成人死亡率等统计数据。使用该数据集,探索各种变量之间的关系。对寿命影响最大的是什么?
创建此数据集是为了回答以下问题:
- 最初选择的各种预测因素真的会影响预期寿命吗?实际影响预期寿命的预测变量有哪些?
- 一个预期寿命值较低(< 65 岁)的国家是否应该增加医疗支出以提高其平均寿命?
- 婴儿和成人死亡率如何影响预期寿命?
- 寿命与饮食习惯、生活方式、运动、吸烟、饮酒等有正相关还是负相关?
- 上学对人类的寿命有什么影响?
- 寿命与饮酒有正相关还是负相关?
- 人口稠密的国家的预期寿命会更低吗?
- 免疫覆盖率对预期寿命有什么影响?
查看我关于 用回归 预测寿命的文章获取灵感!
预测建模
能源消费的时间序列预测
难度:中高级
链接到数据集这里。
该数据集由 PJM 网站的功耗数据组成。PJM 是美国的一个区域性传播组织。使用这个数据集,看看是否可以建立一个时间序列模型来预测能源消耗。除此之外,看看你是否能发现一天中几个小时的趋势,假日能源使用,以及长期趋势!
贷款预测
难度:容易
链接到数据集这里。
德米特里·德米德科在 Unsplash 拍摄的照片
该数据集取自 Analytics Vidhya,包含 615 行和 13 列过去已批准和未批准的贷款。看看你能否创建一个模型来预测贷款是否会被批准。
二手车价格评估员
难度:中等
链接到数据集这里。
帕克·吉布斯在 Unsplash 上的照片
Craigslist 是世界上最大的二手车销售网站。这个数据集由 Craigslist 搜集的数据组成,每隔几个月更新一次。使用这个数据集,看看是否可以创建一个数据集来预测一个汽车列表是过高还是过低。
查看我预测二手车价格的模型 这里 !
检测信用卡欺诈
难度:中高级
链接到数据集这里。
照片由rupixen.com在 Unsplash 上拍摄
该数据集显示了两天内发生的交易,284,807 笔交易中有 492 笔欺诈。数据集高度不平衡,正类(欺诈)占所有交易的 0.172%。了解如何处理不平衡数据集并构建信用卡欺诈检测模型。
皮肤癌图像检测
难度:高级
链接到数据集这里。
有了超过 10,000 张图像,看看你能否建立一个神经网络来检测皮肤癌。这绝对是最困难的项目,需要大量的神经网络和图像识别知识。提示:如果你被卡住了,可以参考其他用户创建的内核!
感谢阅读!
一定要 订阅 千万不要错过另一篇关于数据科学的文章,包括指南、诀窍和技巧、生活经验等!
如果你喜欢我的工作,想支持我…
- 如果你喜欢这个, 在 Medium 上关注我 了解更多
- 关注我关于Kaggle了解更多内容!
- 我们连线上LinkedIn
- 有兴趣合作吗?查看我的 [网站](http://Want to collaborate?) 。
- 查看 我的免费数据科学资源 每周都有新素材!
Seaborn 的 14 个数据可视化图
警察调查数据并从中提取信息和趋势的工具。
绿色代表新的开始和成长。它也象征着更新和富足。
数据可视化在数据挖掘中起着非常重要的作用。各种数据科学家花时间通过可视化来探索数据。为了加快这一进程,我们需要对所有地块进行详细记录。
如果没有规划和架构,即使是大量的资源也无法转化为有价值的商品。因此,我希望这篇文章能为你提供一个良好的架构,包括所有的情节和它们的文档。
内容
- 简介
- 了解你的数据
- 分配图
a .分配图
b .联合图
c .配对图
d .地毯图 - 分类图
a .小节图
b .计数图
c .方框图
d .小提琴图 - 高级地块
a .带状地块
b .群体地块 - 矩阵图
a .热图
b .聚类图 - 网格
a .刻面网格 - 回归图
介绍
Seaborn 是基于 matplotlib 的 Python 数据可视化库。它提供了一个高层次的界面来绘制有吸引力的和信息丰富的统计图形。
对于 Seaborn 的安装,您可以在命令行中运行以下命令。
pip install seaborn
conda install seaborn
要导入 seaborn,您可以运行以下命令。
import seaborn as sns
了解您的数据
这些图中使用的数据集就是著名的 泰坦尼克号数据集 *(图 1)。*此后,数据集由变量“ df ”表示。
图 1:泰坦尼克号数据集
分布图
这些图表帮助我们形象化数据的分布。我们可以用这些图来理解数据的均值、中值、范围、方差、偏差等。
a.距离图
- 距离图给出了所选连续变量的直方图。
- 这是一个单变量分析的例子。
- 我们可以改变柱的数量,即直方图中垂直条的数量
import seaborn as sns
sns.distplot(x = df['age'], bins = 10)
图 2:乘客“年龄”的分布图。
- 这里 x 轴是年龄,y 轴显示频率。例如,对于 bins = 10,大约有 50 个人的年龄在 0 到 10 岁之间
b.联合地块
- 它是两个变量的距离图的组合。
- 这是双变量分析的一个例子。
- 我们另外获得了变量之间的散点图,以反映它们的线性关系。我们可以将散点图定制为六边形图,其中颜色强度越大,观察次数就越多。
import seaborn as sns
# For Plot 1
sns.jointplot(x = df['age'], y = df['Fare'], kind = 'scatter')# For Plot 2
sns.jointplot(x = df['age'], y = df['Fare'], kind = 'hex')
图 3:“年龄”和“费用”之间的联合曲线图
- 我们可以看到年龄和票价之间没有合适的线性关系。
- kind = 'hex '提供六边形图,kind = 'reg '在图上提供回归线。
c.配对图
- 它获取数据的所有数字属性,并绘制两个不同变量的成对散点图和相同变量的直方图。
import seaborn as sns
sns.pairplot(df)
图 4:泰坦尼克号数据集的配对图
d.地毯图
- 它绘制了一个破折号,而不是 distplot 中的均匀分布。
- 这是一个单变量分析的例子。
import seaborn as sns
sns.rugplot(x = df['Age'])
图 5:乘客“年龄”的地毯图
分类图
这些图帮助我们理解分类变量。我们可以用它们进行单变量和双变量分析。
a.条形图
- 这是双变量分析的一个例子。
- 在 x 轴上,我们有一个分类变量,在 y 轴上,我们有一个连续变量。
import seaborn as sns
sns.barplot(x = df['Sex'], y = df['Fare'])
图 6:“费用”和“性别”的条形图
- 我们可以推断女性的平均费用高于男性。
b.计数图
- 它计算分类变量出现的次数。
- 这是一个单变量分析的例子。
import seaborn as sns
sns.countplot(df['Pclass'])
图 7:存活和“P 级”的计数图。
c.箱形图
- 这是一个 5 点概要剧情。它给出了关于连续变量的最大值、最小值、平均值、第一个四分位数和第三个四分位数的信息。此外,它还为我们提供了离群值的知识。
- 我们可以绘制单个连续变量的曲线图,也可以根据连续变量分析不同的分类变量。
import seaborn as sns
#For plot 1
sns.countplot(df['Pclass'])#For plot 2
sns.boxplot(y = df['Age'], x = df['Sex'])
图 8: a)年龄的箱线图,b)年龄的性别的不同类别的箱线图
d.小提琴情节
- 它类似于箱线图,但它也提供了关于分布的补充信息。
import seaborn as sns
sns.violinplot(y = df['Age'], x = df['Sex'])
图 9:年龄和性别之间的小提琴图
高级绘图
顾名思义,它们是先进的,因为它们应该融合分布和分类编码。
a.带状图
- 这是一个连续变量和分类变量之间的图。
- 它绘制成散点图,但补充使用分类变量的分类编码。
import seaborn as sns
sns.stripplot(y = df['Age'], x = df['Pclass'])
图 10:“年龄”和“P 级”之间的带状图
- 我们可以观察到,在 1 班和 2 班,10 岁左右的儿童不在,60 岁以上的人大多被安排在 1 班。
- 通常,这些类型的观测值用于估算缺失值。
b.群体图
- 它是一个条形情节和小提琴情节的结合。
- 除了数据点的数量,它还提供了它们各自的分布。
import seaborn as sns
sns.swarmplot(y = train['Age'], x = train['Pclass'])
图 11:“年龄”和“P 级”之间的群体图
矩阵图
这些是使用二维矩阵数据进行可视化的特殊类型的绘图。由于矩阵数据的维数很大,很难从矩阵数据中分析和生成模式。因此,通过为矩阵数据提供颜色编码,该过程变得更加容易。
a.热图
- 在给定的原始数据集“df”中,我们有七个数值变量。那么,让我们生成这七个变量之间的相关矩阵。
df.corr()
图 12:相关矩阵
- 尽管只有 49 个值,但读取每个值似乎非常困难。当我们遍历成千上万个特征时,复杂性就加剧了。那么,让我们试着实现一些颜色编码,看看解释变得有多容易。
sns.heatmap(df.corr(), annot = True, cmap = 'viridis')
图 titanic 数据集相关矩阵的热图。
- 同一个矩阵现在表达了更多的信息。
- 另一个非常明显的例子是使用热图来理解缺失的价值模式。在图 14 中,黄色破折号代表一个丢失的值,因此它使我们的任务更容易识别丢失的值。
sns.heatmap(df.isnull(),yticklabels=False,cbar=False,cmap='viridis')
图 14:泰坦尼克号数据中缺失值的热图。
b.聚类图
- 如果我们有一个矩阵数据,并希望根据相似性对一些要素进行分组,聚类图可以帮助我们。一次,看一下热图(图 13),然后看一下聚类图(图 15)。
sns.clustermap(tran.corr(), annot='True',cmap='viridis')
图 15:钛数据相关矩阵的聚类图
- x 标签和 y 标签是相同的,但它们的协调方式不同。这是因为它们是根据相似性进行分组的。
- 顶部和左侧的流程图结构描述了它们的相似程度。
- 聚类图使用层次聚类形成不同的聚类。
网格
网格图为我们提供了对可视化的更多控制,并用一行代码绘制了各种各样的图形。
a.小平面网格
- 假设我们要绘制所有三种船票中男性和女性的年龄分布图。因此,我们总共会有 6 张图。
sns.FacetGrid(train, col = 'Pclass', row = 'Sex').map(sns.distplot, 'Age')
图 16:“性别”和“P 级”等级的“年龄”分布图
- 小平面网格根据要求提供非常清晰的图形。
- sns。FacetGrid ( 列 = ’ 列’,行 = ’ 行’,数据 = data)提供了一个包含列和行中所有唯一类别的空网格。后来,我们可以使用不同的情节和共同的变量为特殊的变化。
回归图
这是一个更高级的统计图,提供了散点图以及对数据的线性拟合。
sns.lmplot(x = 'Age', y = 'PassengerId', data = df, hue = 'Sex)
图 17:男性和女性的年龄和乘客 ID 之间的回归图。| 免责声明:回归年龄和乘客 id 是有意义的。这只是理解可视化的目的。
图 17 显示了男性和女性的乘客 ID 和年龄之间的线性回归拟合。
包裹
在本文中,我们看到了使用 seaborn 的 14 种不同的可视化技术。
我相信数据可视化增强了我们对数据解释的理解和潜力。它为我们提供了更令人满意的技能来表示数据、估算缺失值、识别异常值、检测异常等等。
数据分析师就像警察一样,需要询问数据并通过数据提取信息。拥有乐观的工具来完成这项工作是极其必要的。因此,我希望这篇文章可以作为一种工具来询问您的数据。
有关探索性数据分析的指南,请访问-
探索性数据分析完全指南
towardsdatascience.com](/the-eda-theoretical-guide-b7cef7653f0d)
有关数据科学、机器学习、编程的此类内容,请访问 y youtube 频道。
合十礼!!!🙏🙏这个频道是给想学数据科学和机器学习的人看的。我已经花了很多…
www.youtube.com](https://www.youtube.com/channel/UCqq_T7ktsZO62k7CaibgQvA/)