ShowMeAI-人工智能工具笔记-十一-

龙哥盟 / 2024-10-16 / 原文

ShowMeAI 人工智能工具笔记(十一)

T81-558 | 深度神经网络应用-全案例实操系列(2021最新·完整版) - P8:[讲座] 使用 CONDA 安装 TensorFlow/Keras CPU/GPU版本 - ShowMeAI - BV15f4y1w7b8

嗨,我是杰夫·希顿。欢迎来到华盛顿大学的深度神经网络应用课程。为了在这门课中开始,你需要能够运行示例,完成作业并使其正常运行。它是在Python中工作。因此,你将使用Tensorflow与Keras在Python中。你可以将这些全部安装到自己的计算机上。

在这个视频中,我讲解如何做到这一点,查看我关于卷积神经网络和其他AI主题的所有视频。点击订阅按钮和旁边的铃铛,并选择所有,以接收每个新视频的通知。如果你不想在计算机上安装很多软件,也许你对命令行的处理不太熟悉。那么我推荐Google CoLab。

不管怎样,你都将能访问一个GPU,即图形处理单元。现在,你的实际计算机上可能没有兼容的GPU,需要是Nvidia。😊。

并且它需要是较新的版本。你可以在网上搜索你实际机器中GPU的能力并找出。GPU基本上是一个显卡。我在这台电脑上使用的是Titan,属于相当高端的产品。但我建议你在自己的电脑上尝试一下,试试CoLab,看看哪个最适合你。在这个视频中,我们将看到如何在计算机上安装Python与TensorFlow和Keras。

我将介绍如何在GPU和纯CPU上进行操作,得益于Anaconda Python的一些进展。这两个过程实际上非常相似。好吧,让我们开始安装过程。现在,我要向你展示如何安装所需的文件,以便实际使用TensorFlow,无论是CPU还是GPU,我都会覆盖这两个方面。

这将允许你运行我的深度神经网络应用课程的示例。即使你没有跟随我的课程,这也会为你设置一个Conda环境,使你能够在使用TensorFlow和Keras时处于良好状态。

现在我开始的是全新安装的Windows。所以这就是为什么它显示激活Windows。我确实为Windows付费。只是在我安装它用于短期用途时,通常不会激活。我不想混淆微软激活服务器。

这可能会很好地解决问题。所以这是一个干净的构建,我已经安装了Chrome。我对Chrome比较熟悉,对Edge不太熟悉。因此,我想避免在不熟悉的软件上绊倒。这实际上对安装没有太大影响。我们要做的是如果你搜索杰夫·希顿和Github。

你可以在这里查看我的Github,所需的文件和说明都在这里。如果你去查看深度学习的T 8到1应用。这就是,继续访问主页,点击代码并下载一个zip文件。你也可以使用。

克隆,取决于你对git的熟悉程度。但这会很好用。所以在下载这个zip文件时,我将进入我在这里设置的安装文件夹。我这里有几个,如果这里有更新的版本。

可能要尝试找到相关的YouTube视频,因为这确实会发生变化。这是2020年7月的版本,我会尽量保持这个版本的存在。只有在它的变化如此之大,以至于这个视频不再相关时,我才会重新录制视频或创建新文件。

但我倾向于每年至少重新录制一次。Google总是会对这个过程进行某种更改,导致我需要重新录制。所以我们继续打开这个。基本上我告诉你的是安装minconda。如果你更喜欢,可以使用Anaconda,Anaconda包含所有已知的包和组件。安装时,我倾向于更简约,但这是个人选择。

你可以安装你想要的任何一个。但让我去Mincona的链接。我在另一个浏览器中打开,以便可以回到这里。我们将安装Python 3.74 Windows。Mac安装实际上与这个视频基本相同。稍后我可能会录制一个特定于Mac的视频。好吧。

我们将使用Python 3,7和64位。如果你恰好有32位机器,Tensorflow是无法工作的。使用Google colab。此外,如果你不太擅长软件安装,更多的是一个编码者,而不是命令行黑客,Google colab非常棒,我强烈推荐。

所以让我来下载这个。应该很快,但我会快进过去。好吧。一旦你下载好了,就去运行它。我只是双击了它。点击下一步。同意。我更倾向于只为自己安装。我一般不使用多用户计算机。但那个目录是可以的,位于我的用户目录下。始终记得它在哪里。

因为你可能会去那里调整一些设置。我在这方面会有些不同于默认设置。我更喜欢将其添加到我的路径环境中。你也可以使用Anaconda提示符。两者都应该在没有更改这些说明的情况下工作。唯一可能让你困惑的情况是,如果你的计算机上有其他依赖于之前安装的Python版本的软件,更改全局路径将强制它们使用你正在安装的新版本。

所以要注意这一点。我将点击安装。Anaconda的安装将比Miniconda的安装花费更长时间。所以这个应该很快就能完成。好的,我们差不多到了。点击下一步。我不需要教程,也不需要了解更多关于Anaconda的内容。好的,现在安装完成了。在我们继续之前,那个你下载的文件。

我这里有几个文件,是我在这个构建中实验时产生的不同内容。但你可以忽略它们。这个文件夹是你从我的Git仓库下载的。我现在就把它拖到桌面上,需要解压缩。然后我将进入我的用户目录。

然后把它复制到这里。所以现在我已经准备好了。这些是所有的课堂示例,给你一些文件进行测试和其他内容。实际上你只需要两个文件。如果你不想下载整个文件,也可以单独下载它们。所以你已经成功地在Conda中安装了它们。

现在你需要打开一个命令提示符CD。这在PowerShell中也可能有效,我对PowerShell不太熟悉。我将执行Conda install -y jupyter。我们将快速前进。这可能会花一点时间。

好的,Jupyter安装完成了。现在我们要做的是创建一个Conda环境。一个环境保存了所有Python库和你特定项目所需的一切。你从一个基本环境开始。我通常只是用它来运行Jupyter,并且使用底层环境来满足我在各种项目中所需的自定义配置。另一个很棒的地方是,你可以自动安装所需的GPU驱动程序。

这极大地简化了安装,并防止了冲突。你可能有一个旧环境在使用旧的驱动程序,一个新环境在使用更新的驱动程序,这确实节省了你安装的时间。所以我现在就创建一个新的Conda环境。

我将把这个复制并粘贴到这里。现在重要的事情是Tensorflow。😊。这是环境的名称。你可以随意命名。只要确保在后续命令中更改它,以便一切对齐。然后这是我们使用的Python版本3.7。

我在设置2020年秋季学期时使用的Tensorflow版本要求至少使用Python 3.7。我将在将来修改这些说明时更新此信息。但现在是Python 3.7。所以我正在安装它。说“是”,我们将快速前进。这非常快。好的,安装完成了。现在我们要做Conda。

激活我这里的命令是他们建议的命令。所以 conda activate Tensorflow。按下回车,注意你的提示符变化。你现在在 Tensorflow 环境中。现在我这里有很多命令需要你在这个你创建的 Tensorflow 环境中执行,不管你给它起了什么名字,如果不在这个环境中是无法工作的。

所以请确保如果你在几个步骤中完成这个,始终返回激活 Tensorflow。

一个非常常见的错误是人们总是问我的 DLL 错误。如果你遇到这个,通常是因为你不在环境中。所以现在让我们运行这个 Conda install N Bconda。这只是给你一些必要的工具,以便将这个新环境链接到 Jupyter notebooks。Jupyter notebooks 基本上是我们在本课程中使用的编辑器。

我会快进到这里,然后就完成了。现在我们准备安装 Tensorflow。

现在在录制这个视频时,我们正好处于 Tensorflow 2.0 到 2.2 版本之间。我们在本课程中处理的平台是 Google Coab 2.2,Windows 2.1,Linux 2.2 和 Mac 2.0。一般来说,我发现 Mac 在 Conda 发布的 Tensorflow 版本中落后最多。而 Linux 和 Google Coab 基本上是更当前的版本,现在几乎齐头并进。

如果你使用的是 Windows 10,实际上可以在 Windows 环境中安装 Linux 子系统,并安装相应的 couta 驱动程序。我会单独制作一个关于这个的教程。如果你是相对高级的安装用户。

不害怕命令提示符的用户,你可能会想这样做。我认为这在 Windows 中是最好的环境,但我很快会制作一个关于这个的视频,并在描述中链接它。但是我们正在做 Windows。所以在写这段话时,Windows 支持 Tensorflow 的版本是 2.1。现在你可以选择仅使用 CPU,或者使用 GPU 和 CPU,如果它能神奇地工作的话,GPU 是很棒的,如果它不能神奇地工作。

你可能需要安装驱动程序以及其他所有东西,安装 couda 和 co DN,确保这些各种东西都能正常工作,交叉你的手指,希望这能在你使用 GPU 时正常工作。如果不行,我有另一个更实用的视频,展示如何实际安装所有驱动程序。

这可能是一个选项,但老实说,安装所有的 GPU 驱动程序可能会让人感到头疼。而且还有其他使用 GPU 的选项,比如 Docker 镜像。我可能会在未来制作关于这些的教程。我在这台机器上有一个 GPU,我有一个 Titan RtX。所以我将继续使用这个命令,但如果只是为 CPU 安装这个。

使用这个命令。如果你想更高端,可以设置两个环境。这就是我在工作机器上所做的,一个用于CPU,一个用于GPU。然后你可以在它们之间切换。所以我就将其粘贴在这里。顺便说一下,快速粘贴的方法是右键点击。确保你在TensorFlow环境中并运行它。

如果事情出错,这里是一个潜在的好地方。所以如果你在这里遇到错误,可以复制、粘贴并在谷歌上搜索。你可能会在Stack Overflow上找到一些解决方案,希望这能指导你。你也可以在这里留言,也许有人会给出建议。

我将继续运行。😊。

我可能没有见过所有可能出错的情况,所以我可能能帮你,也可能不能。但如果是我见过的事情,我会在评论中回复你,同时看看有没有其他人遇到同样的问题,并得到可能是我的回复。我们快进这一部分。这需要一点时间。

好的,没有错误。这很好。接下来我们要做的是安装一些我的课程所需的附加库,这些库都很常见。我建议把这个作为起点。它们位于这个工具的YAML文件中,文件在我们之前下载的压缩包里。

或者你可以直接下载那个文件,如果你不想下载所有内容。你可以看到它在那里。我将基本上复制这个命令。所以,然后将其粘贴到这里。再一次,确保你仍在你的TensorFlow目录中。如果你关闭了命令提示符并重新打开,可能就不在那了。

所以我们来运行这个。这需要一点时间来安装。这是在安装像scikit-learn等我们课堂需要的东西。我会快进这一部分。好的,我们完成了。你不需要重新激活它。只需忽略它发送的内容,只要你仍在TensorFlow或你命名的环境中就可以。

你没问题。现在,这里有一个非常重要的命令。如果你不这样做,你将在Jupyter中看不到你的新环境,也无法使用它。所以我们将运行这个命令。如果你运行这个命令时遇到错误,比如找不到ipykernel

这意味着你可能忘记运行这个conda install命令。我时常会收到这个问题。所以你要知道这一点。将其粘贴到这里。这发生得很快,所以完成了。嗯。现在,我们要运行Jupyter Notebook。在Windows上,重要的是要在你计划使用的环境中启动Jupyter Notebook。

在Jupyter Notebook中选择这些环境有点愚蠢,但你必须先在那个环境中启动。因此,这在Windows上几乎是多余的。不过,这就是Windows的工作方式。关于此问题有一个GitHub问题正在开放中,也许他们会在某个时候修复它。

然后我要运行Jupyter Notebook。顺便说一句,如果你尝试从Tensorflow外部运行这个,不要进行Conda激活Tensorflow,你会遇到DLL错误。我将演示这一点,因为这是一个人们常见的错误。所以我将运行Jupyter Notebook,它将启动一个网页浏览器。

我将继续打开Class1概述。现在,如果你需要选择,我在这里称之为Tensorflowlow,如果你叫了别的名字,你需要更改内核并选择你有的那个,正是这个。我们将继续进行。

看起来我的指令将其命名为3.6,尽管我们正在使用3.7。所以我会更新这个,那只是一个标签,没关系。但我将进行内核重启并运行所有内容,它将运行这一部分,这很关键,它告诉你你正在运行的所有版本。因此Python 377。是的,我需要在这里更新我的标签,这很简单。

这里的关键是截至本视频,Tensorflow版本2.1是你在Windows上能获得的最新版本,除非你从头开始安装所有内容,这样做并不糟糕,但可行。注意GPU是可用的。所以我已经成功为GPU安装了这个,如果你是为CPU安装的。

它会显示GPU不可用。这就是你如何让它为GPU或不为CPU正常运行。现在让我给你展示一个非常。

常见错误。希望你没有遇到这个错误,但我想给你展示一些最常见的问题。现在,如果没有任何问题,你就完成了,请订阅并希望这对你有帮助。现在,如果你遇到其他错误,这里是最常见的一个。我将进行Conda。

完全就像你刚开始一样,相信我,我总是犯这个错误。我进入课程文件但没有进行Conda激活。我只是去Jupyter Notebook。现在,在Mac和Linux中,这是没问题的,但在Windows中,这会造成问题。所以我将进入Class 1概述,就像我之前做的那样。

我将进行内核重启并运行所有内容,同时注意我在这里遇到的错误。顺便提一下,这是你可能想要复制粘贴并在谷歌上搜索的错误。但这是DLL加载错误。

这只是意味着你在运行之前没有激活你的环境。所以,请注意这一点。

感谢观看这个视频。现在,这似乎是一个复杂的过程,也许你尝试过但效果不佳。欢迎使用 Google Colab 来完成课堂作业和示例。这真的效果很好。我用 Google Colab 测试所有内容。所以你应该没问题。如果你觉得这种内容有趣,请订阅我的 YouTube 频道,或者如果这个视频对你有帮助,请给我点赞。

非常感谢。😊。

T81-558 | 深度神经网络应用-全案例实操系列(2021最新·完整版) - P9:[讲座] 在Mac OSX中安装TensorFlow 2.4、Keras和Python 3.8 - ShowMeAI - BV15f4y1w7b8

嗨,我是Jeffheat,欢迎来到华盛顿大学的深度神经网络应用课程。让我们安装TensorFlow Kiura的Auto Macintosh。

🎼现在这将仅使用CPU,实际上在Mac上无法使用GPU进行Tensorflow,除非付出极大的努力。Mac不支持Nvidia GPU,而且Tensorflow早已停止对Mac的GPU支持。M1 Mac有一些非常新的功能,使用Apple开发的ARM芯片,这非常新,我还没有经历过,目前我没有M1 Mac,但这可能是我未来会更深入探讨的内容。如果有人有M1 TensorFlow的经验,请在评论中分享,我很想听听你的结果。那么,让我们开始吧,我建议你下载并安装Minconda。这在Mac上是可用的,获取你能找到的最新版本,3838就是这样。

我们将安装TensorFlow,因为它支持Macintosh上的该版本。我将获取Pkg,这比bash安装要简单一点,bash与在Linux上的安装方式相似,所以你可能想走这条路,但说明会稍有不同。如果你愿意,可以安装完整的Anaconda,我倾向于选择更简约的方式,只安装我需要的软件包,这样我知道我安装了什么。如果你想安装Anaconda,那当然也可以,你只需访问Anaconda页面,下载它。我将打开刚刚下载的包文件,点击继续,继续许可证,我同意安装类型,我将让它安装到默认位置,这对我来说完全没问题,点击安装,它需要我进行身份验证。

现在正在进行安装。这可能需要一点时间,所以我会快进。好的,安装完成了。我会继续点击并将其移到轨道上。所以现在我回到之前的安装说明。我将打开终端。现在Mac已经从bash切换到Zsh。如果你输入P,它会显示你在Zsh上。如果你不在Zsh上,可能想要切换到那。还有其他文章介绍如何做到这一点。如果你买了最近的Mac,它会已经在Zsh上,但请注意,这可能会给你带来一些问题。还要确保你有最新的Python版本,输入Python --version 3。

如果你得到的是其他版本,而你使用的是包安装器,并且如果你在27这个古老版本的Python上(Mac自带的版本),重新启动希望能有所帮助,如果没有,那你需要更新路径,网上有关于如何做到这一点的文章。

但实际上,Python Minconda应该会自动为你安装这些,所以我将运行conda install -y jupyter,这会为我安装Jupiter notebook。我会快进,这有时需要一点时间。好的,我们有了Jupiter,接下来的部分是基本上使用我提供的Tensorflow YML文件,我们将下载那个文件。我将打开它,你可以在这里看到,如果我稍后更新了一些内容,这可能会有所不同,但我还没有需要重新录制视频。所以我将把它放在我用户的Jheaton目录中,你将把它放在你的用户目录,这并不是最好的地方,但这个例子可以工作。我建议你完成后删除它。这里我是用户Jayheaton,或者你可能是其他人,我将返回并执行这个命令,复制它,这个命令可能会有所不同,我不认为我会更改这个命令,但总是复制并粘贴,不要直接从YouTube复制。接下来我将运行这条命令,这将为我创建一个Tensorflow环境,这样我就可以在那个环境中拥有不同的版本。

Python比我在主机环境中实际拥有的版本更多,这样可以很好地组织一切,避免在安装其他Python包时意外损坏Tensorflow环境。因此,我们正在安装它,这将让我们获得Tensorflow,至少在2021年1月录制时,它会给你Python 3.8和Tensorflow 2.8.5。

4是我们当前学期课程使用的版本。现在这通常需要一点时间。所以我会快进。好了,现在我们可以激活这个环境,运行conda activate Tensorflow。每次你启动Jupiter notebook时,记得执行这个操作,以确保你在那个环境中。

我已经激活了,现在我将执行安装,这让我能够将这个环境添加到Jupiter notebook中,这可能需要一点时间,所以我会快进。继续,是的,快进,这很重要。我们将注册环境。

否则它将不会显示。Jupiter,所以我将复制整个长命令。我不想手动输入。确保你在 Tensorflow 文件中拥有 3A 的任何版本,我会更新这些,但请在这里复制粘贴,因为这可能会在今年晚些时候或更久以后是更新的版本。我通常能用大约一年的时间,有时在录制这些视频前会有六个月的时间。我将保持这个节奏,现在我们将测试 Jupiter,我会给你一些代码,我们将想在 Jupiter 中尝试。我将进入 Jupiter notebook,它会在我的浏览器中启动 Jupiter notebook。我要创建一个新的 Python 3 Tensorflow,你可以看到它在那里并且应该正在运行,你不应该看到内核失败或类似可怕的事情。我将复制这个代码,我们将运行,这在第一次执行时可能会花一点时间,所以我会快进,这太棒了,Kara 的 2。

4 Python 3。8 和 Tensorflow 2。4 所以这就是我非常关注的。GPU 不可用。但嘿,这是一个 Mac,GPU 很棒,但在 Mac 上,无论是笔记本电脑还是台式机,这其实都不是一个可用的选项。请关注这个视频和频道,以便与本课程保持同步,继续你的深度学习之旅。

Tebleau操作详解,照着实例学做图!数据科学家的必备可视化工具,简单快速做出精美图表!<实战教程系列> - P1:1)Tableau基础知识 - ShowMeAI - BV1iq4y1P77U

嗨,大家好,欢迎收看《Tableau两分钟》。今天,我们将做一些与我们通常做的有所不同的事情,我们将走过Tableau的基础知识。也就是说,你可以从第一次打开程序开始,一直到创建一个非常基本的仪表板。

真的,给你一个概述,让你在观看这个频道或其他频道的其他视频时,有一个框架来挂钩新信息。😊,所以当你打开Tableau时,首先看到的是这个屏幕。

这给你一些选项,可以在左侧连接数据,具体取决于你使用的Tableau版本,无论你是使用Tableau Public、Tableau Professional还是Tableau Personal。这些会有所不同。显然,Tableau Public的选项最有限。

特别是在连接可能在服务器上的数据时。你还可以看到你最近打开的任何文件。如果你之前在使用其他Tableau文件,它们会在中间的大视图中列出缩略图,我没有任何。😊,你可能会看到一些。你可能不会。

这取决于你之前打开程序的次数和你所做的事情。连接数据的最简单方法是通过Microsoft Excel或文本文件连接数据。你可以在顶部使用这两个选项。我们将使用Microsoft Excel连接一些数据。文本文件的过程非常。

非常相似。我将选择。这个表格超市销售数据集。我们接下来会打开它,你会看到当我们打开它时,这会带我们到一个新页面,在那里我们可以定义想要导入到工作簿中的数据。左侧有三个工作表。这些是在这个超市工作簿中的示例工作簿中的三个工作表。

我们将把订单拖到这个面板上。这将把订单表中的所有数据导入到我们的工作簿中。如果我们愿意,我们也可以拖动人员,然后我们可以将其用作连接。人员实际上有地区的数量。

还有负责领导该地区的人。你可以通过点击这里的连接来看到这一点。我们可以定义如何连接。我们甚至可以在其中添加。退货。如果我们想这么做。再次,这是通过这个订单ID号进行连接。

这两个类别是自动设置的,因为这是一个示例数据集,旨在易于使用。这些设置是自动完成的。如果你想更改这些字段中的一个,你可以在这里看到你如何更改连接的字段。这些连接就像SQL连接一样运作。所以你有内连接、左连接、右连接和全连接。

如果你刚刚开始,不用太担心这个。但我想让你知道,这种灵活性是存在的。一旦我们有了所有这些数据,我们可能想要探索它。所以我们要做的第一件事是下到这里,点击“转到工作表”,我们将点击工作表 1。这个视图是我们将创建每个单独可视化的地方。

在构建任何类型的 Tableau 工作簿或 Tableau 仪表板时,这里将会进行大量的重工作。很多工作都是在这个特定的工作表中完成的。所以我们来快速浏览一下屏幕上的不同区域。在左侧,我们有数据集中所有的数据项。

它们被分为两个类别。我们有维度,还有度量。维度是通常是分类的项目。例如,类别将是我们超市数据集中产品的类别。度量通常是数字,它们是我们会进行加、减、除等运算的东西。

这些通常是我们想要显示的内容。我们想要显示这些内容相对于某些事物的变化,对吧?所以我们想知道,我们可能想知道在特定产品类别中销售了多少金额。你会注意到,当你将鼠标悬停在这些项目上时,它们会显示不同的颜色。

这些可着色的颜色在我们拖动到工作表时会保留。蓝色的项目是离散的。绿色的项目是连续的。大多数情况下,它们与维度和度量的设置方式相一致,但并不总是如此。所以你必须注意这一点。你可以对连续的项目做的事情与离散的项目不同。

所以它们都有各自的位置。但它们的运作方式略有不同。从字段列表中移出,我们有几个不同的东西,我们称之为架子。所以我们有页面架、过滤器架、列架、行架,以及被称为马克斯卡片的架子。

其中有几个不同的架子。所以我们有颜色架、细节架等等。然后显然,我们的可视化在这里,它会随着我们将内容从字段中拖出而逐渐建立。我们将在继续过程中讨论每个架的功能。

在这个过程中,当我们进行这个练习时,首先要做的就是创建一个非常简单的可视化。所以让我们选择两个不同的项目。我们将产品类别拖到行架上。现在你可以看到我们的行由产品类别定义,共有三类:办公用品和技术。然后让我们选择销售。

现在让我们点击并按住,将销售拖到列架上。你可以看到,现在 Tableau 自动为我们创建了一个柱状图。😊这很好,在这种情况下效果非常好。Tableau 通常对你想用特定维度和度量创建的可视化类型很聪明。如果你想改变图表类型,可以点击这里的“展示我”选项。

点击这些选项中的任何一个,尝试查看不同类型的可视化下数据的显示方式,比如试试高亮表、堆叠柱状图、气泡图或树图。实际上,针对这组数据,最佳选择是柱状图。所以我们现在就这样保留它,并且要添加一个过滤器。

过滤器的工作方式是过滤器限制流入可视化的数据量,因此我们可以查看这个,而不是查看所有区域。例如,我们可以只查看一个特定区域。为了做到这一点,取出过滤器,将其拖到过滤器架上。然后会弹出一个窗口,让我们选择想要查看哪些区域。

目前我们将选择全部。然后我们只需点击确认。你会看到数据没有变化,因为我们将它们全部包含在我们的区域内。如果我们想要改变这一点,可以点击区域,点击编辑过滤器,可能排除南部和西部的地区。我把这个移开,以便你可以看到,当我们点击时,观察这些柱状图。

这些柱状图和比例在这种情况下会改变,因为我们有更少的数据点,抱歉,销售数量减少,因为我们只查看四个区域中的两个。你还可以在这个可视化中显示它。所以如果我们继续点击显示过滤器,那么你可以看到右侧。

我们得到了这个过滤框,你可以点击不同的选项进行过滤。观察可视化是如何随着变化而变化的。所以如果你需要多次更改,这非常有用,并且希望数据在表格上更新,想要一种简单的方式而不必点击所有不同的子菜单来编辑过滤器。完成后,我们可能想将这里的可视化添加到仪表板上。

所以要创建一个新的工作表或创建一个新的仪表板,我们在这里有这些选项。我们可以创建一个新的工作表,创建一个新的仪表板,或者创建一个新的故事。故事我们今天不讨论。它们稍微复杂一点,可能深入一些。我们真正想关注的是Tableau的基本功能。

这是将工作表构建成仪表板的过程。所以我们有我们的第一个工作表。我们刚刚创建它。😊所以让我们继续创建一个仪表板。现在,如你所见,仪表板视图略有不同。首先,我们有这个标签,仪表板标签。在这里我们可以定义仪表板的大小。我们可以将工作表添加到我们的仪表板。

我们可以添加一些对象,帮助我们定义布局。我们可以展示我们希望如何布局,并选择是否显示标题。然后我们有第二个标签,即布局标签。这是我们能够微调仪表板中内容布局的地方。

所以你会看到我们已经在这里有一些容器。其实我们不需要这些容器,我马上就会删除它们。但你可以看到,随着我们添加工作表,它们会出现在这个层级中,我们可以移动它们,以使我们的仪表板尽可能美观。所以一开始,正如我所说,我们只是清理这个内容。所以我们已经清空了所有东西。

你可以看出我们已经清空了所有东西,因为我们在这里有这个放置工作表的选项。我们将取出我们创建的第一个工作表,并将其拖到仪表板上。你可以看到这做了几件事。首先,它连同标题、条形和其他内容一起放置了工作表。

它还放置了我们的过滤器。我们的区域过滤器在这里,因为该区域过滤器在工作表上显示。因此它会在仪表板上显示。如果你想删除其中任何一个,你可以删除它们,所以我们可以将它们都删除。通过点击删除按钮。然后我们又回到一个空的仪表板。你还可以拖动它。

但当你拖动时按住shift键,这会创建所谓的浮动布局。因此在此之前,这个工作表被锁定到仪表板的全尺寸,所有进入的内容会相互拼接。如果你想象一下瓷砖在浴室地板上的布局。

我们会以那样的方式对齐,类似于对网格的捕捉或其他图像处理程序中的功能。这改变了布局,现在所有内容都是浮动的,所以我可以将其移动到我想要的任何地方。这是我通常开始所有仪表板时的方式,所有内容都是浮动的。这样。

我可以大致整理出我想要的位置。如果我想把它们放入网格中,我可以在开始添加有趣的元素到我的仪表板时逐步建立网格,并决定哪些元素我想保留,哪些我想去掉。

一旦你所有的元素都在浮动布局中,有时候会变得相当具有挑战性,特别是当布局复杂时,很难将东西放在确切的位置,或者重新排列元素,或者说,嘿,我想知道如果我把这个部分移到这里,或者移到另一边会是什么样子。因此,最好先将所有内容整齐地布局。

我将做的另一件事是改变这个大小。现在,我们有一个范围。所以它有一个最小大小和一个最大大小,并且它会根据屏幕浮动。我喜欢将其设置为特定的大小。所以我们将其设置为固定大小。然后我们将其设置为一个浏览器大小的窗口。

你可以看到,当我们调整仪表板大小时,仪表板中的所有元素都按比例调整大小。它工作了。在某些情况下,它在我们的过滤器中没有工作。所以我们需要将其延伸一点。这是需要注意的事情。先选择大小,然后开始安排仪表板中的所有项目是值得的。

如果你在所有元素布局完成后,选择大小或尝试大幅更改大小,这将会非常困难来维护。因此,这个仪表板目前不是特别有趣,对吧,因为我们现在只有一个元素。我们想要添加的是第二个元素,这将使我们能够查看这两个事物之间的相互作用。

现在我们正在查看按类别的销售情况。我们可能还想查看按时间的销售情况。为了添加这个,我们将继续使用按钮来创建一个新的工作表。我将拖动这个工作表以在仪表板后面重新排列项目。这样做的原因是我希望所有的工作表都井然有序,以便我可以在仪表板上看到第一个工作表。

仪表板上的第二个工作表。如果我在同一个工作簿中创建第二个仪表板,我会做同样的事情。所以我会再添加一个工作表,再加一个工作表,然后再添加一个仪表板到右侧。你可以看到我们有第二个空白工作表。我们来拖动销售数据。这次。

我们将把销售数据放到行架上。你可以看到它被自动创建为柱状图,因为这是一种最佳的销售展示方式。但是,我们要做的是将订单日期拖到我们的列架上。我想指出两件事。第一,它将我们的图表类型从柱状图更改为折线图,因为当我们有日期时,折线图更合理,而订单日期的数据类型是日期。

你可以从旁边的小日历图标看到这一点。其次,订单日期已作为年份显示。我们有关于订单日期的更多详细信息。订单日期一直延伸到具体的日期。但当你拖出来时,它会默认显示为年份。我们可以通过点击加号来展开它。

它从年到季度再到月份,最终到达天。如果我们不想要某个部分,可以通过拖拽将其移除。稍后我们会做到这一点,但我们也可以通过点击加号来收缩它。抱歉,是点击减号,这会把所有内容收拢到一起。现在。

我喜欢以月份级别显示。我认为这对于这组数据来说很有意义,但我不喜欢我们在每个季度之间分隔的方式。所以我将把季度去掉。现在我们有订单日期的年份和月份,没有季度。如你所见,我们按月份显示了过去四年的数据。很好。

看起来不错。我喜欢这个。让我们把它添加到仪表板上。所以我回到我们的仪表板。😊你看,我们这里有第二个工作表。当你将鼠标悬停在上面时,它会给你一个预览,非常有帮助。我将把它拖出来。我会按住Shift,然后把它放到我的仪表板上。然后我会将其扩展得大一些。

现在你可以看到,我们有销售额,以及按类别划分的销售额和按时间划分的销售额在同一图表上。现在,这两个数据目前是相互独立的。这显示的是所有时间的销售额,而这是显示的,抱歉。

这是显示每个类别在我们拥有的所有时间内的销售额,而这是显示所有类别按月份的销售额。好信息。但是如果这两个可以互相互动,那就更好了,这样我们能更好地了解发生了什么。

所以第一件事是,当我们更改这个区域过滤器时,它会改变这个工作表,但不会改变与这个工作表相关的任何内容。为了修复这个问题,我们要回到我们的柱状图。我刚刚点击了底部的工作表。我们要上去调整过滤器。然后应用到工作表。

我们有几个选项。现在,这将使我们的区域过滤器应用到所有工作表中,我们可以选择哪些工作表。对于所有工作表,有两个选项:使用此数据源的所有项目或使用相关数据源的所有项目,显然包括此数据源。现在,我们暂时将使用所有项目,使用此数据源。

相关数据源有点复杂。我们今天不会深入探讨这个,但只需知道你可以在所有相关的数据集上应用过滤器。几个方面会有所变化。首先,如果你将鼠标悬停在上面,它会显示它也适用于第二个工作表,即我们用折线图创建的工作表。

你还可以看到过滤器旁边有一个小数据库图标。因此,这个过滤器现在将适用于多个工作表,或者说我们的两个工作表。如果我们点击工作表2,可以看到左上角有这个过滤器。如果我们返回仪表板并开始更改内容,你会看到现在的变化。

当我们将所有过滤器去掉时,它们都会清空。因此,这两个东西是并行变化的。这太好了。我们还可以考虑添加一些上下文过滤器。探索数据的一种非常有用的方法是能够看到一些有趣的东西,然后点击它。

例如,我们在2014年9月似乎有一个高峰。在2017年3月和2017年9月也有高峰。如果我能看到这个高峰在产品类别之间的分布,那不是很好吗?只需点击一下。Tableau允许你这样做。这个看起来像漏斗的小图标。

点击那个。这会将第二个工作表设置为仪表板上所有其他工作表的过滤器。当我们点击它时,我现在可以点击2017年9月,你可以看到在类别之间的销售如何变化,仅查看九月。我们也可以只查看三月。你可以看到这些变化。我们再次查看2014年9月。

如果你想选择特定年份,可以看到它的变化。你可以点击整年。所以我们可以点击2017年,点击2016年,点击不同的选项。我可以控制点击多个月份,看到每次点击时,这个可视化图像在顶部会发生变化。

当我只想关注高亮的数据点时,我可以点击其他地方,清除所有内容。然后我们回到总数。如果我们能在工作表1上做到同样的事情,那就太好了。如果我想查看技术或家具的趋势,目前是做不到的。

我只能看到总趋势。所以,我们再次点击使用过滤器。你可以看到当我们点击每个产品类别时,这个时间序列图在底部发生了变化。再一次,如果我们想更改这个时间序列图以反映这两个类别的情况,我们可以点击两个类别。

现在,我们可以对这个特定的仪表板进行一些其他改进。所以让我们先把它缩小一点。也许再大一点。好了。往下移动一点。我们可能需要某种标题。我们可以通过取这个文本对象来创建它。再一次,拖上去。

我按住 Shift,这样我就可以获得一个浮动框。它会给我一个输入文本的选项。我们暂时输入一个通用标题。如果我想编辑它,可以双击它。我可以更改字体大小。让它变得大一些。

拖到顶部的最外侧。这样我就有了一个漂亮的大标题。我们还要确保给我们的可视化添加一些描述性标题。所以我刚刚双击了工作表 1。你可以看到,当一个工作表出现在仪表板上时,它的默认标题是工作表名称。有时这很有帮助,有时则不是。因此通常,我们想要更改它或添加一些内容。

在这种情况下,工作表 1 是按类别的销售数据。所以我们就叫它“按类别的销售”。并应用它。然后点击“确定”,你可以看到我们现在有了一个描述性标题用于我们的第一个可视化。让我们双击第二个。这是按月份的销售数据。现在我们有了一个描述性可视化,抱歉。

为我们的第二个可视化创建一个描述性标题。从根本上说,我们所拥有的是一个非常简单的销售仪表板,实际上我们只用了几分钟。使用一些基本的 Tableau 原则。掌握这些信息后,我希望你能去探索 Tableau。显然,我们还有很多更高级的视频。

如果你想了解如何做某些事情,如何将大量信息放入仪表板,如何处理不同的数据源。那么请查看我们的频道,订阅我们的频道。我们有关于所有这些内容的信息,还有一个链接到我们刚创建的这个工作簿。

以及数据集,视频描述中的这个示例数据集。所以请下载这些内容并查看。如果你想要更多信息。😊。显然,正如我所说,如果你喜欢你所听到的,请点击“喜欢”,或者如果你有任何问题,请在评论中留言,我们期待在未来的其他视频中见到你。

😊。

Tebleau操作详解,照着实例学做图!数据科学家的必备可视化工具,简单快速做出精美图表!<实战教程系列> - P10:10)表格计算获得同比增长 - ShowMeAI - BV1iq4y1P77U

大家好,欢迎观看另一个关于Tableau的两分钟视频。今天我们将演示如何使用表计算来创建同比变化数字,这真的非常简单,你可以用各种方式布局的数据来做到这一点,但理想情况下,你希望将数据布局为时间序列。现在我们在这个建筑支出数据集中有一些这样的数据,这是美国按细分市场的建筑支出,如你所见,我们按细分市场进行分类,并且覆盖了从2002年到现在的几年,因此我们有足够的年份来计算变化。这些数据不是Tableau软件包的一部分,但你可以从Tableau网站下载,如果你想自己尝试,评论中有链接。

😊。

所以我们要做的第一件事是为我们的仪表板创建布局。第一件事是上面。每个名称,期间名称。那是将给我们年份的部分。我们将按季度拆分。因此你可以看到,我们有2002年至2016年,每个季度都被拆分出来,然后我们将实际上将类别描述放在过滤器中,我们希望只过滤出总建筑支出,在底部有它,我们希望这样做的原因是因为我们不想无意中将太多类别相加,显然我们要确保我们的数据,尽管我们只是玩这个,但我们的数据实际上是正确的,然后我们将把这个值。

😊,我们将把它拖到这个表格中。现在,你可以看到这给我们提供了原始收入数字,这很好。而且由于我们有一个时间序列,Tableau有一个非常不错的选项,你可以点击。😊。按年增长,它会自动计算年增长率。

在过去的版本中,一个不是关键的表格是多么容易。因此,你确实需要手动创建表计算。我实际上会这样做,因为这非常简单。所以,创建第二个值字段,我们会在一秒钟内展示这些是如何匹配的。😊。

我们要在这里点击,快速进行表计算。然后我们将选择百分比差异。当我们点击百分比差异时,它会默认显示与之前值的差异。因此,Q2的支出比Q1大20.99%。Q3比Q2大6.72%,依此类推。现在我们并不想要这个。

我们希望是逐年支出,所以我们将进入这里,使用计算方法。然后我们有几个选项,但我们没有年份或季度。为了做到这一点,我们将进入编辑表计算。😊,在这里你会看到我们可以选择各种计算选项。我们想要做的是选择特定的维度,这将给我们包含或排除各种内容的选项,所以如果你现在看这个,我们正在相对于前一个项目计算,所有内容都被突出显示,所以它是从这个列表中的前一个项目计算的。如果取消选中季度,你会看到在任何年份中都没有数据。

😊,从2002年开始,这是个好兆头。只有第一季度被突出显示。所以这是在计算这组值之间的差异,这正是我们想要的。😊。所以我们本质上又是在计算差异,中间跳过四个内容,但实际上是使用年份进行差异计算的。

我们在这里的值。因此,我们可以关闭这个,然后看两个表之间的值是否匹配,所以无论你怎么做,逐年增长都是相同的。这样做的原因是,这种方式更灵活,因为Tableau会自动添加逐年增长计算。

如果你有日期字段,如果你只有一个代表年份的列和一个代表月份或代表季度的列,那么那个选项将不可用,因此你需要使用这种其他方法来实现。😊,好吧。

感谢您再次加入我们的《Tableau两分钟》节目。如果您想在家试试,数据在评论中。请订阅频道,如果您有任何问题,请在评论中留下,谢谢。

😊。

Tebleau操作详解,照着实例学做图!数据科学家的必备可视化工具,简单快速做出精美图表!<实战教程系列> - P11:11) If Then 计算 - ShowMeAI - BV1iq4y1P77U

嗨,各位,欢迎来到《Tableau 两分钟》系列的另一集。今天我们将演示 if then 计算,为此我们将用两个不同的字段创建一个单一字段,我们将使用关于泰坦尼克号乘客的数据。这是一个相当著名的数据科学数据,你可能已经处理过,如果你还没有处理过,评论区有一个链接供你下载这个特定的数据,这也可以在 Tableau 的网站上找到,这是他们的一个示例数据集。现在你可以看到我们有关于每个乘客的大量信息,包括他们是否幸存、姓名、性别、年龄等等。不过我们感兴趣的是这两个字段:兄弟配偶。

😊。

还有父子关系。我们要做的是使用这两个字段创建一个叫做“有家庭”的复合字段。我们将通过 if 和 then 计算来实现这一点。所以我们去到我们的表格。我们将快速将姓名添加到我们的行架构中。这将给我们一个警告,提示成员太多。我们会忽略它,并说无论如何添加所有成员。然后我们将拿到父子字段。

拖到这里的。😊。

在这里的 Viz 中,我们将添加兄弟配偶并拖到这里的 Viz 中,原因是当我们创建计算字段时,我们希望有一个快速的方法来验证它是否正确,然后我们将创建我们的 FMm 字段,所以我们将在这里点击向下箭头创建计算字段,我们将给它一个名字,比如“有家庭”,这是个好名字,然后我们将开始输入 if。

😊,如果父子关系大于零,那么。哎呀,意外按错了一个键,然后是有家庭。else if。请注意在这种情况下这是一个单词。然后我们将说 else。如果兄弟配偶大于 0,那么它也有家庭。否则。没有家庭。然后我们将输入 end。我写这些计算时总是让我困惑的一件事是你确实需要在每个 if 语句的末尾放一个 end,在这种情况下并不特别复杂,因为显然我们只有一组 if 和 else。

但是如果你有多个嵌套语句,那么弄清楚你放在哪里的结束会很棘手,所以这很重要。😊,练习确保在构建每一层时,你都将完整的 if、else if、else 和 end 放在每一项中。虽然如果你不需要第二个部分,可以跳过 else,没问题,这个计算是有效的,这很好。

我们将点击应用,这将为我们创建那个家庭,在这里进行计算。点击确定,将家庭拖到我们的架子上,然后你会看到当我们有零和零时没有家庭,当我们在其中一个有数字时就有家庭,如果没有则没有家庭,这可能是我们用来帮助预测某人是否在泰坦尼克号上幸存的一个变量。好的,这就是《Tau in two minutes》这一集的全部内容,如果你有任何问题。

请再次在评论中留下它们,数据也可以在视频描述和我们的网站上找到。😊。

Tebleau操作详解,照着实例学做图!数据科学家的必备可视化工具,简单快速做出精美图表!<实战教程系列> - P12:12)添加自定义颜色 - ShowMeAI - BV1iq4y1P77U

嗨,大家好,欢迎来到另一集“Tableau两分钟”。今天,我们将展示如何将自定义颜色调色板添加到Tableau中。可能你有一些公司颜色或者其他东西想添加,你可以做到这一点,但实际上它主要是在tableableau外部工作。所以你需要做的是编辑一个叫做Pres do Tps的文件。

这个文件在你的My tableableau存储库中。你可以看到它。就在这里。😊。你可以在Notepad中打开它。一旦你进入Notepad,你可能会看到一个看起来像这样的文件,因为没有添加任何内容。所以你需要做的,只是一个简单的XML文件,如果你以前处理过XML,如果没有,使用起来非常简单,所有内容都包含在这样的标签内,所以我们有工作簿的开始到工作簿的结束,我们要做的第一件事是添加这个preferences行。

😊,这个preferences行就在这里。然后你可以看到我们有一个叫做test的自定义颜色调色板,这是一个常规的颜色调色板,意味着它将是独立的颜色块,而不是连续的。在这里,我们有每种颜色的十六进制值,你可能还记得以前玩绘画时会用到红色。

绿色和蓝色的值与这些非常相似,它们只是同样内容的互联网语言版本。😊。

一旦你有了这个,你就可以打开Tableau。😊。

当你这样做时,让我们连接一些数据,没错。在这个特定情况下,连接什么并不重要。所以假设我们拿国家,将其拖到Mark卡上,然后在这里编辑颜色。你可以看到我们的颜色调色板。😊。

Colt就在底部。这是我们在preferences表中添加的那个。所以让我们从头到尾展示整个过程。你需要做的是去一个互联网浏览器获取一些颜色的十六进制值。color hex.com是一个不错的网站。如果你点击最新调色板。

他们这里有一套调色板。我对这个McCo色调调色板相当喜欢。所以你可以看到我们有五种不同的颜色。对我来说,它们似乎是互补的。然后你有每种颜色的十六进制值。这些就是我们想要放入我们的tableau文件中的内容。

所以我们将打开preferences Tps。😊。

将它拖到这里,这样你就可以看到所有内容在一起。然后我们将添加一个新的颜色调色板。你会看到所有内容都在这两个调色板之间。只需在开始和结束时添加即可。然后你可以看到我们为另一个调色板命名为测试。

既然这个有名字,我们就叫它 Mac 色调。这是一个常规的,针对每个项目将会有独特的颜色,所以我们将与维度一起使用。然后我们有五种不同的颜色,所以我们来复制五个。😊 就这样,首先我要做的就是删除所有颜色,抱歉。

删除我们现在所有的值。😊 删除后,我将把这些十六进制值复制并粘贴到记事本中。好了,完成后我们将保存它。然后我们需要再次打开 Tableau。😊

将重新连接到数据,确保每次更改调色板中的颜色时都关闭并重新打开 Tableau。否则它将不会出现在列表中。我们只需将国家拖到我们的图表卡中,然后我们可以编辑颜色,下面你会看到我们的新调色板。

😊

然后我们可以将其分配给我们的国家。这就是如何在 Tableau 中使用自定义颜色。如果你有任何问题,请在评论中留言。如果你喜欢我们的内容,请订阅我们的频道。视频描述中有数据链接,这次我们还包含了一个快速链接,以便你添加颜色调色板所需的 XML。

如果你有任何问题,请告诉我。下次再见。😊

Tebleau操作详解,照着实例学做图!数据科学家的必备可视化工具,简单快速做出精美图表!<实战教程系列> - P13:13)创建和组 - ShowMeAI - BV1iq4y1P77U

大家好,欢迎来到《两分钟内掌握Tableau》的另一集。今天,我们将向你展示如何使用组将维度组合在一起,或者将维度内的层级组合在一起,以创建一种更高层次的类别。因此,我已经连接到了一个原因数据集。这只是一些关于不同类型汽车的信息。

我们要做的是将这个气缸😊维度分组。我将把其中一些组合在一起,使它们更有用。

要创建一个组,你只需点击这个小下拉箭头,选择创建,然后选择组。

一旦你有了这些,我们就可以开始将它们分类。因此,也许我们想把所有大型引擎放在一起。我们将12缸和8缸放在一起。我们称之为具有大量气缸的大型引擎。然后我们会把5和6抓在一起。然后我们会把3和2抓在一起,称它们为非常小的引擎。

你会看到我将四个单独列为自己的类别。因此我们继续应用它。你可以看到它弹出为默认名称,仅为维度的名称,后面加上组。然后它旁边有一个小纸张图标,告诉我们这是为其他维度计算的组。所以请继续点击应用,然后我们将其拖动。

现在你可以看到我们已经基于某些内容创建了组。

这些是基于我们将它们放入的组。现在,还有其他一些事情我们可以做。值得注意的是,这些组并不一定是动态的。因此,如果我们有另一组气缸,举例来说,我们这里没有10缸引擎,只包含12缸和8缸。

所以如果我们有一个10缸引擎,它将作为数据集中的新行弹出,我们必须去手动将其分配到一个组中。

最好在创建组之前确保所有潜在值都已表示,但即使没有也非常有用。现在,我们可以做的另一件事是包括另一个类别。我们开始时没有“其他”类别,只有四个单独存在。但如果我们包括“其他”,然后取消分组。

你可以看到,但是当我们取消分组时,它们并没有落入一个仅有单独项目的桶中。它们被归类在这个其他类别中。因此,我们可以有大型引擎、5缸和6缸引擎,然后是其他。就是这样。这就是它的工作原理。所以现在你可以看到,四个不再单独存在,2和3也不再单独存在。

它们在一个单独的组中。如果我们选择排除其他类别,您会发现我们只得到4、3和2这三个单独的类别。是否这样做取决于您使用该分组字段的上下文。这在某些时候很有帮助,特别是当您不想要单独项时。

然后在从数据库中提取时,它们会弹出。您只需将它们包含在其他类别中。这很有意义。只需保留该类别即可。好了,关于使用组的内容就到这里。它们的行为与其他维度一样。所以您可以自由拖动它们。

实际上可以用它们代替一个维度。所以感谢您观看本集的《Tableau两分钟》。如果您有任何问题,请在评论中留言。视频描述中有工作簿的链接和数据集。如果您喜欢我们分享的内容并想要更多Tableau技巧,请给我们点赞并订阅我们的频道。😊

Tebleau操作详解,照着实例学做图!数据科学家的必备可视化工具,简单快速做出精美图表!<实战教程系列> - P14:14)创建组合轴图 - ShowMeAI - BV1iq4y1P77U

大家好,欢迎收看《两分钟学会Tableau》的另一集。今天,我们将向您展示如何创建一个组合轴图。这是使用Tableau时需要掌握的基本基础之一。它也是桌面合格助理级别Tableau认证的一部分。

这非常简单。我连接了超级商店的示例数据集。我们要做的是创建一个不错的基线。我将把订单日期拖到这里,设置订单日期。以便我们在季度级别上有一些数据。然后我们要添加销售额。

然后我们要将销售额拖到行架上。😊。

当我们这样做时,你会看到我们为每个季度得到了销售的折线图。

然后我们要添加利润。我们也要将其拖到行架上。现在,你会注意到销售和利润在这里一个叠一个。我们不想这样。我们希望它们在同一轴上组合。所以只需将鼠标悬停在这个小三角形上,拖到销售轴上方。将利润拖到销售轴上。你会看到两个绿色条形图并排显示。

将其拖到这里。这样你就得到了这个双轴图,结合了我们在行架上的度量值。这里的度量值架显示我们所展示的内容。因此,这条橙色线现在是。

这里是销售,蓝线是利润,二者在同一比例尺上。这不是一个双轴图。如果我们有一个双轴图,它们将有独立的比例尺。组合图则使用相同的比例尺,只在一个y轴上,而不是像双轴图那样有两个y轴。

如果我们想要添加更多,可以将折扣拖到这个架上。显然折扣非常小,因此并没有明显显示出来。你也可以将数量拖到这个架上。同样,数量也很小,不太明显。但你可以看到如何在这个度量值架上添加和移除度量。

本集的《两分钟学会Tableau》到此结束,这是一种非常快速简单的创建组合轴图的方法。如果你有任何问题,请在评论中留言。如果你需要,视频描述中有工作簿和数据集的链接。如果你喜欢我们的内容,请给我们点赞并订阅我们的频道,我们下次见。

Tebleau操作详解,照着实例学做图!数据科学家的必备可视化工具,简单快速做出精美图表!<实战教程系列> - P15:15)创建子弹图 - ShowMeAI - BV1iq4y1P77U

大家好,欢迎收看《两分钟学会Tableau》的又一期节目。今天,我们将向您展示如何创建子弹图。子弹图是一种很好的数据展示方式,可以显示目标以及朝着该目标的某种成就。因此,我们将连接一些包含虚构销售人员销售目标的数据。

因此,你可以看到我们的销售人员目标数据中,有约翰、吉姆、詹姆斯和杰夫这四位销售人员按月份的数据,以及他们当月的销售和目标😊。

现在,创建这些图表最简单的方法就是将销售人员拖到行架上,将目标和销售拖到列架上,然后使用显示功能来创建一个子弹图。这样你就可以看到,条形图代表目标,而黑线代表销售。这并不是一个合理的顺序。

所以我们实际上可以通过单击交换参考线字段来轻松交换这些图表。现在我们有目标😊,这些是由这些线表示的。然后我们有销售的蓝条,表示他们实际售出的数量。显然,当这条线高于黑线时,他们就超过了目标。现在。

使用“显示我”功能来创建这个图表很好,但我认为如果你能够自己创建,就可以获得更多的自定义选项。所以我们将把销售人员拖到行架上。我们将把销售拖到列架上。这样就创建了我们的条形图。

接下来,我们将把目标拖到详细信息架上😊,然后添加一条参考线。这条参考线我们将按单元格来设置。每个条形图对应一条。我们将其设置为总和。我们将其设置为目标的总和,并使我们的线稍微厚一些,颜色深一些。

接下来,我们将删除标签,这样我们就只有这个条形图,显示每个销售人员的目标。现在,如果我们回过头来看看这个图,还有一些阴影部分。这是很容易做到的。所以我们将添加第二条参考线。

不过这次,我们将添加一个分布。再次,我们将按单元格来做。平均值的60%到80%是可以的,但我们要确保这是目标的总和,而不是销售的总和。再次点击以退出,删除标签,然后使用填充下方选项。

这将填充到60%,使用这种深灰色,然后到80%用稍微浅一些的灰色。点击,哦,再次现在。我们在这里有了阴影,但你会注意到条形图稍微细了一些。所以我们可以去掉这个大小。稍微调小一点。你会看到每位销售人员现在都有一个到60%目标的深色阴影。

然后这个较浅的阴影填充到他们目标的80%。显然,100%目标的条形图,以及这条代表他们实际达到的蓝线。因此,在一个非常小的空间内压缩了关于人们相对于特定目标表现的大量信息。这就是本期《Tableau 两分钟》的全部内容。如果你有任何问题。

如果你有问题,请在评论中留言。如果你喜欢我们说的内容,请订阅我们的频道。像往常一样,视频描述中有工作簿和数据集的链接。下次再见!😊

Tebleau操作详解,照着实例学做图!数据科学家的必备可视化工具,简单快速做出精美图表!<实战教程系列> - P16:16)突出显示条形图上的最大值和最小值 - ShowMeAI - BV1iq4y1P77U

大家好,欢迎来到另一个《两分钟学Tableau》的节目。今天,我们将讲解如何在条形图中突出显示最小值和最大值。如果你观看了之前的视频,你可能已经看到了我们是如何在折线图中做到这一点的,这有点复杂。我们必须使用一些双轴进行一些奇怪的操作,并创建一个表计算,还有那些有趣的东西。

但使用折线图有些麻烦,幸运的是,使用线形图稍微简单一些。所以我们将继续拖动订单日期。😊。

拖到我们的行货架上。哦,抱歉,是我们的列货架。去掉季度。然后我们将销售额拖到行货架上。接着我们将把这设置为条形图,而不是折线图。

现在,由于我们将其设置为条形图,我们可以取最小值、最大值和中位数。

你可以看到,我们已经提前完成了。颜色已经根据最大值和最小值为我们设置好了。但让我们像之前那样编辑一下。我们只是想在每一年内计算这一点。所以我们将设置特定的维度。我们将移除年份。现在你可以看到。

我们已经突出显示了最小年份和最大年份。作为提醒,让我们来看看这个计算。你可以看到。

一些销售额。抱歉,我们寻找的是,当某个月的销售总额等于该窗口的最大销售额时的最大值。现在,我们设置窗口为整整一年。所以在这种情况下,整整2014年就是我们的窗口。如果该月份的销售总额等于该窗口内的最大销售额。九月份就是如此。然后我们将其称为最大值。

我们将突出显示蓝色。

否则,如果销售总额是最低值。在那个窗口内。好的,所以它仍然在2014年。到2月份,这就是在那个时间窗口内的最低值。然后我们将称之为最小值,并将其标记为红色。否则,其他的我们并不特别关心。

我们只想查看最大值和最小值,它们将被标记为灰色。

你可以以多种方式使用它来提取特定值。因此,再次强调,突出最大值和最小值的方式非常有帮助。使用颜色为仪表板增添亮点的绝佳方式,并帮助展示某个月份的影响力或缺乏影响力。😊感谢您观看本期的《Tableau in two minutes》。如果您有任何问题,

请在评论中留下。和往常一样,视频描述中有数据集和工作簿的链接。如果你喜欢我们分享的内容,请给我们一个赞并订阅我们的频道,下次见。😊!

Tebleau操作详解,照着实例学做图!数据科学家的必备可视化工具,简单快速做出精美图表!<实战教程系列> - P17:17)数据解释器清理数据 - ShowMeAI - BV1iq4y1P77U

嗨,大家好,欢迎收看《双分钟Tableau》的新一集。今天,我们将讨论如何使用Excel数据解释器来清理一些你在工作簿或Cvs中可能有的数据,这些数据没有良好的表格格式。我指的是什么呢?好吧,这里有一个工作簿,我设置了这个问题给我们。

你会看到在这个选项卡上,所有内容都相对对齐,显然。除了这个额外的行。😊 在第二个选项卡上,它的对齐也很好,尽管我们缺少一个标题,并且有一行多余,但在这个所有数据选项卡上。你会看到顶部有一个间隙。然后是第一个表格。如果我们向右滚动。

你会看到在下面错位的其实是底部的第二个表格。所以如果我们把它作为一个直接的数据表读取,没错,你会有这一列。然后底部会是空白。然后一旦我们跨到这个N列。向下滚动,你会看到里面会有数据。

所以,这在传统的Tableau格式中不能直接连接。让我给你演示一下我们该如何修复它。这是一个Microsoft Excel文档。我将打开它。现在你会看到,如果我们导入前两个选项卡。😡。这是第二个选项卡,看起来不错。而第一个选项卡也看起来不错。

但是如果我们把所有数据选项卡拉进来。你会发现表面上看起来还不错。但如果我们向下滚动,你会看到有一堆空值。如果我们用空值横向滚动,你会看到我们的第二个表格出现在下面。现在,Tableau已经去掉了两个表格之间所有的空行。

对吧?你记得吗?在顶部有一些行。Tableau把它们去掉了,还有一些行在表格之间。所以如果我们往下看看,你可以看到在表格之间。Tableau已经决定这些不相关,这很好。但实际上。

我们希望它成为两个独立的表格。所以我们可以点击这个数据解释器选项卡。这样做会查看你的工作簿,试图找出表格的位置。所以你可以看到,现在我们的Excel工作簿不再只有三个选项卡。我们实际上多出了两个,这些都是在所有数据选项卡上的范围。

所有数据选项卡有点乱。所以让我们先把它拿掉,然后看看这个第一个所有数据选项卡。你可以看到现在只包含我们在选项卡顶部的年度数据。我们把它放回去,添加另一个。这一个。

包含我们在选项卡右下方的季度数据。这部分。抱歉,Excel,实际上是 Tableau 也允许你查看结果。因此,如果我们点击这个“查看结果”按钮,它将打开一个新的 Excel 工作簿。在我的情况下,它将使用 OpenOffice,因为我将其设置为默认。

它将提供数据解释器的结果。因此,你可以看到红色的是列标题,绿色的是数值。还有一些其他内容在这里。实际上,前两个选项卡并不重要。有趣的是这个“所有数据”选项卡。所以我们在这里可以看到。😊

它已经将这个第一行识别为列。其他内容都是绿色的。但实际上有趣的是,当你查看这个“所有数据子表”选项卡时,你可以看到这个第一张表周围有一个边框。如果我们向下滚动,第二张表周围也有一个边框。

它已将这些内容分解到我们的工作簿中的两个新选项卡上。第一个选项卡包含我们在顶部的所有内容。大致上,从 E6 开始在左上角。然后这是我们在右下表中的所有内容。它已将这些分开,以便我们可以分别处理。

另一个我喜欢的功能是,它将所有的 N 转换为 null 值。因此,某个特定字段将不会有 N A 文本值,而是 null 值。这样,我们可以使用其中一个,就像常规数据源一样。构建可视化。如果你有任何问题,请在评论中留言。

如果你喜欢听到的内容,请继续订阅我们的频道。否则,我们下次再见。

Tebleau操作详解,照着实例学做图!数据科学家的必备可视化工具,简单快速做出精美图表!<实战教程系列> - P18:18)透视数据源中的数据 - ShowMeAI - BV1iq4y1P77U

嗨,各位,欢迎来到另一集“在两分钟内了解 Tableau”。今天,我们将讨论如何使用透视功能将按列的数据转换为按行的数据。我说的是什么意思呢?好吧,我已经连接到一个数据源,该数据源提供了不同运动的技能排名。😊,所以你可以看到,我们在左侧有运动项目。

我们有许多不同的技能类别,以及每个技能类别的 10 分制排名,还有一个总数和排名。我认为这是一段很久以前的某个“变革星期一”的数据。但如果我们想将其转换为按行的,而不是按列的,那该怎么办呢。

我们拥有的是按列的数据。所以我们必须将所有内容相加,以获得这个总数,而这些数据都是跨越行的。Tableau 允许我们通过数据透视将这些数据变成一列。😡,所以我们要做的是点击所有这些,哎呀,点击所有这些列。我刚点击了第一个,按住 Shift。

然后点击最后一个,再点击任何列上方的向下箭头,然后点击透视。

这样做是将按列的数据转换为按行的数据。现在我们有一个字段表示技能类别,还有一个字段表示值。让我们重命名这些字段,使它们更有意义。技能类别。就在这里。我们将其重命名为目前的值或评级。

然后我们有了运动、总数和排名。现在这些在运动、总数和排名中的字段都会为这些值重复,对吧。所以拳击的总数会出现很多次。所以我们并不想要总数和排名字段。所以我们可以隐藏这些。现在我们有了。

仅仅是运动、技能类别和价值。在 Tableau 的术语中,这使得数据在处理时变得更加简单,因为它更喜欢按行的数据而不是按列的数据。😡。

让我们进入一个工作表。我们将把运动放在右侧,或者把技能类别放在顶部。你可以看到,如果我们拖动值出来,这几乎是我们之前的数据结构。我们所做的就是把这个技能类别拿出来。

现在我们已经将运动和技能类别以列的形式而非行的形式展示。这就是本期《两分钟学 Tableau》的内容。视频描述中有数据集和工作簿的链接。如果你有任何问题,请在评论中留言。如果你喜欢我们的内容,并希望获取更多 Tableau 的技巧和窍门,

那么请订阅我们的频道,我们下次再见。😊。

Tebleau操作详解,照着实例学做图!数据科学家的必备可视化工具,简单快速做出精美图表!<实战教程系列> - P19:19)维度与度量以及离散与连续 - ShowMeAI - BV1iq4y1P77U

嗨,大家好,欢迎收看又一期《Tableau两分钟》。今天,我们将讨论维度与度量之间的区别,以及Tableau中离散和连续项之间的区别。😊基本上,这些项在我们的数据集中每一项都是一列。如果我们查看数据源,你可以看到维度和度量面板中的每一项都代表数据源中的一列。

现在,有两种类型的列。我们有想要划分数据的列,所以我们可能想要进行某种分段;还有一些我们想要测量的东西。

我们想要测量的东西像销售数据。你可以看到我们有销售、利润、折扣和数量。这些都是我们会进行求和、汇总和平均的东西。基本上,就是数字。在维度这一侧,我们有一些我们可能想要比较的东西,所以我们可能想比较不同产品之间发生的事情。

我们可能想比较不同区域之间发生的事情。这些都是将我们的数据集划分开的东西。让我们看看这在实际中的运作。我们以产品名称为例,将其拖到行架上。

然后拖出销售数据。

另外,把它放到行架边缘,放到列架上,就这样。现在你可以看到,我们按产品名称,有销售总和。

对于该特定产品,现在可能我们不想看销售数据,而是想看区域。这一切在做的就是我们在以不同方式划分数据,并且告诉我们如何汇总销售数据以及如何比较。这就是我们的维度所做的。而我们的度量就是我们汇总的东西。

所以我们可以做一些销售的汇总,也可以查看利润的总和。

依此类推。现在,当我们拖动这些时,你会注意到区域有一个蓝色小药丸,利润有一个绿色小药丸。蓝色小药丸代表离散项。所以每个项都是单个项。比如说,我们不能将中部和东部的结果相加,这样做没有任何意义。所以这些都是单独的点。

有些人称之为名义型,你可以在其他语境中称它们为文本字段或字符串。这其实意味着它不是我们要汇总的东西,而是我们用来以不同方式划分数据的东西。😡这就是所谓的离散单点。而利润则是连续的。

这也被称为数字变量。在其他情况下,我有时会称之为区间变量。这是我们可以求和的,可以取平均的,可以计数的,等等。这是我们可视化拼图中的两个不同部分。维度通常是,但并不总是离散的。

度量几乎总是连续的,但我们可以将,例如,我们的产品名称转变为一个度量。然后,它会计数。

你看到,现在我们在计算产品名称的数量。因此,不仅仅是有产品名称,我们将其转变为所有不同产品名称的计数。所以这算是一种度量。

让我们继续把这个移回去。就是这样。好的。现在,这些在可视化中的工作方式,正如我所说的,是我们通常会使用维度来划分数据,然后以某种方式聚合度量,或者对度量进行某种计算,以给我们这个部分。

我想给你展示的另一件事是,你实际上可以有一个连续的维度。所以如果我们把订单日期拿掉,你会看到它默认。

以离散形式表示日期。因此我们有离散的年份,离散的季度,但我们实际上可以使用下面这些选项,看到我们有年份、季度、月份、日期。这些在顶部部分都是离散的,但在底部部分,这些将是连续的。所以你现在看到药丸变绿,因为我们在查看连续版本。

可视化略有变化。如果我们想查看销售额,你可以看到我们现在有一条线图,因为我们在查看一个连续的日期。

根据我们在这里所做的,我们可能仍然有一个季度,但这现在会分段,看到它会在年份之间分开,因为我们在使用离散的年份和季度。而如果我们回去使用年份和季度。

这仍然有点分段。

因为我们有季度在里面。所以现在它看起来不是对每年进行分段,而是我们现在有一个连续的,因为它是绿色的年份和季度贯穿我们的数据集。所以这就是维度和度量如何运作的基本介绍。正如我所说,维度用于划分我们的数据,而度量通常是我们想要求和的东西。

维度通常是离散的,但不总是如此,因此它们包含单独的项目,而度量几乎总是连续的,因为它们是数字。它们是我们希望进行求和、平均或其他分析的内容。这就是本期《Tableau两分钟》的内容,如果你有任何问题,请在评论中留言。如果你喜欢我们的内容,请点击订阅我们的频道,我们下次再见。

Tebleau操作详解,照着实例学做图!数据科学家的必备可视化工具,简单快速做出精美图表!<实战教程系列> - P2:2)上下文过滤器并提高仪表板性能 - ShowMeAI - BV1iq4y1P77U

大家好,欢迎来到另一集《Tableau 两分钟》。今天,我们将讨论上下文过滤器以及如何使用它们来改善仪表板的性能,以及它们如何影响特定表格上显示的内容。为此,我们将使用订单表连接到超市数据集。😊。

然后我们要去第一张表。我们将非常简单地演示这一点,只使用。我对类别感到抱歉。我们将把类别放在过滤器上。我们将选择所有这些。然后我们将子类别放在行上。

然后我们将销售额放在过滤器上。这样我们有了一个不错的列表。我也喜欢对其进行排序。只需按销售总额降序排列,这样我们就能得到一个整洁的图表。现在,假设我们只想在可视化中显示前五个子类别。我们可以通过简单地应用一个过滤器来设置为按销售额前五名来轻松做到这一点。

😊。

我们点击销售总额 O。现在你可以看到我们的前五个类别,但这有点挑战性。所以如果我们显示类别过滤器,你会看到所有子类别中有三个顶级类别。如果我们将它们进进出出,你会注意到我们的前五个不再是前五个。有时是前三个。

我们甚至可以将其减少到前一个,因为它过滤掉了每个类别。但实际上并没有用其他类别的项目替换子类别的项目。这样做的原因是,因为 Tableau 处理前五个过滤器的方式是,它从数据库中获取所有数据,计算出前五个,在这种情况下是前五个子类别。

然后在计算出前五个之后再应用过滤器。所以每次我们移除一个类别时,我们只是从前五个中移除那些项目。我们得到的前五个项目就是不包含该类别的结果,在这种情况下,只剩下前三个。上下文过滤器的作用是改变顺序。

其他所有操作现在只会在我们将其转换为上下文过滤器后应用。所以你只需点击它,然后点击“添加到上下文”。我们现在所做的一切只会应用于已经通过该类别过滤器的数据。这在总体上意味着,当我们取消选中其中一个类别时。

例如,如果我们取消选择家具,我们仍然有前五名,排除了家具类别的任何数据。因为家具数据没有通过我们的上下文筛选器,而我们的前五名仅基于剩余的数据进行计算。

为什么这特别重要呢?显然,这有助于前五名。但更重要的是,如果你在仪表板中使用这个,特别是在性能较差的仪表板中,因为每个筛选器现在只需在更少的值上进行计算,因为现在我们没有家具的数据流入,我们只有办公用品和技术。这将加快上下文筛选器后任何后续筛选器的处理速度。

这也将帮助加速任何计算或类似的事情。这会对你的可视化和仪表板的性能产生显著影响。另一件事是,它只会显示在其他筛选器中有意义的值。所以,如果我们现在查看子类别的筛选器,你会看到。

每当我们添加或移除内容时,只有有意义的值会出现在我们的子类别筛选器中。这就是本期《Tableau两分钟》的内容。赶快试试上下文筛选器,告诉我们它们对你来说效果如何。如果你有任何问题,请在评论中留言,像往常一样。

视频描述中有数据集和工作簿的链接,我们下次再见。😊!

Tebleau操作详解,照着实例学做图!数据科学家的必备可视化工具,简单快速做出精美图表!<实战教程系列> - P20:20)集操作创建动态集 - ShowMeAI - BV1iq4y1P77U

嗨,大家好,欢迎来到另一期《Tableau 两分钟》。今天,我们将介绍 Tableau 2018.3 的一个新功能。那就是动态添加和移除集合中的项目,以及如何在可视化中使用它。因此,😊,之前你必须通过创建一个新的集合来定义集合。

右键点击字段,然后创建一个新集合。如果我们想根据产品子类别创建一个新集合。这都是你在 Tableau 中应该拥有的超级商店示例数据集的一部分。如果我们想创建一个集合,右键点击子类别,向下滑到集合。

然后我们将能够根据需要添加和移除集合中的项目,比如我们只想要集合中的这些顶部几个项目。然后我们就创建了集合。然而,在2018.3中,你可以动态添加和移除项目。那么你将如何在可视化中使用这个功能呢?我们要做的第一件事是创建两个不同的可视化。一个是使用订单日期的时间序列。在列架上。

然后我们将在这里拖出销售数据。我们将展开这个,以便获得一个不错的每月视图,然后我将其转换为柱状图,你会马上明白原因。因此,我已经将其转换为一个漂亮的柱状图,这只是2014年到2017年每月的销售情况。

接下来我要做的是添加一个稍微不同的视图。所以我们将把区域拖到行架上,这里有四个区域。然后我们将添加数量。这是总销售单位。我们将把数量的总和添加到这些区域中。然后在上面使用区域。

我们将继续创建一个集合。

我们将把它称为区域集合。我将让它保持为空。

目前,这个功能的真正强大之处在于我们创建仪表板并拖出这两个工作表时。因此,我将带出我们的时间序列。

我只是把它放在那里。

一路向下到底。我将把我们的区域拖到这里,我们将使用这个区域来改变底部图表中的内容,并向我们展示每个区域对该特定月份总销售的贡献比例。

所以我们要回到我们的时间序列图表。我们将把这个区域集合拖到颜色上。你会看到目前集合中没有任何内容。因此,一切看起来都是灰色的。

没问题。我们要添加项目到集合中,将会在这里到仪表板。我们将创建一个新动作,并添加更改集合值。我们希望这由表2驱动。我们希望在表1上操作。然后我们将使用区域集合。这告诉我们哪个数据源,这个顶部框。

我们将选择我们的订单,然后我们想要区域集合。我们想要做的是当我们清除选择时,想要从集合中移除所有值。这将意味着当我们点击一个区域时,它将在下面的图表中高亮。当我们取消点击,它将会。

从下面的图表中移除它。所以我们将返回到我们默认的灰色。完成后。当我们点击一个项目,然后点击集合1时,你可以看到它是如何改变下面的图表的。现在,有几件事我不太喜欢。

第一个是默认行为,正如你所看到的。我们必须在工具提示中点击某个东西才能做到这一点。我对此不太喜欢。所以我们会在稍后更改。第二件我不太喜欢的是,每当我们高亮这些多个东西时,它们又出现在顶部,而不是底部。

我想看到的是,我希望我的集合在底部,我的集合在顶部。所以我只是暂时保留这些高亮。然后我们将在这里进行更改,而我们要做的就是对蓝色进行排序,相对于灰色。

另一种方式,我应该点击哪里,它开始上升,然后点击下降,点击上升。现在你会看到集合中的内容。蓝色条在底部显示,而集合外的内容在顶部显示。我认为这更直观。既然我们在这里,让我们继续添加。

一个标签。到销售额,这会告诉我们总销售额是多少。

然后我们将回到这里,改变集合动作的工作方式。所以我们刚刚点击了出去,没有任何高亮。我们将返回到我们的动作仪表板。我将点击这里的集合动作进行编辑。然后不再是在菜单上运行动作。

我们必须对选定内容执行操作。我将回到这里,在清除选择时从集合中移除所有值。因此,现在我们有一个空集合。当我们向集合中添加值时,你会看到数字变化。所以如果我们想要所有数字,这里就是所有数字。如果你只想选择南部和西部,你可以仅选择南部和西部,南部和东部。

你可以选择南部和东部,你会看到数字也会动态变化。因此,每次我们点击这些集合之一时,我们都会获得集合中的数字和剩余的数字,集合外的数字。这是关于如何在可视化中使用动态集合的小介绍。如果你有任何问题,请在评论中留下。

如果你喜欢听到的内容,请继续点击订阅,以获取更多 Tableau 的技巧和窍门。像往常一样,视频描述中有数据集和工作簿的链接。😊我们下次再见!

Tebleau操作详解,照着实例学做图!数据科学家的必备可视化工具,简单快速做出精美图表!<实战教程系列> - P21:21)关系、联接和合并 - ShowMeAI - BV1iq4y1P77U

嗨,大家好,欢迎来到《Tableau两分钟》节目。我知道自上次发布以来已经很久了,但我找到了更好的时间。希望在接下来的几周和几个月里,我们能做几个视频。不过我想首先介绍的是Tableau 2020中引入的新功能。

这就是对数据模型的改变,现在你可以创建关系,而不只是像写SQL脚本那样连接和联合你的数据。关系让事情变得超级灵活。所以我有点兴奋,😊想要深入了解它们。

那么我们为什么不谈谈你为什么想使用它们,以及它们为什么比旧方法稍微简单一点呢。这些连接不需要任何SQL知识就能很好地工作。你知道的,你可以在不知道是左连接还是右连接的情况下建立关系。因此,你将花更多时间去探索,而不是花费所有时间来准备数据。

可视化、共享等等。我们的工具还将帮助规避一些粒度问题,Tableau对你放置哪个表以及关系定义的顺序不那么敏感。因此,如果你没有把最细粒度的表作为所有其他表的连接对象,有时会导致行重复或其他错误;或者如果你有两个不同聚合级别的表在一起连接时,可能会造成奇怪的数据重复,你必须非常小心,花很多时间清理数据,才能避免这些问题。

我不知道你怎么样,但我花了很多时间清理我的数据并对齐,以确保在导入到Tableau时所有的聚合都是正确的。Tableau还引入了一个叫做智能聚合的概念,这意味着如果你使用来自多个源的数据,就减少了意外重复数据或错误答案的风险。

所以Tableau在后台所做的是,不再将所有内容预先打包成表,而是根据你在视图中带入的部分,针对每个可视化在不同级别上聚合数据。我们稍后会看一下这个。但首先,我们要看看关系。

因为你不需要在早期做出严格的选择来加入你的数据,这允许了这种灵活性。因此,在构建数据时我们将看到它的样子。我首先要做的是连接到这个书店数据集。这是 Tableau 的一个示例,说明你为什么可能想要使用关系而不是传统的连接等。

这是一个很好的数据集,因为我们可以整合很多东西。首先我们将拉入这个书籍表。😊这就像数据的基础表。通过这个基础表,我们将从这个表中构建关系,因此概念是我们有一些关于书籍的数据。

书籍可以有一本书显然是一种书,但一本书可以有多个版本,因此它可能有硬壳版和软壳版。此外,我们还有关于作者的信息,出版商是谁,是否有任何评分或奖项,我们也有一些关于这些书籍的销售数据。因此,我们添加了第一个表格,这里是书籍表。

我将要添加的另一个表是奖项表。😡当我们添加奖项表时,你会看到我们得到这个编辑关系对话框。我们可以选择书籍表中的字段和奖项表中应该匹配的字段。

定义这两个之间的关系。如果我们想的话,我们还可以添加更多字段,如果我们需要基于多个标准进行连接,我们也可以添加这些字段。我们也有这些性能选项。现在,性能选项类似于你在进行连接时可能会想到的。

但它们稍微不同。因此,首先,我们可以调整连接的基数。我认为关于这两个选项需要记住的是,如果你不确定是否应该更改,可能应该保持默认设置。默认设置在大多数情况下表现良好。如果你在合适的数据集上更改其中一些选项,你可能会获得一些小的性能提升。

但风险在于如果你在错误的数据集上这样做,它会给你错误的信息。因此,默认是多对多的。如果你的数据源中每个值只有一行,你可以将其设置为一。当你这样做时,Tableau 会预先汇总数据。

它在将数据拉入可视化之前将数据整合在一起。这有一些性能增强,对吧?这使得事情表现得稍微好一点,尤其是当你有一个大数据集时。但是如果你认为你有一行,但实际上有多于一行,这会在这个数据集中重复项目,从而导致问题。

对,你可能会得到一些计算和其他内容的错误答案。所以总结来说,如果你不绝对确定每个值在这个键中只有唯一行,应该保持为多对多。现在,关于引用完整性,默认值可能是最好的,但你有两个选项。

你可以选择一些记录匹配或所有记录匹配。😊 如果你选择一些记录匹配,Tableau 将会查看哪些匹配,对吧?在构建查询时,它会查看哪些关系匹配,哪些不匹配。如果选择所有记录匹配,你可以告诉 Tableau 我们已经知道所有记录都匹配,这在后台会有所帮助,对吧?这将使连接更简单,并可能加快你的可视化响应。

😡 对于小数据集,这不会有太大差别,但对于大数据集,这可能非常有帮助,但再次强调,如果你不确定,最好保持默认设置,因为如果你不保持默认或将其设为所有记录匹配。

但是所有记录并不匹配。你将会丢失数据。所以我们要做的是,我们已经走过这个对话框。我们继续添加作者表。你会看到奖项是基于标题连接的。

现在我们有一个与作者 I 相关的内容,所有选项都是相同的,对吧?所以我们将保持默认的多对多连接记录匹配和记录匹配。😊 现在,为什么我们不试试一个更具挑战性的呢?

我将添加信息表。到目前为止,当我们添加作者和奖项表时,连接的字段在两个表中有相同的名称。但是当我们添加作者表时,两个表中没有相同名称的字段。因此,它不确定该连接什么。我们会看到这个红色感叹号和三角形,它说我们必须选择匹配的字段以创建这个关系。

现在,Tableau 新版本的一个伟大之处在于我们可以创建所谓的关系计算。这意味着我们可以在编辑关系对话框中合并这两个字段,而不必在数据源中或找其他方法。如果你没有两个匹配的字段,Tableau 的灵活性就不大。

即使你在这两个字段中可能有相同的信息。现在,我从查看数据中知道,我会在视频描述中发布数据链接。😊 我知道这个书 I 字段是书 I 1 和书 I 2 的组合。所以我们将连接书 I 1 和书 I 2。为此。

我们将创建我们的关系计算。这只是一个常规的计算对话框。看,我们可以在这里侧边弹出所有的函数,我们将说book I 1加上Book ID 2。应用它。我们已经创建了连接。当你查看它时,你可以看到右边的数据,book I 1是两个字母,然后book I2是三个数字。

如果我们点击图书,并查看图书表。你可以看到,那又是那两个字母加上三个数字。所以现在这已成功连接了。现在更灵活了。说实话,T SQL比SQel 2容易得多。好吧。我们将在这里添加几个表,我将向你展示其他内容。

我们要做的第一件事就是添加版本表。注意你拖动的位置,对吧?不同的,它试图连接到不同的表。我们想连接到图书表。所以我们希望确保这个小橙色波浪线在我们放下时指向图书表,而不是其他表。😊再一次。

我们希望在book ID上连接。所以没问题。现在,我们有了版本表。我们将销售表连接到它。我们将把销售表拖到这里。😊销售表连接到版本表。哦,等一下。我把它连接到了错误的表。这可不太好。好了,搞定了。好的。

现在我们通过ISBN号码连接到版本表。如果你了解书籍,ISBN号码是用来识别特定版本的。因此,现在我们已经拖出Q1表,我们有一些销售信息,这些信息将很好地汇总在一起。但我们为每个季度有不同的销售表,所以我们有一个Q1,一个Q2,一个Q3。

还有一个用于Q4。😊 所以我将要做的是我们需要将这些合并在一起,对吗?所以联合是一个SQL概念。它在tableau中仍然存在。我们并没有完全抛弃它。联合的作用是将两个结构相同的表合并在一起。基本上就是将它们堆叠在一起,这样我们得到的不是一个表,而是。抱歉。

现在你有一张包含两个表所有信息的表,而不是两张表。现在,所有列都需要相同,并且它们都需要是相同的数据类型。所以有一些限制。但从根本上说,这就是我们要做的。这就是我们想用这些表做的,对吗,因为我们有Q1的销售数据。

我们有Q2、Q3和Q4的销售数据,我们想把它们放在一起,以便我们拥有完整的一年。因此我们将使用这个Q2数据。并创建两个表之间的联合。即一个表叠加在另一个表上。我们将拖动它,直到它正好位于Q1数据下方。我们看到这个小橙色的联合拨号框弹出。我们将在那里放下它。

然后你会看到我们的销售 Q1 数据现在有所变化。Excel Q2 数据消失了,但我们有这个图标。在左侧。如果我们悬停在上面,它会告诉我们这些数据内部发生了什么。因此,销售 Q1 是由两个表组成的。我们可以从这里的小片段看到。如果我们想要进一步挖掘。

正如所说,我们可以双击销售数据。这会深入挖掘,并向我们展示幕后发生的事情。因此,为了编辑联合,我们必须回到这里,点击,编辑联合。你可以看到这些是我们的两个表。如果我们想要添加更多表,没错。

我们可以添加 Q3 和 Q4 销售数据。点击,O。我们可以这样做。让我们从这里移除它们。好的,我们要跳出那里。我将关闭它。但如果我们也可以在这里添加它们,对吧?所以我们可以拖动它们,我可以把它放在这里。然后,我会回到这里,对吧?所以现在我添加了 Q1、Q2、Q3 和 Q4。

当我双击时,我进入内部,去这里编辑联合。你可以看到我所有四个表叠在一起。现在我将暂时移除这些表,因为其中一个在其他地方做了一些奇怪的事情。我之前只是测试过。

所以我们会回到那里。但这就是你如何将四个表连接在一起。这种对话框也是你如何将两个字段连接在一起。现在,我们定义了作者关系。通过使用这一行,右边,只需拖动并放入。但假设我们想要。

将其直接连接到书籍表。所以我所做的就是像我们之前对销售表所做的那样,双击书籍表。这就是传统 SQL 连接隐藏的地方。所以现在如果我拖出我的作者表,你会看到这个小符号,这个小符号告诉我,现在我们定义的是连接,而不是关系。如果你之前使用过 Tableau 的所有版本,没错。

你会对这个界面非常熟悉。😊 我们点击小的维恩图,这使我们能够定义想要进行的连接类型。它允许我们定义字段,如果有多个字段,我们可以在这里添加,等等等等。如果你对 SQL 不熟悉,你可能不太了解这些词的确切含义。

但这很简单,维恩图确实帮助你理清思路。这里有四种连接类型,你有一个内连接,在内连接中,我们将从书籍表中获取所有记录,以及与之匹配的作者表中的所有记录。

因此,书籍表中的一条记录必须在作者表中有匹配,才能包含在连接的输出中,没错,才能连接在一起,反之亦然。因此,作者表中的一条记录必须在书籍表中有匹配。

为了被包括在这个连接中。如果我们使用左连接。这将包括来自左表的任何内容,在这种情况下,左表字面上就是左侧的表。它将包括此表中的所有记录,以及任何与之匹配的作者表中的记录。

所以,作者表中与书籍表有匹配的任何内容都将被包含在内。作者表中没有匹配的内容将被排除。如果我们选择右连接,那也是同样的道理,但我们是朝另一个方向进行的。所以来自右边的所有内容,我们都会得到所有内容。抱歉,来自右表。

来自这个作者表,但仅包括那些匹配的书籍。它们在作者表中有匹配。然后我们的最终选项。全外连接,有时称为全连接,有时称为外连接,基本上它们都是相同的,确切地说,它们都是相同的。这将包括两个表中的所有记录,并尽可能将它们匹配,而在没有匹配的情况下则不会匹配。

它只会填充空值,所以你会从书籍表中得到每一条记录,从作者表中得到每一条记录,无论它们是否匹配。所以,让我们考虑一下这一点,嗯,让我们考虑在这两个表之间进行内连接。

所以我们有一本书,一位作者。它们连接得很好。我们只包括有作者的书籍。因为它必须在两个表中都有记录,对吧,对于我们的内连接。但如果我们有一本书有两个作者,会发生什么?那么这两个作者都会与这本书连接。对吧,所以我们会有一本书。然后,我们会有另一个记录,显示第二位作者的书。

所以我为第一订单有一本书的记录。为第二订单的作者也有一本书的记录。这可能会在书籍数据集中重复行。如果我们进行这个连接,并且在任何地方使用这个连接表,我们将不得不处理重复的问题。现在,有时这会成为障碍,有时则不会,具体取决于你想做的事情。但归根结底,重复是我们不太想要的。我们可以通过将此表从书籍数据源的连接中移除,避免这种情况,并保留它如上面所定义的关系。

既然关系如此灵活,为什么我们可能想要回到连接呢?为什么我们希望在这些表中的数据块内进行某些操作,而不是仅仅定义关系呢?关系很好,但。有时数据中可能有某些东西,或者这个关系的某些独特方面要求我们拥有通过连接获得的非常具体的控制和粒度。

我们可能会遇到某种情况。如果这两个表没有以特定方式连接在一起,其中一个不能正确聚合,或者其中一个计算不正确。所以,当我们与数据一起走过时,我们想意识到这一点,通常,如果你处理大量数据,你可能会事先意识到这些问题。

对,因为这并不是你需要处理它们的唯一地方。所以,值得铭记这一点。值得知道怎么做,但关系非常灵活,在数据模型方面是一个很大的进步。现在,对于那些来自旧版 Tableau 的人来说,😡,旧版 Tableau 只是几个月前才被推出。

不过在旧的数据模型中,我想在 2020.2 年有一些变化,我们想看看。首先,你会看到左侧不再按维度和度量组织,上方有维度面板,下方有度量面板,现在我们有单独的表以及来自每个单独表的字段。

所以我们在这里有来自作者表的所有字段。我们有维度,我们有一行,然后我们有每个表的度量。😊,所以,这在某种程度上改变了计算的行为。因此,如果我们要创建一个仅使用这个作者表的计算,对吧。

所以让我们创建一个计算,表示每位作者每天花费的写作时间百分比。好的,我们将使用每天写作的小时数。我们不会聚合它。我们只需将其除以 24。现在你看到,当你这样做时,这是一个行级计算。计算本身没有聚合,对吧,所以这是一个行级计算。

因为这是行级计算,并且只使用来自作者数据源的字段。它就坐落在这里的作者数据源中,并没有其他地方。不过,如果我们要创建一个结合两个不同字段的计算。例如,我们想获取一本书的销售价格,现在。

销售价格由两部分组成。它由价格组成,来自于加法表,然后我们减去折扣,折扣来自于销售表。所以如果我们要这样做。让我们来创建这个计算。大写字母在里面走错了。好吧,继续。

所以是价格减去折扣。因此,当我们创建那个计算并应用它时,你会看到它不会出现在两个数据源中的任何一个。它一直到底部,底部就是我们将要拥有的所有计算,这些计算涵盖多个表或多个项目,对吧?它们使用这些关系来创建计算。

我们想记住的事情之一是,当这些计算被计算时。当它们被运行时,当 Tableau 计算出答案时,它使用这两个表之间的内连接来使其工作。现在,如果。记住这一点是值得的,因为如果我们以某种方式聚合。

我们不会获得在这两个表之间没有匹配的记录。任何在这两个表之间没有关键的记录。对。因此,如果我们想要弄清楚每本书的销售价格。嗯,那些有附加记录的书,对吧?然后我们对这个销售价格求和。U。

我们只会因为它是联合进行的而获得记录,对吧,记住。因此我们需要在两个销售中都有记录。我们只会获得至少有一项商品已售出的附加记录。如果没有商品售出,它仍然有一个销售价格,因为它仍然在某个货架上待售。虽然没有售出,但它是待售的。但是因为我们在销售表中没有记录。

它没有提取附加表中该记录的价格,这意味着潜在地。我们不会获得所有的总销售价格,对吧,所以。确实值得思考,特别是如果你得到意外结果或数据中任何东西看起来奇怪,值得注意。现在,十次中有九次的比率。

这些事情不会回来咬你,但如果你看到一些奇怪的情况,肯定值得关注。所以还有其他几件事。对不起,还有一件事我们想看看。在旧世界中,当你创建一个常量时。当我在这里输入一时,它会放置那个一。

这个单独作为行级计算,因此它会在数据源的每一行中都放置它。以前这意味着如果你像这样求和,你会得到数据源中记录数量的总和,因为你知道,行级计算,正如我们所知,是对每一行都计算一次。

这个仍然是对每一行进行计算的。但是当我们使用基于关系的数据模型而不是基于连接的数据模型时,我们仅在可视化中提取与该可视化相关的数据。因此,当我在这里创建这个时,我们的数据源中只有一行。

因此,我们数据源中所有行的总和是1,因为我们引入的唯一数据点是这个常量。😊那么,如果我们引入,比如说我们引入作者。我要引入作者的姓氏。好了。现在你看到,我在数据源中的每一行仍然有一个,对吧。

这些作者现在在我的数据源中是单独的一行。这就是用于生成这个可视化的数据源。因此,每个作者的值都是一,或者这个常量在每个作者中显示。如果我们求和,我们将得到这个数据集中有多少个作者。现在。

记住这一点,每个作者的值都是一。使用这个常量,直到。我们提出标题。是的,标题。现在,Dantic cat。我。因为他们发布了多个标题,或者因为这个人发布了多个标题。对吧,你有1、2、3、4、5、6、7、8个他们发布的标题。

这个常量有八个值。在数据集中。所以不是只有一个。所以我们开始时只有数据源中的一行。总数就是一,只有一个。而后我们添加了作者,每个作者都有一个。而现在我们添加了标题,每个标题和每个作者都有一个,对吧。

所以我们有两个。对于这个作者,我们有8,正如我所说的,对于这个作者等等。所以关键是。常量不一定会按照你在旧世界中使用它们时的预期方式表现。再次问一下,为什么你可能在乎。真正的原因是,当你查看变通方法和技巧等时,很多都使用这些常量来表示某些东西。所以我们想要。

当我们使用这些变通方法时,请小心我们实际上得到的是我们期望的结果,知道吗。😊,如果我们知道如何排查这些数据源会很有帮助,我们会在未来的视频中更详细地深入这些计算,所以期待看到一些关于我们如何从关系和连接的角度排查数据源的信息,还有一些关于计算的视频将在不久的将来发布,但现在我非常感谢你观看,如果你喜欢这个内容,请点击订阅按钮,你将会获得更多关于 Tableau 和数据分析的内容。正如我所说,视频描述中有一个链接到这个数据集,所以如果你想下载 Tableau Public 并跟随,那太好了,那正是我使用的,完全免费,非常酷,我期待看到你在评论中的反馈,并期待下次和你交流。

😊。

Tebleau操作详解,照着实例学做图!数据科学家的必备可视化工具,简单快速做出精美图表!<实战教程系列> - P22:22)以及为何动态参数 - ShowMeAI - BV1iq4y1P77U

大家好,欢迎来到另一集《两分钟内学会Tableau》。我非常兴奋能和你们讨论这一集,因为我认为我们今天要谈的内容可以大大提高互动性,让你的可视化变得更有趣。这一周,我们将讨论动态参数。😊。

参数在Tableau中已经存在很长时间了。2020.1的新特性是,现在这些参数可以在数据更新时自动更新。所以如果你有一个值列表,而不是静态的值列表,现在你可以根据数据中的内容填充该值列表。因此,如果你在一个新市场开设商店,或者有新的区域经理加入。

😡,该值将自动填充在列表中。只要它在数据中,我们就可以用它进行高亮、过滤等各种操作。你还可以做的是,如果你有一个工作簿总是想显示最近两个月的销售数据,或者最近八周的销售数据。

你可以使用这些动态参数来实现这一点。之前你可以通过一些变通方法做到这一点,但现在这样做要容易得多,而且更具动态性。如果我想查看最近打开工作簿时的最后八周销售数据,但后来可能想查看不同的内容。

比如说查看最近八周到两周前的销售数据。😊我可以通过参数进行更改。但如果之前将其硬编码到工作簿中,我就无法更改,所以这真是令人兴奋。😡。这两者都很简单,因为它们建立在已经存在的功能之上。那么我们来看看如何构建一个。对于第一个。

你可能不想做这个,因为每次参数更改时更新会很烦人。因此,我总是使用过滤器和值来确保我的列表是正确的。😡。所以让我们开始吧。我将连接到我在Excel中制作的一个简单数据集,叫做我的小GPA数据集。这包含一些数据。

不同测试和不同课程的学生成绩都是虚构的。如果你不来自美国,想理解这个评分系统的含义,基本上,A得四分,B得三分,C得两分,依此类推。这就是如何使用这些分数计算某人的GPA。因此,我们有两个不同的表格,我们将使用一个来稍后更新数据。我拖出了这个十月成绩单,你可以看到我们有一个测试日期。

一个学生,一个班级,一个成绩和得分。我们将快速构建一个条形图,显示学生的分数。所以这是总分数,我们可以对其进行排序,使其整齐,然后我将使用一个参数来高亮某个学生在某个班级中获得的分数。

所以我们要做的是。我们将创建一个参数。它将是一个列表,并且它将是字符串,我们将使用它。我们将使用班级。现在,你会注意到我在右侧有两个选项。我以前只有一个。它曾经是固定的,但现在我可以选择在工作簿打开时。

我希望我的班级值能更新。这就是我希望它加载这个列表中的内容。而我们将称这个类为高亮段落。我们会点击确定,好的,太棒了。然后我们将用它来创建一个高亮,因此我会先创建一个计算字段。然后我们会说。

如果班级等于类高亮参数,那么高亮。否则,不。好的。然后我们将把这个类高亮字段拖到我的颜色架上。我会把它添加到表格中。你可以看到,在橙色中,我们高亮了每个班级中所有人的得分。

我们有英语、数学和西班牙语。现在,让我们回到数据源。我们将拖出这个十一月的成绩,对吧。我们将进行联合操作。我还有另一个关于联合的视频。如果你有兴趣,可以看看。现在我们暂时就这样做。然后我们会返回到我们的表格。

你会看到,即使我们没有实际关闭并重新打开工作簿,我们在这里的列表中也有地理作为一个选项。所以这个列表根据我们添加的新数据进行了更新。所以优秀的功能意味着你不必每次更新工作簿中的数据或重新映射字段到你的参数时都回去不断更新参数,这样就给了你更多的灵活性。

好的,所以😡,我们做到了。让我们看看另一个,对吧。假设当我登录时,我正在为我的老师制作一个仪表板。我希望我的老师能看到每个测试每个人得到的所有分数。所以它将在这里打开一个新表格,我想它一次显示一个测试,并且总是显示最新的测试。

但我也想给他们选择不同日期和不同测试的选项,如果他们想这样做的话。😡,在不同的,知道的,某种不同的时间。所以让我们在这里打开一个空白工作表。我做的第一件事就是构建我的基本条形图,所以我们将学生拖到列上。我们将分数拖到行上,然后我们会对其进行排序,因为所有排序的数据总比未排序的数据好得多。

😡,我还将通过返回并删除我们这里的11月数据来为此做好准备,所以我们将删除11月。好了。然后返回到我们的工作表。好的,所以。😡,现在让我们尝试构建我们的参数。哦,抱歉,我们想要一个新参数。我希望这个是测试日期参数。今天我打字真糟糕,好的,到了。

我们还要把这个变成一个列表,这将是一个日期。😊。我们想在工作簿打开时添加值,对吧。因为我们总是想拥有最新的日期,并希望从测试日期中添加它们。现在。你看,这里是我的三个测试日期。我们想要更改的内容,以便始终突出显示最后一个日期的是这个字段,它在工作簿打开时显示值。

现在,目前它被硬编码为当前值。所以我们此刻无法更改它。它将始终是当前的相同值,即101。为了更改它,我们需要创建一个计算字段,这个计算字段需要满足一些标准。首先,它只能有一个值。无论可视化是什么,无论我们如何处理数据,它只能有一个值。😊。

而且它必须基于我们用来获取它的这个字段。所以在这种情况下,我们必须从测试日期中派生一个只有一个值的字段。我们将用一种称为细节级别计算的方法来做到这一点。这种细节级别计算非常简单。所以如果你不确定如何做。

这并没有太大关系。再说,网上有很多资源会建议你学习如何做,因为它们相当有帮助,所以我们将这个称为最后测试日期。我们将使用固定细节级别计算。我们要说最大测试日期,哎呀。好了,这样做的效果是,对于我们的整个数据集,因为这是固定的,我们没有在这里放任何分组字段或分割数据的方式。

我们要寻找最大测试日期。😊,所以我们就继续应用这个吧。所以我们创建了这个计算字段,就在这里弹出来了。现在。让我们把这个移到我们的字段中。在我们这里,我还要创建我们的过滤器。这将是我们的测试日期过滤器。我们要说,如果测试日期。

等式测试状态参数。然后显示。否则。隐藏。好吧。然后我们将应用这个。我们将其拖到过滤器架上。我们会说我只想看到我们标记为显示的部分。没错,所以根据这个逻辑,如果测试 A 等于参数,我们将显示它。然后在我们完成之前,让我们先测试一下,没错?这是正确更改的。

很棒,好的,喜欢这种方式的工作。现在,我们怎么去做呢?要添加新的数据,先去编辑参数。现在,你看到工作簿打开时的值设置为当前值。我们已经设置为每次工作簿打开时都会更新测试日期。我们希望当前值是,哎呀,抱歉。

我们希望工作簿打开时的值是最新的测试日期。这将使其与我们刚创建的字段相同。每次工作簿打开时,没错,所以让我们点击一下。你可以看到它已经更新为20号。但让我们看看当我们添加新数据时会发生什么。

好吧,我们可以移动那个。所以再回到数据源。我将取出11月的成绩。我将它们添加到我的联合中。太棒了,那里有它们。现在,当我们回到第2页时,你会看到这个已经更新。现在我们显示的是。😊,11,222020。这让你能够默认到最近的测试。

但是如果学生想看其他内容,他们也可以返回查看不同的测试。或者,如果老师想知道1116的结果,他们仍然可以回去查看。我们并没有强制他们在这个视图中只查看最新的测试,我们给了他们选择的机会,但我们设置了一个合理的默认值。非常酷,功能强大。

我很想看看你们在使用这些时会想到什么。😊,所以这就是本集的内容。我希望你觉得有帮助。如果你觉得有帮助,请点击订阅按钮。很高兴在这里看到你。我们有很多很棒的 Tableau 内容。我会在视频描述中放一个链接,包含我用这些做的数据,方便你下载 Tableau Public。

我真的鼓励你跟着做。这是一个很好的学习方式。😊,下次见!

Tebleau操作详解,照着实例学做图!数据科学家的必备可视化工具,简单快速做出精美图表!<实战教程系列> - P3:3)连接与合并数据源 - ShowMeAI - BV1iq4y1P77U

大家好,欢迎来到《两分钟学 Tableau》的另一期,今天我们将演示如何在数据源窗口中合并和连接数据源,因此我们将从多个表中创建一个数据源。为此,我创建了一个家具数据集,假装是家具销售,你可以看到我们有三个月的销售数据,九月、十月和十一月,我们有区域领导的列表,我们有产品领导的列表,还有每单位的成本。

😊。

创建这些将它们合并为一个大的数据源。我们将直接进入Tau。你可以看到我已经创建了与家具销售Excel表的连接。所以我们要做的第一件事是把九月份的销售数据拖到我们的销售表,或者说拖到我们的家具销售大表中。😊。

你可以看到,这给我们带来了九月份的销售数据。现在我们还想把十月份和十一月份的销售数据合并在一起,如果将它们作为不同的数据源会很麻烦,因此我们将继续拖动它们,你可以看到如果你将它们拖到彼此正下方,然后可以拖动并放置在“拖动到合并”的地方,这样做的结果是将两个表堆叠在一起,所以你可以看到现在我们在这里有九月份的销售数据,而十月份的销售数据在上面,我们对十一月份也做同样的操作,直接拖到底部,再次你可以看到我们现在的数据源中有九月份、十月份和十一月份,第一张大表你会注意到它完成了两个任务,并且在我们的列中添加了两个字段,第一个是表名。

😊,第二个是表名,这两个恰好都是它们的月份。😊。所以如果我们在数据源中没有这个月份标签,我们实际上会为每个表创建另一个标签,以便识别哪个是哪个。😊,接下来我们要做的事情是将我们的区域领导连接到我们的销售表,因此我们要把区域领导拖出来。

拖到左侧,你会看到这里有一个小的维恩图,这给我们提供了一些联接选项,你可以看到当维恩图的中心被上色时,我们就有了内连接,当左侧圆圈被覆盖时,我们有左连接,当右侧圆圈被上色时,我们有右连接,而当两个圆圈都被上色时,我们有完全连接,这自动选择了我们的连接标准,因此我们在两者中都有区域领导。

😊,列,因为区域字段在两个数据源中都存在。我们也将其设置为内连接。如果你用SQL来写这个,你会写两个表的内连接,区域等于区域。现在,如果我们想连接第二个表,我们可以在这里连接我们的产品领导者。

我们将其拖放,但你会看到有一个红色的感叹号,因为这两个字段名不匹配,所以我们需要从这个小列表中选择字段名。我们将从左侧数据源中选择产品,然后如果我们查看这个,你会看到我们有产品名称。由于该字段略有不同,我们必须指定连接标准,一旦我们这样做,就会在这里显示小的内连接符号。

所以这将是SQL中内连接的等价物,产品连接在。😊。点乘等于B点乘名称或类似的东西。因此,这两张表连接后,我们现在有了一个相当全面的数据源率,我们拥有所有的销售数据,我们的区域领导者已经连接,我们的产品领导者也已连接,所以我们可以按不同的人汇总这些数据。

无论区域是什么等等。😊,如果我们想添加成本,我们也可以将单位成本拖到这里。这样会根据产品名称进行连接,这正是我们想要的,我们也可以设置为仅从主要销售表连接,我们可以按产品设置,然后它会根据产品名称连接。我喜欢将我的连接设置成这样,当你进行这些连接时,你必须记住的是,这两个字段必须是相同类型的,因此你不能连接数字。

😊,数字列到字符串列,即使它们包含相同的信息。你必须确保实际进行转换。你可以在这里更改每列的类型,还有很多信息可以使用。你也可以将其设置为列表。有时我不想看到数据,有时你想看到一个列表,这样更容易去更改这个图标,因此我们可以将其从字符串更改为数字,变为真或假。

有时这是一种很好的连接方式,有时你需要对其进行操作以确保连接正确。因此,一旦我们进入工作表,你会看到Tableau很好地组织了我们的字段,所有维度都在这里。

我们按数据表组织这些内容,因此我们有产品领导的区域。九月加上我们的销售表,以及来自单位成本表的项目。😊。或者合并为一个数据源,当你查看我们的视频时,你会看到类似的设置。但我们在顶部的不同表下有所有的数据源,这就差不多是本期《两分钟内了解 Tableau》的总结。如果你有任何问题,请在评论中留言,视频描述中有工作簿和数据源的链接。如果你喜欢我们所说的内容,并希望获得更多 Tableau 的技巧和窍门,请订阅我们的频道,获取新视频,我们下次再见。

😊。

Tebleau操作详解,照着实例学做图!数据科学家的必备可视化工具,简单快速做出精美图表!<实战教程系列> - P4:4)混合数据源 - ShowMeAI - BV1iq4y1P77U

嗨,各位,欢迎来到《Tableau两分钟》新一期,今天我们将讨论如何在Tableau中混合数据。我已经连接了我为这些数据演示准备的虚构家具销售数据,并且我已经将所有销售表连接在一起,所以九月、十月、十一月、十二月,你可以看到我们在数据源中拥有的销售数据。这个数据库中的其他部分,严格来说不算是数据库,实际上是一个Excel表格,但也差不多,是一个包含区域领导者的表格。

我们的产品领导者和每个单位成本都是一个独立的表格,现在你会记得如果你看过我们在数据源视频中展示的数据连接,我们实际上将所有这些表连接在一起,在这个特定的数据源中,我们有一个类似树状结构的表格。

😊,这次我们不会那样做。我们将使用数据混合来实现类似的效果。所以我们将跳到工作表一,你可以看到在这个数据源中我们只有销售表和销售字段。我们需要做的第一件事是添加一个新数据源,我们将重新连接到这个Excel文件,它叫做家具销售,然后我们将拖出我们的区域领导者,第一个我们要连接的是区域,你可以看到我们有区域和区域销售主管,然后东部和西部是我们的两个区域,我们将跳回到我们的主工作表。

😊。

你可以看到,现在我们有两个数据源,而不是仅仅一个,所以我们为什么不把区域拖出来呢?你可以看到我们有西部区域,我们就将销售拖到这里的列上,我们想要做的是将区域领导者添加到工作表中。首先,我们想要做的是点击这里并编辑关系,现在你会看到我们的主要数据源,即销售表,自动在两个区域字段之间建立了关系。所以你会记得我们在销售表中有一个区域字段,而在区域领导者表中有一个区域字段,它们因为同名而自动建立了关系,所以当我们点击区域领导者时,你会看到这个小橙色链接被高亮显示。

😊,如果我们取消勾选,那么数据源之间将没有关系,你可以看到因为小链接变成灰色并且有一条线穿过它。如果它是橙色并且连接,那么就有链接。这意味着我们可以在可视化中使用此数据源的字段。所以让我们将区域销售总监拖到这里,靠近区域,你会看到我们在同一张表中得到了区域和区域销售总监。现在如果我们想添加一些关于我们产品的信息,让我们跳到新的表格,这里我们将添加我们的产品负责人。因此,我们将重新连接到这个Excel文件的家具销售,打开它,拖出我们的产品负责人,你可以看到我们有一个叫做产品名称的字段,这是产品,然后我们有产品负责人。

😊。

这是我们的一位明星产品负责人,我喜欢称他们为明星。让我们回到sheet2。😊。

然后我们会再上去。我们只想拖出来,所以让我们从销售表开始。我们将拖出产品。然后再次继续拖出销售,这样你就可以看到我们的产品和总销售额。如果我们想拖出产品负责人会发生什么呢?如果我们去看产品负责人,你会发现这里没有建立的关系,这是因为产品名称与这里的字段不匹配,它只是叫做产品。所以要解决这个问题,我们将去编辑关系。

😊。

在数据菜单下,除了将其保留为自动外,你会看到这里没有列出任何内容。我们将点击自定义,点击添加关系,然后选择主数据源的产品和次要数据源的产品名称,然后创建该关系,点击确定。现在当我们去点击我们的产品负责人数据时,你会看到产品名称又有了小链接,我们可以根据是否希望包括或断开链接来勾选或取消勾选,然后可以将产品名称拖到我们的旁边。

😊。

哦,产品负责人真是太有帮助了。产品负责人。好了。现在它将所有产品负责人与我们主要数据源中的产品连接起来。还有一件事需要记住。这是当你使用连续字段时。让我们继续创建,我们将创建一个新的数据源。这次。

我们要连接。😊。

单位成本表。我们将单位拖到这里,我们有一个产品名称和每单位成本。

所以我们再回到第3张表,因为我们在一个数据源中有产品名称,在另一个中有产品。我们需要提升到,我们想使用的,这是我们的销售数据源。我们想把它作为主数据源。然后我们想去单位成本。你会看到没有关系。因此你需要定义一个自定义的关系。

所以产品和产品名称。好吧,那我们来做这个。我们将从这里拖出产品。我们将拖出。单位。从这里。然后我们将拖出单位成本。从这里的每单位成本。好的,现在我们已经设置好了表格。我们有每单位成本。我们有销售的单位数量。现在,如果我们想知道总共是多少。

我们只想把这两个相乘,436乘以60。所以我们可以通过创建一个计算字段来做到这一点。现在。你会注意到我在我的单位成本数据集中创建这个计算字段。所以这意味着。😊。所以这将是总成本,这意味着当我创建这个字段时。

它会在单位成本数据下显示来自这个单位成本数据的任何单位成本的字段。我们在这里使用的任何特定于每单位成本的字段可以使用那些未聚合的字段,因此我不需要将这些作为总和、最小值、最大值等等,但是你会看到当我尝试从销售数据中添加某些内容时,在这种情况下我们将添加单位。

😊,所以当我添加这个时,你会看到它会自动为我聚合。并且我不能混合聚合和非聚合函数。😊,我也不能去掉这个总和。你看它们必须是行级计算,因为在使用表计算函数或多个数据源的字段时,所有字段必须聚合为常量。😊,这意味着因为这些在不同的细节级别。😊。

它们在数据源中没有一对一的关系,当进行混合时,我们必须总结两个数据源,并且只能在汇总级别进行计算,因此我们不能有,例如。一个单位成本,在那里我们刚刚查看了每个项目的单位数量,然后我们。

在我们的数据源中逐行减去它们。我们必须先聚合它们,然后在计算聚合级别。这样是可行的,因此我们得到了总成本。现在我们可以将其拖出。你会看到。我们有总成本。在这里,这只是单位乘以每单位计算,我们通过将它们都求和来做到这一点,你会看到这是Ag。

所以这是一个聚合计算。你会看到我们从次级数据源得到的两个计算,单位成本数据源旁边有这个小勾选标记。😊。这表明它们来自一个次级数据源。因此,这是判断你设置是否正确的一种好方法。根据你如何进行这个,你可能想要组织所有的计算在一个特定的数据源下,有时我喜欢确保所有计算都在主数据源下完成,但有时这并不总是可行,所以这是解决这个问题的一个好方法。这就是本期“在两分钟内了解Tableau”的数据混合内容的总结。如果你有任何问题,请在评论中留下。你可以从视频描述中下载数据和Tableau工作簿。如果你喜欢你所听到的并想要更多Tableau技巧和窍门,请订阅我们的频道,我们下次再见。

😊。

Tebleau操作详解,照着实例学做图!数据科学家的必备可视化工具,简单快速做出精美图表!<实战教程系列> - P5:5)固定详细级别计算 - ShowMeAI - BV1iq4y1P77U

大家好,欢迎来到《两分钟学 Tableau》的另一期,今天我们将走过详细级别计算。详细级别计算有三种类型,今天我们将讨论一种叫做固定详细级别计算,这也是最简单的。所以我已经连接到我的超级商店销售数据集,如果你想跟着做,视频描述中有链接。

😊,我们要做的是拖出一 handful 的产品项。并将它们拖到行货架上,创建一个小表格。所以。我们不想要产品容器或产品类别。然后我们要产品子类别。😊。

然后我们要拖出来的是销售到我们的 ABCs 这里,这将给我们每个产品子类别和每个产品类别的销售总和。现在固定详细级别计算将进行销售总和,就像我们这里一样,但它会在我们告诉它的详细级别进行销售总和,所以我们会说这是固定的。

😊。

一些。销售的总和。我们将放入一些花括号。我们会说固定。然后我们将告诉它我们想要放在什么样的详细级别。在这种情况下,我们将放在产品类别层级。所以产品类别。然后放一个冒号,接着给出我们想要的表达式。

在这种情况下,销售的总和。然后我们将关闭那个括号。好了。😊。

好的,然后我们还要将固定销售总和拖到我们的表格上。现在你可以看到我们所做的事情是计算了家具的销售总和。家具中的每个数字都是相同的。办公用品中的每个数字也是相同的。科技中的每个数字也是相同的。并且它总是会在那个产品类别层级进行计算。

所以如果我们把省份拖出来,就让我们把它拖出来。😊。

你可以看到我们仍然在按产品类别层级进行计算。所以我们仍然有这个。你知道的。所有家具的50178,591。

无论省份是什么,无论现在是什么产品子类别。让我们先拖回Pro,为什么这有帮助呢?假设我们想要了解书柜在家具销售中占多少百分比,那么我们可以取我们的销售数字,创建一个计算字段,计算类别销售的百分比,所以我们将取销售总和。

😊。

然后我们要将其除以销售总额,即固定销售总额。

好的,按产品类别来分。😊,百分比类别销售。将其拖到度量值架上,显然它将变为零,因为它四舍五入到零。所以我们将格式化为百分比。😊。

看,这样你就可以看到。😊,家具书柜占总家具销售的15.9%。所以这就是你如何再次使用固定细节级别计算的方法,固定细节级别计算是指无论在视图中有其他项目,它总是以产品类别级别进行计算。请继续留在这里,我们将继续使用这个工作簿来展示包含和排除细节级别计算,仅需几分钟。

😊。

Tebleau操作详解,照着实例学做图!数据科学家的必备可视化工具,简单快速做出精美图表!<实战教程系列> - P6:6)包含详细级别计算 - ShowMeAI - BV1iq4y1P77U

嗨,大家好,欢迎来到“Tableau两分钟”系列的另一集。今天我们将讨论详细级别计算。我们在这个系列中有两个之前的视频,涵盖了固定详细级别计算和排除详细级别计算。今天我们将讨论第三个也是最后一个,即包含详细级别计算。如果你还记得,这是对前两个视频的回顾。固定详细级别计算是我们始终在同一维度上聚合一个度量,一个固定的维度。

😊,排除详细级别计算将允许你在聚合一个度量时排除一个维度。😊,而包含详细级别计算则允许你在计算一个度量时包括一个维度。当你聚合一个度量时,所以我们接下来要做的是创建与我们在其他两个仪表板中创建的相同的表格。所以我们将产品容器拖到,我很抱歉,我们将产品类别拖到行架上,产品子类别拖到行架上,然后我们将销售拖到我们的ABCs上,创建一个漂亮的小表格。现在让我们继续创建一个。

😊。

详细级别计算,因此我们将说包含子类别,这将是一个详细级别计算,我们始终包括产品子类别,然后我们将说销售总和。

然后结束这个。嗯。找一些拼写错误。

好的,我们来吧。接下来,我们将把包含子类别拖到我们的表格中。所以你会看到,目前它们是相同的,因为它们实际上是以相同的方式聚合的,而在我们的视图中有产品子类别,事情变得有趣的是当我们从视图中移除产品子类别时。

😊。

我们改变了聚合的级别。所以我们接下来要做的是将聚合级别更改为最大。

然后我们将去掉产品子类别。现在你会看到,现在我们的包含子类别与我们的销售不同,而这个包含正在计算每个子类别的销售总和。然后它会取最大值,选择其中最大的子类别,这就是它在这里显示的内容。所以如果我们把产品子类别放回去,我只需按控制Z撤销。😊

你可以看到家具产品类别中销售额的最大总和是来自桌子的,总额为1896008。因此,如果我们去掉产品子类别,单看家具,你会发现也是1896008,这显示了我们能够获得的销售额最大子类别的总和。如果我们想要将其更改为最小值或其他聚合级别,如果我们将其改为最小值,那么它将显示出最小类别的产品子类别。如果我们再将产品子类别放回去,你会看到最小的是办公家具,销售额为698094,然后我们再将其去掉。

698094,最后,如果我们愿意,我们可以选择平均值,这将给我们该产品子类别的平均销售总额。😊。

产品类别。这就是如何使用包含进行详细级别计算的方式。这是获取两个不同度量级别的好方法,因此我们可以在可视化中获取产品类别中最大子类别的销售额,以及该产品类别的总销售额。如果你有任何问题,请在评论中留言,视频描述中有我们用于此工作簿的数据链接,以及该工作簿在Tableau公共上的链接。如果你喜欢今天分享的Tableau小贴士和技巧,请订阅我们的频道“Tableau in two minutes”,我们下次再见。

😊。

Tebleau操作详解,照着实例学做图!数据科学家的必备可视化工具,简单快速做出精美图表!<实战教程系列> - P7:7)参数和下拉菜单切换度量 - ShowMeAI - BV1iq4y1P77U

嗨,大家好,欢迎来到另一集《两分钟学Tableau》。今天,我们要演示如何使用参数来更改图表上的度量。也许你有两个不同的度量想要查看,比如说平均价格、总收入之类的。你可以使用参数在这些之间切换。

我们将演示如何做到这一点。首先,我们需要连接一些数据。我将使用一个商品价格数据集,这是我在之前的视频中用过的。你可以下载这个数据集,链接在评论区。这是全球经济指标数据集之一。我们将使用年度数据。

我们使用的内容真的重要吗?我们将在这里进行大量清理。所以我们要改变这个期间。然后我们将进入我们的工作表。😊。

你可以看到,我们在顶部有多个不同的定价选项。各种各样的商品,包括铝、香蕉、大麦、牛肉、鸡肉、煤等。我们将使用一个参数,允许我们在这些选项之间进行选择。所以我们需要做的第一件事就是进行一些数据清理。

我们必须快速将这些转换为其他的。

我不小心创建了一个副本,我并不想那样。我们将快速将这些转换为变量的数字,然后将它们拖到度量栏上。所以我们首先需要将数据类型更改为小数。

你会看到这将所有内容更改为数字,然后我们将这些拖到这里的货架上。接着我们要获取“期间”,也就是我们在顶部创建的年份。我们将其转换为度量,然后拖到列货架上。现在你会看到我们的小可视化图表,展示了所有的年份。假设我们想查看铝的价格。

通常情况下,你将其拖到图表上,我们会得到一个非常漂亮的柱状图,显示铝的价格。但是如果你想查看牛肉的价格,唯一的方法就是把它添加到旁边,或者拖动并放在上面,这样就会替换掉之前的内容,现在我们在查看牛肉的价格。

但是我们可以通过一个参数来改变这一点。所以我们要做的是,首先创建一个参数。😊,这个参数让我们可以选择几个不同的选项。所以我们要说这是我们的选择参数。我们将把数据类型更改为字符串。

然后我们将给它一个允许值的列表。我们将有的第一个值是牛肉。第二个值是铝,或铝,取决于你来自哪里。我们只需点击。好的,我们暂时只保留这两个值。然后我们将创建一个计算字段,即价格。

我们暂时就叫它价格。然后我们将说如果我们的参数,我们称之为选择参数,正好等于wo。牛肉。那么,这个价格将等于牛肉的价格。我们会在那里跟踪它,El。选择参数正好等于alllu。W,这不是我们想要的E。铝。

好的。我们将忘记想要给这两个加上引号。它完全等于铝。然后,我们将显示价格。有铝吗?elselse?

如果有箭头,我们将返回0,然后结束它。记住,您总是需要在if计算后放置end并点击O。然后我们将取价格。

它在这里的顶部。我们要把它拖到周期上。好的,所以不太确定这是什么。我想是牛肉。如果我们点击下面的参数并点击显示参数控制,你会看到目前选定的是牛肉。但如果我们把它改成铝。

我们的图表发生变化,现在我们有铝的价格。

就这么简单。显然,你可以有多个选项。如果你在里面有多个选项,我们可以为这个列表上的所有内容设定一个选项。这样我们就不需要在行架上更改度量。这意味着当你构建仪表板时,你可以给用户选择改变他们在可视化中查看内容的选项,而不必经历更改字段或在屏幕上同时有一堆不同可视化的麻烦,你只需给他们在特定可视化中改变所查看内容的选项。

非常感谢您参加本期“Tableau两分钟”的节目。如果您有任何问题,请在评论中留言。视频描述中有数据的链接,如果你喜欢你所看到的。如果你喜欢学习Tableau,那么请订阅以获取更多Tableau提示和技巧,我们下次再见。😊

Tebleau操作详解,照着实例学做图!数据科学家的必备可视化工具,简单快速做出精美图表!<实战教程系列> - P8:8)创建 Excel 样式条件格式 - ShowMeAI - BV1iq4y1P77U

你好,欢迎收看另一期“Tableau两分钟”。今天我们将介绍如何在Tableau中创建Excel样式的条件格式化。所以Tableau的一个挑战是很难按不同项目为不同列上色。如果我们想在这个特定图表中更改颜色,单词颜色。

如果我们想按折扣来处理,就将其拖到颜色架上。但这里的每一列颜色都是一样的。如果我们想让利润按利润上色,数量按数量上色,销售按销售上色,那将会更加困难。但在Excel中,这非常简单。所以在这里你可以看到,销售额更高,利润数字以绿色显示。

较低的利润数字以红色显示,销售从0到330000时从白色变为深绿色。而数量则用这些小图标表示总共售出的产品数量。😊。

看起来很简单。确实在Excel中很简单,但在Tableau中如我所说要稍微复杂一点。所以我们要创建的是这种图表。

抱歉,这种表格使用那种条件格式化样式。首先,我们将打开一个新的工作簿。然后我们将创建一个计算字段,基本上表示什么都没有,但我们会称它为1。0,给它的值为1。0。

这是我们在构建表格时用来调整布局的东西。首先,我们想按子类别查看。所以我们将子类别拖出来,创建我们的第一列。然后我们将1。0拖到列架上。

两次。然后我们将更改聚合方式。

设为平均值。设为平均值。然后在这一项上,我们会点击右侧的向下箭头。我们将选择双轴图表。现在你可以看到这给了我们一个单一的。

轴实际上给我们提供了两个轴,一个在上面,一个在下面。仅在1。0的位置有一个单一的点。现在看起来还不太像表格。让我们让它更像表格。如果你还记得在Excel中,第一列是利润。

现在我们将继续设置,我们要编辑坐标轴。我们将点击同步双轴。将值设置为0到2。然后将标题改为利润,这就是我们在第一列时的样子。现在我们要去刻度标记。

我们将从顶部坐标轴上移除所有刻度标记。然后我们将点击O。记住,不要有刻度标记。然后在常规屏幕上,我们想同步双轴并将固定范围设置为0到2。你会很快明白我们这样做的原因。点击O,好的。

现在我们在坐标轴的顶部有利润标签。我们有一个单一的坐标轴向下,然后我们所有的点在中间成一条线。我们将在底部坐标轴做类似的事情。我们要编辑坐标轴。它已经设置为固定,因为我们同步了双轴。

我们只需删除标题,这样下面就没有标题了。然后我们将刻度标记设为无,次要刻度标记设为无。点击它。然后我们有一条简单的线条在中间。现在,显然我们还需要做更多的工作,因为图表背景上仍然有这些小线条。

所以我们将去格式。然后我们将去格式,点击线条,也就是这堆小线条。点击列。然后我们将所有这些设置为无。所以都是无,无,无,无,Nan,无。好,完美。现在我们有一个开放的背景,只有一组点在中间。

你还会注意到,当我们在标记卡上设置时,我们现在有三个不同版本的标记卡。所以我们有这两个项目在上面创建我们的双轴图表。我们还有所有平均值1.01和平均值1.02。现在,我们可以单独操作这些,试图创建与我们之前一样的效果。

Excel。

所以如果你记得我们这里的第一个列,我们只是用利润来着色。

所以我们可以将利润放在最上面的标记卡上。我们要做的是将利润拖到标签上。然后我们将利润拖到颜色上。我们将此图表类型更改为文本。然后你会看到我们创建了一个非常相似的东西。

所以一切都是由我们的利润着色。我们有利润在图中,但中间有这些大而烦人的点。为了去掉这些大而烦人的点,我们要去其他标记卡。平均值1.02。点击它。我们将改变图表类型,圆形和方形都无所谓。

然后我们要尽量将大小缩小。现在我们在中间有了微小的点,然后我们将进入颜色。我们要一直向下滚动使其不透明。这给了我们利润的列。太好了,现在,使用同样的技巧,我们可以构建其他列。

所以我们将再次使用这个字段来构建我们的第二列。即销售。在这种情况下。我们正在为背景着色。所以我们想要去。再次拖动我们的1.0。看到一些1.0,哎呀,我错过了。好的,然后我们要再次更改,将其改为平均。这个也改为平均。丹。😔,创建双轴图表。然后我们将编辑坐标轴。

如果你记得的话,这个我们叫做销售。哎呀。并且要同步x轴固定为0到2。去掉刻度线。好的,这样就创建了这个。我们要创建第二个。只需删除标题,去掉刻度线,应用无刻度。好的。现在我们状态良好。你可以看到通过创建这个其他的双轴图表。

我们现在有了第二个。😊,抱歉,第三个和第四个,标记卡,所以3号,4号。现在。在这种情况下,我们将再次将数字放在销售上。所以让我们在顶部的标记卡上这样做。我们将其转换为文本图表,就像之前一样。哎呀,我们有点乱了。所以我们将其转换为文本图表。

然后我们将销售拖到文本上。现在你可以看到我们在这列中有销售。可是我们将做一些不同的事情。对不起。我们要回去。实际上我们将保持为自动。我们将移除销售。当我们来到这里时。

我们将第四个设置为文本。然后我们将在文本上拖动销售。好的,之所以这么做。是因为这个卡片,顶部的在下面,这个。底部的在上面,我们希望销售。名称在我们的点上方。你会很快看到为什么,所以。我们要做的是拿。

这个字段和这个字段现在将创建我们的背景。如果你之前是会员。我们所做的就是将点变得非常小,然后我们把它去掉。这次我们要操控这个点。我们要拿出帆。我们将其拖到颜色上。现在你可以看到我们的点是由我们帆的总和着色的。

所以,较暗的颜色意味着更高的销售,较亮的颜色意味着较低的销售。😊。我们将图表类型更改为条形图。现在你会看到。我们有条形图大约延伸到一半。原因是如果你记得。我们将坐标轴的刻度设定为0到2。标记,测量是平均值为1。

所以我们本质上得到的是一根条形图延伸到一。我们想要做的是。拍一张浴缸的照片。在这里,我们只是要在此基础上加一。因此。我们只需双击列架上的药丸。将一加到平均值上,使其成为2,因为比例是从0到2。

所以这将覆盖整列。我们将按回车。你可以看到它延伸到了另一边。确保这匹配。我们将以稍微不同的方式使用它,创建用户公式,因为它也可以用来操控布局,当你想操控布局时。但我们还没有准备好这样做。因此,我们想要做的是只创建那根条形图,加一使其延伸到另一边,然后蓝色似乎有点傻,我们上次用了这个颜色。

那我们为什么不改变颜色呢,我们将这个改成一些漂亮的绿色。应用。好的。你可以看到这越来越接近了,但我们可能想让条形图宽一点,以便它们能够覆盖整个区域。为此,我们只需点击大小,向上拖动大小,可以一直拖到顶部,现在每个单元格的背景颜色是由该单元格内的销售总和决定的。因此,我们快到了。

离目标更近了。😊 我可能想让这个稍微透明一点,以便我们可以看到背景中的一些数字。现在我们进入第三列,第三列是我们将做一些巧妙的布局,确保我们的形状和数字不会重叠,就像在其他一些图中那样。

所以再次开始第三列,我们将取1.0,拖动两次到这里。

在这里的列架上。将聚合设置为平均值。然后我们将创建一个双轴图。像这样。对我们的轴做所有相同的事情,所以设置为同步,从零到二。这是我们在图上创建的数量。然后我们将再次关闭刻度线。

我们在另一个轴上做的所有相同的事情,然后我们将在底部轴上做同样的事情,所以我们将去掉标题。去掉这里的刻度线。关闭刻度线。好的。现在你记得当我们在销售列中创建利润列时。

我们做的第一件事是将文本拖到单元格中。那正是我们将要再次做的事情。所以你可以再次看到,通过添加一列。我们在这里的顶部有两个平均值,并且在这里的标记卡底部创建了两个平均值。😊 所以再次,第二个始终在顶部。这最后两个是我们这里的最后两个。

所以我们要去第二个。我们将图表类型更改为文本。我们将在这里获取数量。我们将在这里获取数量并将其拖到文本中。有时 Tableau 会在标记卡之间上下弹跳。所以在操作时确保你在正确的卡片上。

现在你可以看到在我们的数量字段中,我们有每个数量的数字。这是一个好的开始。现在我们想要创建形状。所以我们要去我们的另一张卡片。我们刚刚上升了一层。我们将更改图表类型。改为形状。然后我们将再次更改形状,第二个往上。

我们将形状更改为实心圆。记住,第二个往上。有时它会跳来跳去,然后我们将数量拖到颜色架上。它将根据这里的数量进行着色。现在。我们在 Excel 中有一个稍微不同的配色方案。你也可以在这里编辑颜色。

也许对于这个,我们想使用一些紫色。为什么不呢。你可以看到,但现在图形中的形状和标签重叠在一起了。所以我们需要以某种方式移动它们。现在,如果你还记得我们如何处理销售以创建这个条形图并让它延伸到顶部,我们编辑了上面的药丸以添加一个,使其能够延伸到整个宽度。我们可以做同样的事情。在这两个药丸上各添加一个意味着它们将在列中居中。

但假设我们想将它们移动,向左移动一、两次,向右移动一、两次。就像我们在这里的 Excel 一样。😊。

我们要做的是编辑这个。这将是我们的第一列。记住,我们的第一列是数量形状和颜色。我们将向左减去,大约是t3,3,3,3,3。好了。这将其向左移动约三分之一。然后我们要过去这里。

双击这个,然后我们将添加点3,3,3,3,3。这将使其向右移动约三分之一的距离。现在你可以看到我们的形状和我们的列彼此并排。我们似乎忘记了上面的标题。她现在会处理这个,好了。

现在我们有利润、销售和数量。😊,你可以以与其他图表相同的方式调整这些列的大小,所以我们可以抓住边缘。将其拖动直到获得一些更合理大小的列,一些更接近 Excel 大小的列。

再次,你可以操作形状。你可以在这里设置自定义形状。

Tebleau操作详解,照着实例学做图!数据科学家的必备可视化工具,简单快速做出精美图表!<实战教程系列> - P9:9)表计算创建总计的百分比 - ShowMeAI - BV1iq4y1P77U

大家好,欢迎来到又一集《两分钟了解Tableau》,今天我们将初步探索表计算的世界,我们将使用表计算来确定某个总数的百分比,我们将使用有关好莱坞电影的数据,所以我们将打开文本文件,查看好莱坞最盈利的故事,评论中会有数据集的链接,这是一种tableableau。

😊。

标准类型。你可以看到我们有一些电影,显示了精英工作室和电影制作年份,以及这部电影在全球的收入。我们要做的是看看哪些类型对哪些工作室最有利可图。

那么哪个工作室从每个类型中获得的利润比例最大呢?为此。😊。

我们将把主工作室拖到行架上,然后将类型拖到行架上,这样你就可以看到每个工作室的类型。然后我们将拖动全球总票房,并将其放在这些ABcs上。我们要做的另一件事是打开小计。

这样做是有很好的理由的,稍后你会明白。所以我们要去分析,然后总计,添加所有小计。然后我们会回到分析,再到总计,显示列的总计。😊。现在你看到每个工作室都有一个总计,底部还有一个总总计。😊。

所以现在我们要查看每个工作室从每个类型中获得的收入百分比,为此我们将使用表计算。这是一个快速的表计算,所以我们只需点击全球总票房上方的下拉箭头,选择快速表计算,然后选择总数的百分比。

😊,现在你可以看到这一列的所有内容都转换成了百分比。但是很有趣,我们的总数不再是100%,因为我们的总总计是100%。这实际上意味着狮门影业的动作电影并不是总总计的93%。我们不想按照总总计来计算,我们想在工作室之间进行比较。为此。

我们将更改用于计算此表计算的细节级别。所以我们将再次点击下面的全球总票房,选择使用。😊,主工作室。哦,抱歉。我们将选择类型。然后你会看到,对于每个类型,我们现在在每个工作室内计算总数。

所以每个工作室的总计为100%。我喜欢在那儿有总计的原因是因为这使得查看你计算所有这些表计算的水平更容易。如果我们想看看哪个工作室占据了更大的比例。

😊,总收入。从特定类型来看,最简单的方法是实际上将这两个药丸翻转过来,现在你可以看到我们在喜剧方面的情况。我们有null,这是一个有用的工作室,不是吗,所以null 100% CBS的总收入都是来自喜剧,Fox的总收入也是100%来自喜剧。

20世纪福克斯的收入中74.7%来自戏剧。所以这不是一个特别干净的数据集,但你可以看到,通过使用表计算来计算总百分比,我们能够做出一些使这些数字在不同工作室之间可比较的事情。

😊,如果我们想要知道每个工作室产生的喜剧收入百分比。我们可以这样做,我们通过再次点击计算使用,然后点击Le Studio。你现在会看到喜剧数字。现在稍微小一些,因为我们有很多工作室在制作喜剧,我们可以回到分析中,重新加入我们的小计,因为显然它们被去掉了。

当我们进行更改时,你可以看到现在每个类型的总和加起来为100%。所以本质上通过玩弄这一细节。😊。并询问我们是按类型还是按主工作室水平计算。我们要么计算每个工作室在每个类型中所占的收入百分比,要么计算每个工作室为每个类型所产生的收入百分比。

所以这是同一枚硬币的两面,非常感谢你加入我们的这期《Tableau in two minutes》,如果你有任何问题,请在评论中留言,显然这会在网站上,你可以从我们的网站下载数据,只需在评论中寻找链接,非常感谢,我们下次再见。

😊。

使用 Scikit-learn 进行机器学习,4小时实战视角刷新知识框架,初学者进阶必备!<实战教程系列> - P1:1)机器学习介绍 - ShowMeAI - BV16u41127nr

在这部分课程中,我们将进入一个新的部分,即机器学习。我们将涵盖大量材料,但与此同时,这只是你在这个领域可以做的材料的冰山一角。

让我试着从我们熟悉的事物开始,然后连接到我们将要做的新事物,即构建模型。你们已经运行函数很长时间了,对吧?所以,也许我会写这段代码,然后我们的函数接收输入,可能以参数的形式,然后它们有一些输出,也许它们在打印某些内容,或者我可能会返回一个值。

例如,我可以想象一个函数可以做一些预测。也许我的输入是我有一些待售房屋的详细信息。然后我可能会预测它可能卖多少钱,所以当我有这样的函数时。这就是一个模型的例子。我可以想象同时输入一堆值并做出很多预测。

所以机器学习的想法是,电脑不再由人类编写这些函数,而是由电脑自动生成这些函数。它们的做法是通过实例学习。

因此,我们将输入一堆训练数据,其中有许多房屋以不同的价格出售,并且有不同的卧室和浴室。我们试图推断一些事情,比如卧室值多少钱,浴室值多少钱。

拥有一座新房子有多有用?然后基于那个函数。我们将能够生成那个函数,然后用它来对其他数据做出预测。你可以想象这对许多事情可能是有用的。也许你在进行物业评估,或者你是房地产经纪人,正在努力确定如何正确定价房子。

我在这里给出的例子是回归模型的例子,回归模型试图更广泛地说是一种监督式机器学习,它是机器学习的三大主要类别之一。所以我现在要开始广泛地讨论这三个领域,然后我们将更详细地谈论回归,我实际上会解释它是什么。

机器学习的三个主要领域是强化学习,这基本上是一种需要做一系列决策的情况。你试图优化某种奖励,所以你可以想象某种机器人在世界中移动并拾取硬币,或者类似的事情,但我们在这门课中不会做那种工作,而是会专注于两个领域:监督机器学习和无监督机器学习。在这两种情况下,我们都有所有的数据,而我们试图从中获取信息。有些人会说有一个第四类机器学习,称为超监督学习,但我们在这里不会讨论那个。

在监督机器学习中,我们这学期要学习两种不同的内容。一种是回归,在回归中我们试图预测一个数量,然后通过分类我们将尝试预测一个类别,因此在我们试图预测的任何情况下,这被称为监督问题,工作原理是我们拥有的数据上有一些标签,通常有一个特殊的列告诉我们,例如房子的价格或某种类别,然后我们可以尝试预测这个标签,而在标签未知的情况下,无监督学习没有我们试图预测的特殊标签列,我们只是在寻找数据中的一般模式,所以我们可能会做几件事,我们可能会尝试对数据进行聚类,将行替换到不同的组中。

或者我们可能会尝试对我们的行进行分解,我们可能会注意到我可能有这些每行有F5个数字的行。但也许每一行是两种组件行的组合。所以尽管我们的数据可能有很多列,但里面仍然有一些简单性。因此,我将讨论这学期我们要学习的这四种类型的内容,并尝试让它们更具体,所以这里我有一个表格,这只是一个常规的数据框,这里是我的索引,这里是我的列名,现在我有一个Y列,它是我的标签,这通常就是我试图预测的内容。

然后我这里有一些不同的问题,我想我只是在画 x0 到 x4。但通常这些会有一些实际的名称,比如在我看到的之前,我们有房子里的床位数。因此,我们试图预测的这个标签是我们要寻找与其他列之间关系的内容,我们将其称为特征。😊 总的来说,发生的事情是我们有一些示例。

一些行中我们有两个方面的例子,然后可能还有一些其他数据,其中我们只有特征,但没有y标签,因此我们想尝试预测这里应该是什么样的。你可以想象为什么会这样,也许这些都是不同的房子,其中一些已经出售,所以我们知道它们的售价,而这些还没有上市。

所以我们在尝试预测如果它们上市的话会不会出售。这里回归问题我想再次强调的是,我们想预测一个量,这里的y列是基于特征的,而这个量我指的是一个数字。

所以我们将如何做到这一点呢?我们可能会首先将其分解为三个部分,首先选择一部分我们知道答案的数据,然后将其他一些我们也知道答案的数据放在一边,我们要做的是运行一个能够推断这些特征与这些标签之间关系的算法。

一旦我做完这些,我可能会在其他我也知道答案的案例上运行我的模型。当然,我已经知道真实的答案,除非我的模型是完美的,否则它可能会给出一些不同的答案,所以我为什么要这样做呢?

如果我已经知道答案,为什么还要做预测?原因是我可以这样来评估我的模型,或者我可能会说测试我的模型。例如,如果我的模型说这个房子的价格是70,而实际上是72,那就是一个错误,这里也是同样的道理。

60与59,这就是一个错误,我可以尝试量化所有这些错误,然后给我的模型打分,这就是测试阶段吗?

所以在那之后,在我学会了我的模型并对一些已知案例进行了评估后,我可能会把它投入生产。生产意味着我在用它做实际的事情。我在尝试预测世界上实际的未知量,比如说,如果我在市场上增加一套新房,它可能会卖多少钱。

我可以把这些不同的值放在那里。我们可能做的另一件事,甚至超越预测,是我可以查看那个模型并尝试学习一些关于世界的事情。所以我一直回到卖房子的例子。我认为了解每增加一套房子或每增加一个卧室或浴室,房子的价值会增加多少是很有趣的,我可以利用这些来做出不同的决策,比如说也许我想进行房屋改造,我是通过增加一个浴室还是一个卧室来获得更多的收益呢?所以我们可以以这种方式学习一些关于世界的事情并做出决策。

好的,所以所有这些都是回归,这是我们本学期要学习的第一种监督学习。当我们进行这些回归时,关键在于我们试图预测某个数量,而我们的Y标签现在完全可能是特征的数量和类别的混合,对吧?像绿色、红色、蓝色这样的就是一个类别。

形状也是一个类别,很多东西都是字符串或类别。没问题,对吧。回归的显著特征是标签列是定量的。如果我在处理一个Y是分类的情况,那么这就不再是回归了。这是一个分类问题,但否则我谈论的所有其他内容,包括训练和测试,然后投入生产。

所有这一切都是相同的,我们只是在处理类别而不是数量。好的。那么继续,我们看到了两种监督学习,分别是回归和分类。那么无监督学习呢?这里的主要内容是。

主要的要点是没有标签列,对吧?我只有一堆特征。然后我仍然可以尝试学习一些关于这个的模式。即使我并不是在试图预测任何东西。所以我可能想要学习的其中一件事是,这些行是否有任何自然的分组,因此有算法可以将所有这些行分成三个组,并可能给它们分配数字,比如零。

一和二,对吧?然后仅仅是为了画出那样的样子,虽然所有这些行都在一起。现在我真的想强调的是,没有数据告诉我正确的分组是什么,或者甚至有多少组,所以在我做这个的时候。

并不是说只有一个正确答案,但这并不意味着所有的分组或分类都是相等的。如果我有某种度量标准,我可以衡量组内那些行之间的相似性,因此我的目标是拥有一种尽量最大化每个组内相似性的分组,可能会有不同的分组同样有效,对吧?但只要我在组内保持高相似性,那么我依然能学到一些有意义的东西,你可以想象我可能出于很多不同的原因这样做,或许每个这些。

这些事物代表了我网页应用程序中的不同用户,然后如果我可以说,嘿。虽然我的应用程序有这10种不同类型的网络用户。我可能可以为每个不同的群体开展不同的营销活动。好的。所以聚类再次是无监督的,之所以是无监督的,因为虽然没有标签列,但我在尝试预测。

当我谈论本学期的最后一种机器学习问题时,可能是最复杂的,称为分解,而分解也是无监督的。对吧,这里没有我试图预测的列。分解的思想是我会查看所有这些行,看看是否有任何模式。是否有几种原型行可以真正混合在一起以创建其他东西。

所以也许我看到的是,带有一些小错误的大多数行只是这三行的组合,我会称这些为我的组成行。所以你会注意到我的原始数据和我的组成行之间的列是相同的。

然后为了得到这一行,比如负11,负7,3,2020。我会将这一行乘以负V 11,然后加上21乘以这一行,再加上负8乘以这一行。也就是说,我在对这三行进行加权平均,以产生这一行。如果你实际计算这些数字,你会看到我得到的结果与这个类似。

但会有一些错误,对吧?这不是一个完美的匹配,这没关系,我的组成部分越少,我就会有一个更简单的模型,但可能会有更多的错误。所以我在这里有这些数字,当我试图混合这些组件以创建一行时,我通常会把这些数字放在下面的另一个表中。

所以这将是我所有权重的表,或者说我的主成分得分,因此我会在这里写上负11,在这里写上21,然后在这里写上负8,然后对于下面的这一行,我会做同样的事情,我会在这里写上负43,在这里写上12,然后在这里写上负6。所以由于我在这样做,我在这里为每一行放入这些混合。这意味着如果这里有n行。

然后如果这里有N行,那里有M列。那么那边也会有M列。因此,基本上我可以将这个大表格减少到一些组件,我可以在这里有一些权重,这对许多事情都有用,其中之一就是如果我想在我的存储系统上节省空间,我可以让这些东西变得更小,但如果我试图进行机器学习的其他阶段,比如分类或回归,如果我只有三个特征列而不是原来的五个,那在许多情况下对我有所帮助。

好的,这就是对这四首诗的快速概述,其中我解决了回归、分类,这两者都是监督学习,因为它们是有标签的,而聚类和分解则是无监督的,因为没有要预测的无标签列。对于这四个主题,其实有很多不同的算法,而在这个学期我们只会学习每个主题的一个算法,所以如果我访问下面这个网站,这是我们将要学习的PsyH Learn模块的网站。

😊,可能有接近数百种不同的算法或不同的类别。我在这里列出了一个小子集,因此我可以看到,关于聚类的所有不同内容,我们将只学习其中一个,那就是K均值聚类。

在分解方面,我能做的所有不同的事情,我们将只学习其中一个,那就是PCA。事实证明,对于很多算法,分类和回归是常见的配对,例如,这里我有一个决策树分类器,这里我有一个决策树回归器。

这里我有一个K邻居分类器,这里我有一个K邻居回归器,因此我没有把这些分开,而是将它们放在这两个类别下,所以我们将在这里学习两个内容,我们将学习逻辑回归和线性回归,这有点令人困惑,因为。

这部分很明显,线性回归在这里就是回归。这是一个人们容易混淆的地方,因为尽管它的名称中有回归,但实际上它并不是回归,而是分类。因此,这就是我们这个学期将要学习的四个内容,而逻辑回归总是让人困惑,因为它实际上并不是回归。我认为一旦我们学习了所有这些,使用其他算法的接口就会相对简单。

例如,一旦你知道如何使用线性回归,你可以很容易地将“线性回归”替换为“岭回归”,你仍然能够正确地进行所有机器学习的工作。在你这样做之前,最好了解岭回归的工作原理,然后思考哪个模型最适合你。

至少在代码方面,切换不同模型是非常简单的,而不需要考虑这四个类别。我想多谈谈,这些都是比较高层次的内容,我想谈谈基础知识,我需要学习的机器学习,包括代码和数学方面。我学习了几个不同的模块,主要的是scikit-learn

我将给你展示一些来自 PsyKt Learn 的文档。我们还将学习 nuy,它可以让我们处理矩阵。事实证明,nuy,Numpy 实际上是 pandas 的基础,没错,所有的 pandas 数据实际上存储在 Numpy 中,现在是我们实际看到这一点的好时机。然后当我学习了这个叫 Pytorch 的东西时,Pytorch 可以为我们做几件事情。

一个是它可以为我们进行微积分,这非常酷。另一个它可以让我们做的事情是它实际上可以让我们在 GPU 上运行代码,这些是图形处理单元,我们这一学期到目前为止所有的运行都是在 CPU 上进行的,没错,就是你的中央处理单元。结果发现,原本为图形构建的 GPU 在机器学习方面也表现得非常好,因此,如果你处理大量数据或复杂模型时,它们会非常有用。

使用 GPU 会更好。我要学习一点数学。我并不假设你有任何数学背景,除了你可能在高中学到的内容,但让我给你一个例子,说明数学在这里如何应用于回归问题。因此我们再次以所有房屋及其特征的例子为基础,然后我们有一个预测价格的函数。我们如何用矩阵来做到这一点呢?我可能会将数据框中的所有这些数字放入这个矩阵中。

然后对于我的函数,我可能只是有一个使用矩阵的代数表达式。因此,我这里的 x 是这个矩阵,C 是一个向量,B 只是一个数字。当我运行这个时,我将得到另一个向量,实际上包含所有的价格。因此,为了理解这里发生了什么,我们必须学习一点线性代数。

这不是常规的乘法,它实际上是被称为点积的东西,看起来是这样的,我可以将这个 X 矩阵与这个向量进行点积,然后加上一个数字,然后这就是我将如何在右侧获得我的结果,进行一次预测,令人惊讶的是,如果我可以将一行与这个向量相乘,我就得到了一个房屋的价值,并且这会在没有循环的情况下进行,线性代数和通过点积相乘矩阵的美妙之处在于,这可以一步完成,我实际上会得到所有这些数字。代码非常简单,如果我说数据框的值,那么 x 实际上将是一个 nuy 数组,如果我想的话,我可以说我想要这两个东西的点积,并且我想要加上 B,这样就能正常工作。因此在学期结束前的某个时候,我们会对此进行更多详细的讨论。

我想注意的一点是,如果你在阅读其他文档,很多资源会使用A而不是Xs,我觉得这很让人困惑。如果你正在研究这些syKt学习模块,这样并不直观,因为这些通常会使用x表示数据,而更奇怪的是,在PsyKt学习中,我们通常会有一个C,但他们会把它称为小x,所以在我们学习线性代数的过程中要保持清醒。

我想提前说清楚,我会再说一遍,要注意变量名称有点奇怪。那么线性代数的范围是什么,我们试图解决哪些问题呢?我们不会解决类似于y等于x平方的东西,那不是线性的,任何二次或三次方的东西都不是线性的,实际上我们能做的就是将变量乘以数字,然后再加起来,对吧?所以这是一个线性方程的例子,我有一些不同的变量。

然后我将它们乘以不同的数字,我注意到我们在这门课中进行线性代数的方式是我们实际上有非常大的矩阵,很多变量和很多方程,对吧?所以你可以看到这里我实际上有50个变量,所以关键要点是,更多的变量意味着更多的数据,但方程更简单。

关于微积分,这里我再次遇到房子的情况,我有一些训练数据。所以我有我的特征和标签,它会引入一个算法,该算法基本上会为我输出这个公式,我可以用来预测房价。

对。现在,事实证明,当我进行训练时,我有原始价格,而新价格可能有一点不同,对吧?这是140。这是190、240、254,对吧,它们都稍微有些不同。因此,对于这个给定的方程,我最终会有某种函数。

总损失函数比较正确答案与我模型的答案,对吧?所以我比较这两个,得到一个数值出来,这就像是我的误差或它有多糟糕。当然,它的糟糕程度实际上取决于这个方程下面的数字。所以这个训练算法的整个想法是,我想找出,嗯。

我能做什么才能让我的误差或损失尽可能小,所以我们试图最小化某种东西,我不指望你们都能做微积分。但我知道你们中的许多人都学过,而在微积分中我们通常试图最小化或最大化某些东西?

这就是它试图在这里发挥作用的原因。好消息是我们不需要理解微积分,会有一些模块可以处理,例如这个pitorrch的东西,我会学习pi torch。它也将帮助我们能够在GPU上运行我们的代码。我们将能够做一些像处理两个矩阵的事情。

将它们移到 GPU 上,然后相乘,这几乎感觉就像是它比在 CPU 上运行时神奇地快得多,而且移动这些代码并不需要很多。因此,Pytorch 在微积分和使用 GPU 方面将非常强大。

在结束这个视频时,我想谈谈开发者和用户之间的区别,以及我们是谁。嗯。当我看到这里的这张图片时,我正在将所有这些训练数据输入到一个机器学习算法中。然后这给了我们一个可以用来进行预测的函数。这里有一些类别,我想人们通常会开发新的算法,或者编写代码并优化现有算法的代码。

我们会做一点点这方面的工作,但这不是我们的重点,我们不是在进行机器学习研究或尝试提出新想法。我们不是开发者,而是机器学习算法的用户,这让我能学习到一些内容。因此,接下来我们在这门课中会感兴趣的一些问题是,我们应该使用哪个算法?在 SK learn 中我们应该如何选择?我想我们应该如何配置它?很多这些算法在数据方面有不同的参数,我们如何清理数据,以使其与我们选择的机器学习算法良好配合,最后当我们实际使用这个东西时。

我们将获得所有这些预测,可以与原始数据进行比较,我们希望如何评分呢?并没有一种绝对正确的方法来评估它的好坏,因此我们也希望获得一些经验,这也是课程内容的一个小预告,希望这与我们之前所做的相比是一次有趣的变化。

使用 Scikit-learn 进行机器学习,4小时实战视角刷新知识框架,初学者进阶必备!<实战教程系列> - P10:10)正则化和标准化 - ShowMeAI - BV16u41127nr

在这个视频中,我可能会谈论两个主题,一个是正则化,另一个是标准化。标准化是我们在本课程中经常使用并理解的内容,相对简单,但正则化是一个非常复杂的话题,可能需要更多时间和更高级的机器学习课程。

我不想深入探讨正则化的数学,我只是想给出最简单的直觉,我们不会深入研究,但希望大家知道这是一个重要且深刻的话题。至于我们已经做过的事情。

我们已经频繁使用逻辑回归,但它有一个我还没谈到的问题,那就是它对缩放非常敏感。例如,你可能有一个数据集,其中包含一些特定单位的数字。如果你改变这些单位,比如把英里换成英尺,可能会得到不同的分类结果。

这显然不是我们想要的,我们关心的是真实的信息,而不是某人随意选择的单位。为什么呢?因为逻辑回归将这种技术应用于正则化。

它试图使用较小的系数,通常不希望在某一个特征上有一个非常大的系数。你可以想象我有很多特征列,或许其中之一在训练数据上表现得比其他的好。

即使其他特征列仍然有些有用,我不希望仅仅因为运气选择了那个最好的特征,因为这样在测试数据集上效果不好。正则化基本上是提供了一种动机,使用多个特征,而不太重视其中一个,即便它在短期内表现更好。因此,逻辑回归实现了这种线性回归,而这是我们在本课程中学习的第一个模型。

但还有类似于线性回归的东西,比如岭回归和套索回归。我们在320中不打算讨论这些,但它们很重要,且经常使用,因此要知道这个正则化的概念非常重要。

那么我们真正希望的是什么呢?我们不希望我们的模型对单位敏感。我们希望以某种方式标准化,使输入的数字相同,而不管它们原来的单位是什么。以此例子,我编造了一个虚构的场景,我们在现实世界中测量某种数量三次,并根据这些数据预测它属于哪个类别,类别将是“真”或“假”。

基本规则是,当真实长度(我们不知道)大于5时,类别为真;如果小于5,类别为假。因此这三个有些嘈杂的测量值,尽管它们没有确切告诉我们真实长度是什么,但它们给我们提供了一些信息,可以帮助我们猜测它是真还是假。

在这里我有我所说的那些虚假数据,y列是类别。然后我有我的三个测量值,x1、x2和x3。让我谈谈我是如何生成这些的。在numpy的随机函数下,有许多函数可以生成随机数据,我在这里做的是正态分布。

你可以从不同的分布中抽样,如果你不知道这意味着什么,那对这门课来说没关系。但基本上,我在这里生成了1000个随机数,平均值为4,然后将它们放入这里。这将是一个数字数组。然后我在说,任何大于5的,我希望它为真,否则我就会得到假。

当我查看下面的数据框时,truefe并没有直接进入这些列,它是未知的,但类别是已知的,而类别是我们试图预测的。那么,我们如何进行预测呢?既然我们不知道真实的长度,为什么还会有另外三个列呢?它们基本上是实际长度加上一些随机噪声。所以如果我在下面查看一下。

让我看看第一个测量值。所有三个测量值都小于5。所以我预测y会小于5是非常合理的。也许我还可以查看一些其他情况。我想知道是否能看到它为真的地方。让我来做一下,这样我可以看到其他一些情况,这些情况在这个例子中都是正确的。

所有的测量值都大于5。所以我认为这是真的。这是一个更有趣的例子。这个数字非常大,对吧。一个测量值几乎是7。即使其他两个测量值小于5,这也足以让模型判断为真。好吧,总体上它是真的。

希望模型会得出相同的结论。好的,这就是我们正在处理的数据。让我们看看能否训练一个模型来尝试预测这个。因此,我将创建一个模型,我将使用线性或逻辑回归模型。我会将其拟合到我的数据中,所以我可能会有一些X和Y的值。

我将从我的训练数据中提取y列,对于我的X,我想传入一个包含所有特征列的列表,所以是x1、x2和x3。我会再次使用这些,所以我实际上会把它放入一个名为x columns的变量中。这样我就不需要每次都输入那么长的内容。

所以我进行了拟合,这很简单,很快我可能会查看这个模型的系数。但在此之前,我想顺便看看如果我想查看模型的准确率,它有多高。我可以说,不是拟合,而是评分,然后为了现实起见,我不应该在我之前没见过的数据上进行评分,而是我训练的东西,所以这是一种更好的测试,我看到它有 89% 的准确率,这样好?89% 似乎很高,我们会那么频繁地正确,但让我给你看看为什么这不一定。

如果我查看这个 Y 列,我发现它几乎总是为假,实际上如果我说值计数,我可以看到它只有少于 20% 的时间为真。我实际上可以将其除以测试的长度来看这一点。因此,这意味着即使我有一个非常简单的模型,它总是说假。

我会得到 81% 的准确率,89% 更好,但在那种情况下并不是那么惊人,因为这一列的偏差太大。好吧,所以在我查看模型的准确率后,接下来我通常想查看的是我的系数。

我喜欢以某种方式绘制这些,我的模型系数。而且我看到这些就在这里,我想要某种条形图。我知道这些与这些 x 列是成对的,所以这是 x1 的系数,以此类推。因此我通常制作这样的条形图的方法是说 PDd do series。

然后我会有我的 Y 值。然后我会有索引等于 x 值。点图,点条形图。在 x 值上,我将使用这些列名,并将系数放入其中。基本上会有量值用于 Y 轴。而且它在抱怨其中一个的长度是 1,而它应该是 3。

所以 x 列,这里非常简单,但如果我看看这个。这一数组,我看到它其实是一个二维的东西,我可以将其展平为一个包含三个数字的一维数组,或者如果我说负一,它会变成一维的,不管我有多少个数字,它都会搞定,所以我可以把它放在这里,现在我得到了这个图,这很有趣,对吧?我在谈论有时候仅仅是偶然,我们在一个问题上比另一个问题更关注,这种情况在这里发生了,对吧?x1、x2 和 x3 都是同样嘈杂的,但恰好基于训练数据,模型认为 x1 更有用,对吧?这纯粹是偶然。

所以你可以想象一个更糟糕的情况,它选择了我非常喜欢的一列,忽略了所有其他具有良好信息的列。因此模型会尽量避免这种情况。正则化意味着我们会尽量不对单一因素赋予过多权重,我们会尝试稍微分散一下,如果你将其推向极端。

你可能想象我可以有一个只看我的截距的模型。我的截距可以想象成平均值,在这种情况下,模型可以预测动物,所有我的系数都可以为零。好吧,我们都只预测同样的东西,我想我们有另一个问题,只想非常准确。好的,我有这个。所以让我回去,我将随机生成这些数据。

但这次我只是改变这一列的单位,我将单位改为英里,因此一英里有5280英尺。我在这里想做一个评论,这是英尺到英里的转换,所以我有相同类型的数据,只是单位不同。

所以我希望我的模型不会有什么不同的变化。所以我将再次运行这个。我看到这里没有太多变化。然后我想想重新运行时会发生什么。因此,在这个 x2 列中,数字现在都小得多,因为它是以英里为单位。因此,我可能期望使用这个时,x2 的系数会更大。

如果我想和以前一样。结果发现当我运行它时,我实际上看到了相反的情况。由于我之前提到的正则化因素,拥有一个列上如此大的系数是有害的。因此,它实际上决定,嘿,我将完全忽略 x2。我必须在我能够接受的情况下,给它一个更大的权重。

所以我在这里丢失了一些信息。我不再使用这两列。现在,当然,这很傻,对吧,把更大的系数放上去并没有真正增加权重。它只是抵消了我有不同单位的事实。因此,有不同的方法来解决这个问题。一种是我可以坚持所有东西都有相同的单位。

另一种方法是我可以尝试以某种方式让这个更统一。所以这就是我在这里要做的。😊,我将回到这里,让我。让我拿到我的训练数据,实际上,我想在哪里做这个?

我很快就会处理这些 x 列,实际上,不,这没问题。我打算把它留在那里。因此,我将提取我的训练数据,并想取一个切片,我想获取所有行,并提取列 x1。通过 R x2。所以这就是我的特征,现在通过 x3,抱歉,这些只是我的特征。我想以某种方式标准化它们,以便它们大致具有相同的尺度。

所以我要做的是将其提取到这个 x 变量中。我要做两件事。一是计算每列的平均值,就这样。我将从每列中减去这些数字。我会说这样。因此现在所有这些列都以零为中心,减去均值后,每列的平均值都是0。

事实证明,这对逻辑回归的运行速度也很有帮助。我并不想了解为什么这是有用的,更重要的是,我希望它们在同一尺度上。那么,哎,发生了什么事?我跳到了新的一列或新的一单元格,所以如果我查看这个,那是每列的标准差,如果我有更大的数字,那么标准差就会更高,因此标准化的关键部分是我将所有这些除以那个标准差,如果我这样做,我可能会得到一堆小数字,它们大致在同一尺度上,所以在我完成这一切后,它们都会有相同的均值和标准差为1,因此这将是更好的x数据,我实际上可以像这样把它放回我的训练数据中,所以我可以说这等于我的新x数据,所以我手动将数据标准化。

所以在我完成后,我再次运行所有这些,现在我看到x2重新发挥作用。尽管我有不同的单位,它并没有过于关注其他列的单位。因此,这是一个不错的做法,好的,这就是标准化的意义。现在结果是,要正确做到这一点,我必须在训练数据上计算这个均值和标准差。

但我必须在测试数据上使用相同的均值和标准差,我不能重新计算测试数据上的均值,因此这一方法论会变得有些复杂,所以一般我们不会这样做,我们会请K学习为我们完成,所以结果是有一个预处理步骤叫做标准化,我们将使用这个,而不是手动进行,所以我将回到这里。

你可以看到我已经导入了我的标准化器。我将在这里运行这个。这现在跳过了我的模型,对吧,我现在就先不处理这个。这将是我的糟糕模型。我将创建一个新的模型,它将是一个管道模型。在这个管道模型中。

我想要一个标准化器,后面跟着逻辑回归。就这样。这一个,我可能确实要这样创建它们。我必须给它们命名,对吧。所以我将把它称为标准化器。好的。我必须用逗号分隔这些东西。然后,我们将有这个逻辑回归。

就像这样,这是我的新模型,然后发现之前我做的所有拟合工作,比如说,它可以以相同的方式工作,我可以像以前一样进行拟合,因为这个新的模型也可以拟合,所以我可以这样做,我也可以像以前一样对它进行评分,现在让我来评分,我得到的结果非常相似,然后可能有趣的是,当我实际这样做时,当我实际尝试获取这个条形图时,它应该显示它重新发挥作用,尽管非标准化的版本现在忽略了x2。

这个版本应该会显示出来,所以记住这里会有一个小错误,问题在于管道没有系数,整个管道没有系数,但里面的逻辑回归是有系数的。

😊,那么我怎么能发现任何管道都像字典一样呢?我可以复制这些名称并用作键,这样就能从一开始获得我的标准化器,或者我可以传入这个键,这样就能得到我的逻辑回归阶段,因此我可以看到涉及的系数。我会把这个粘贴到这里,而不是我原本的内容,这样我就能看到在标准化作为变换器的情况下,它会自动执行,然后如果我在这里进行拟合,它将计算均值和标准差,而在评分时,它只会使用之前的均值和标准差,而不会考虑任务,因为那会是一个方法论错误。因此,只要没有非常特殊的情况,我们通常会这样做,尤其是在逻辑回归中。

例如,数据已经被标准化。

使用 Scikit-learn 进行机器学习,4小时实战视角刷新知识框架,初学者进阶必备!<实战教程系列> - P11:11)K均值聚类 - ShowMeAI - BV16u41127nr

好的。

最近我们做了很多监督学习,尤其是回归和分类,现在我将给出一个无监督学习问题的例子,即聚类。在聚类中,可能会觉得它与分类有一些相似之处,在分类中,有时我会展示这些散点图,其中有不同类型的点,而这些点是有标签的,也许有一些红点和一些蓝点。

我们试图找到一些边界或规则,以区分我们所拥有的不同类型的数据点,并且我们是基于随数据附带的一些预设标签来进行的,你知道的,这就是在指向哪个。在聚类中,我们可能会模拟一些数据的散布,或者它的多维等价物。

但不同之处在于,数据上没有预先存在的标签。这就是为什么这被称为无监督学习问题。算法本身选择标签,因此你知道,存在无数种方法可以将标签应用于现有数据集。但我们仍然有一些约束,或者我应该说一个目标,我们的目标是选择这些标签,以便将相似的数据聚集在一起,并且有方法来衡量这一点。所以聚类是这个一般问题,有许多不同的聚类算法,迄今为止最著名的是 K 均值,所以我将从这里开始。

因此,我在这里做一些导入,最终我将使用 SKL 中的 K 均值。但为了帮助你理解算法是如何工作的,我实际上会在这个视频中从头开始编写代码,而不是直接使用这个。所以在 SKlearn 中有这个数据集子模块,可以生成 blobs,或者说这些 blobs 基本上是聚类。

你告诉它你想要多少个点,围绕多少种不同的中心聚类,然后关于标准差的一些信息,返回两个东西,返回 x,实际上是两列,x0 和 x1,然后是一个 y,表示。

每个点属于哪个聚类或 blob,所以我不太关心为什么,我只是将这些丢掉。我将这两个 x 值放在这里,然后我有这个数据框,就像这里一样,我们要努力寻找的是这里是否有不同点的聚类,它们是否集中在某个地方。

所以让我在查看这段代码之前先往下滚动一下,这里是那些生成的点的图片,你可以看到它们是相当随机的,虽然它们大致集中在三个不同的点周围。我暂时在这里放一个问号,因为这些是没有标签的,对吧,没有真实的类别,我只有这两个。

X 是 x 轴上的 x0,y 轴上的 x1,作为我的坐标。因此,最终要做到这一点,我需要知道我正在做一个数据框的散点图,就像我们之前做过的很多次一样。我在这里写这个特殊的函数的原因是,kms scatter KN 代表 k 均值,我会多谈谈为什么我们有这个名字,因为我可能不想为不同的点显示不同的符号,而且没有简单的方法来指定一个列作为符号类型。因此我们必须循环遍历,这将由一个名为 label 的列决定,如果有的话,对吧,不一定是对的。所以这将自动进行绘图,我只是在这里评论一下,我将绘制 x0 在 x 轴上。

而且等等,对吧,所以我将继续使用这个方法。好的,所以你可能已经看到这里有三个集群,而我们实际上知道的是我们随机生成了数据。但我们如何找到这些集群的良好指标呢?这些指标将不会被称为质心。我们最终会尝试说,好吧,这里是这三个集群的中心。

我们发现了这些,如何自动完成呢?

而且,找到三个最佳点是一个困难的问题,通常比找到最佳答案更简单。对吧,稍微改善一个糟糕的答案,如果你知道怎么做,并且可以重复,通常会给我们一个不错的答案。这是我们在梯度下降中使用的策略,在学习中非常普遍,这是我们现在将为 K 均值使用的策略,因此我们会取一个糟糕的答案,而这个糟糕的答案看起来是这样的。

我将随机选择一些起始点,并为每个点分配一个不同的符号。目前我只是试图假设我可能有三个点,三个集群。我们最终会重新审视这个假设,然后可能在这里分散。所以你可以看到,这里是它认为的三个集群的位置,当然,这很糟糕,对吧,这并不是三个集群的位置,那么我们如何自动识别这三个集群的中心呢?

所以我们将使用的策略是,我们将在做两件事之间交替进行。首先,我们将做一个叫做分配的事情,这就是将每个点放入集群中,仅仅是说它进入了离它最近的质心所在的集群,对吧,所以这三个东西就是质心。

哦。质心是一种二维平均值,对吧,所以它是平均的 x0 和平均的 x1,作为质心。因此,K 均值是这个算法的名称,对吧,所以在这种情况下 K 只是一个变量,因此我们实际上有三个均值或三个质心,我们想要找到它们的最佳位置。所以就像我所说的,我会将这些点分配给离它最近的质心。

这是一种点分配,接下来的步骤是更新这些质心的位置,使它们更接近分配给它们的值。我们不断交替决定哪些点与哪个质心相对应,然后质心在哪里,最终希望它能收敛并尝试发现这三个点。

所以为了做到这一点,我将构建一个新类,对吧。我只是想把我的类命名为KN。我将有一个初始化方法。也许我将传入所有数据的数据框。很多这些实现中,人们会指定一些东西,比如。

好吧,简单起见,聚类有多少个?我已经创建了这个数据框。聚类就在这里,如果我查看我的聚类。我已经为这三个点准备了数据,我做了这个,所以我就暂时把它放在我的类外面,以保持代码稍微干净一点,所以我要抓住这些东西,所以我要说self的聚类等于聚类,我将对这些进行很多更改,我不想更改原始数据,所以我要复制这些数据框。

就像这样,也许我们看看这里实际上有没有东西。我只是好奇这个标签里有什么,当我说self的标签等于。self.dot clusters。我想看看那个标签列。就这样,或许我会把它转换为列表。像这样,然后我打印出self.dot labels。好的。

所以我想创建一个这样的东西。然后我需要传入我的所有点的数据框,然后是我的聚类,然后我这样做。嗯,我在那里的做法有点傻。我想把它保存在那个变量中,嗯,那是我的三个聚类,我只是选择了一些简单的聚类名称,这样我就可以轻松绘制这些,通常人们只是随便称这些聚类为一和三,记住原始数据中没有任何标签。

原始数据看起来像。看起来就像我有100行的这个东西。然后我的聚类实际上看起来也相似,对吧。我有x x值,指定减去中心,然后还有标签。好的。所以我想做的第一件事是,我可能想绘制这个。

随着我们进行的更改,我想抓住之前的代码,看看有什么绘制。就这样,我会绘制它。让我看看。我想我不能使用数据框的聚类,因为这些现在是属性。我不想要那些版本。我会说self Df。然后它有聚类。好了。

对,我们想要改进的系统的初始状态。所以记住,我提到的这两个阶段,我们会有一个分配点的步骤。这可能是我们要做的第一步,而我们在这里实际上是在从聚类中提取两点,基于我们的聚类,也许我应该告诉他们,中心点的位置在哪里。

这是试图影响我们点的分配,我们将为每个点分配一个中心点。当我有这个时,另一个我可能会有的事情是更新中心。通过交替调用这个、这个、这个,最终我们会找到这个问题的良好解决方案。好的,首先。

如何进行中心点分配,这可能是更困难的一个。这段函数可能简单一点。所以我想在这里做的是,对于这些点,我想将它们分配到一个聚类中。好的,并且需要是最近的那个。所以也许我首先要做的事情是。

让我做这个 K 和那个数据框。我会在这里添加一些列。这是我开始时复制那个数据框的原因之一。我可能会为每个聚类添加一列,指定这个点与那个聚类的接近程度,然后一旦我添加了这三列,它将再添加另一列说明。

好吧,哪个是最近的,哪个我实际上想要在里面?

好的,我要做类似这样的事情,我将遍历所有的聚类,或者说标签。然后,我可能会这样说,好的,让我遍历这个东西。就像这样,可能让我先读一下。我要遍历它的方式是我将做 E tus。🤧抱歉。这是给我命名的中心点,所以让我来做这个,已分配的点。

然后可能会遍历这些命名的中心点。所以我知道这些东西的中心在哪里。好的,所以现在我想更新,我在数据框中更新我的点。我将查看这些列,看看 x0,并且我想计算每一行在 x0 轴上与中心之间的距离。

好的,我要将那减去 x0,然后我会说那是 x0 到 F。接下来我要做同样的事情,沿着其他维度。然后我最终想要做的,让我道个歉。我最终想要做的是计算这些点之间的距离,这些点位于聚类的中心。

好的,我已经计算出了这两个维度之间的差异。所以距离将是这样,它将是 x0 的平方加上 x1 的平方,然后取所有这些的平方根,作为欧几里得距离。0.5 来取平方根。让我想想,所以这是一个单独的数字。

对,我在循环,但是对于每次通过或循环,它是一个单独的数字,这是整列。所以这是一个列,这是一个列,实际上我是在一次计算所有距离。哎。有时候我说 self D。让我回到这个。这将是我添加新列时的那些距离,而我可能会用的列名是我当前所在的聚类。

是的,我将把聚类放在这里。所以现在如果我运行这个。我现在没有打印任何东西。你知道吗,让我把这个也清理一下。我不再需要它,或者更好,直接删除它,然后让我看看在我运行后数据框发生了什么。

一些可怕的东西,也就是。好吧,它添加了这些奇怪的东西。我真正想要的是聚类名称。我这样做了。现在很好,我可以看到我的 x0 和 x1,这就是一个点,我可以说,那离所有聚类有多远?离加号聚类有多远?离 x 聚类有多远?它离所有聚类最近,所以这就是我最终想要的。所以我将做的是,在我循环并计算这三列后,我会说单元格那个数据框。

而标签。我希望它是这三者之一。你知道吗,让我先试着在这里探索一下,看看我如何能做到这一点。嗯。我真正想看的,是我想查看那三列,想弄清楚,嗯。

哪一列在每种情况下具有最小值。而且结果是有一个非常简单的 pans 函数可以做到这一点。它被称为索引。对,通常它的作用是逐列增长并告诉我。哦,旧列中的最小值位于位置 11。

加号列中的最小值位于位置 a 78。这不是我想要的,我想要水平移动。所以我想找出所有的,而不是查看右侧这些索引值。我真的想查看这里的列索引,并说,嗯,这些列中哪一列给我最小值。因此,我将粘贴这个,而不是说访问等于 0。

我要说访问,你知道它是垂直的,我要说访问等于 1,也就是水平的。然后我可以获得所有这些类,所以我将把它放回这里。我可能会再次运行这个,对吧。看看我的数据框。我运行它,我可以看到,好的,太棒了,我有我的原始数据,顺便说一下,这些数据从未改变。然后我计算与每个聚类的距离,然后根据这个我想。

好的,第一个,这是最小的数字,所以这是一个 O 集群,第二个也是同样的。第三个,这三个中最小的值在 x 列下,也就是在 X 集群中。我已经能够分配所有这些点了。那么,让我给你展示一下接下来会发生什么。对了,让我。你又在这里,所以如果我进行点的分配,这里就是这些点。

你可能会看到我有问号。它在说这些到底是什么,所以你会看到这个圆形集群真的很大。它实际上捕捉了大部分这些点,而这个则有相反的问题,我们有一个实际的集群,它在这里的加号点和 X 点之间共享,但这确实有一些聚类,而现在我们已经开始了一个不太好的答案。

我们可以改进一下,我想改进的方式是,现在我已经决定哪些点在圆形集群中。我可以找到那个圆形集群的位置,我可以看到在这个红色圆圈这里。

这不是一个很好的真实中心,因为它位于所有代表点的右侧太远。因此,那个可能更容易一些,现在我们实际上要更新这些中心点。好的,让我在那之前再做一件事,有时我注意到我在调用这个和那个,每次我说 KN。KN,KN。当人们不需要从他们的函数中返回任何东西时,对。

我这里不返回任何东西。人们通常会这样做。对,有时他们会看到这一点,他们只会返回 self。这样做的好处是,当我调用它时,它会做一些事情。然后返回 Km。因为它返回的是 KM,我可以像这样尝试链式调用。

这就是你经常看到人们在方法中只返回 self 的一个原因。最终我们在这里会做同样的事情。但让我们实际更新这些中心点,尝试做点什么。最简单的方法是进行分组,对,我想要。如果我回到这里。系咩。

让我这样做,再看看那个数据框。最终,我想做的是找到新的质心,这些质心是每个标签的这些列的平均值。我要做到这一点的方法是进行分组。

让我先暂停绘图。这让我得到一个奇怪的数据按对象分组。但接下来我可以在上面计算均值。就这样。所以,当我进行分组时,对,我会去索引。就在这里,左侧。通过对所有其他列求均值来得到它。你知道吗。

那里东西太多了,对吧,因为当我在计算中心点时,我不再关心这些的平均值。我就这样做。S a。我只想要我的X列。好的,然后最后一件有点奇怪的事情是你之前注意到了。就像我开始时,标签只是一个普通列,分组使它变成了不是一列。

它让它变成了索引。但我其实并不想这样,所以我只是在这里重置索引。对,所以这一小行代码是快速计算我想要的新聚类的方式。你会看到它与之前的标签x0和x1有相同的数据,但现在我知道我的数据最初是随机的,对吧?糟糕,现在我实际上对它有了一些意义。对,我实际上是说。好吧,让我们把我们的聚类放在数据所代表的中心或中心点上,所以这个将会简单得多,像聚类等于那个。

然后。可能让我来吧。我把这个分开,所以我只是想说聚类等于那个。然后做dot clusters等于。对,所以第一步是理解每个标签的均值或中心,然后试着提取我想要的列,并修复它,使其恢复到原始形状。对吧?让我这样做,我还没告诉它,我只是调用了我们之前做的那个。

这是我们通常开始的地方,但现在我可以在分配了那些点之后做这个,现在我可以运行另一个函数让它更好。所以也许让我实际上这样做,我只是在这里绘图,而不是绘图。但让我看看原始数据。首先,我什么都不知道。

这只是所有的东西都是随机的。我做了一些点的分配。这很好。然后在分配了点之后,我想更新中心。让我快速做一个实验,我想知道我是否可以把这一切放在一起,这样会让我生活更简单,太好了,我可以看到这两个东西对吧。所以数据开始看起来像这样,我要把点分配到一个聚类中,然后更新聚类的中心点,对吧,所以在这里我更新了这些点。

然后你可以看到。等一下。这里发生了什么?让我试着开始。我运行了两次。抱歉。嗯。对,所以你可以看到它做的第一件事是分配点,然后它把它移动过来。你可以看到这个第一个是分配点,第二个在更新中心点,你可以看到发生了一些事情,比如这个红色圆圈向左移动,靠近它应该在的位置,而这个加号有点靠近,没有理由让它挂得那么远。

所以如果我再次运行这两个步骤。像这样,这会变得更好,对吧。所以我会再次运行,现在你看到的,不是发生了太多。最初移动的红点不多,而左边这里没有太多发生。但你看到下面发生了什么。

这个加号。我抓住了一些更多的点在它移动之后。因此,由于驱动这些点,x 是剩余的点。我有点将重心更多地向左,所以当我再次更新时,我有点把 ax 再往左推一点,如果我继续这样运行。

它应该继续向更远处泵送,没错,如果我继续。更新这个。可能需要几次。我不知道我在那儿得到了什么。好了,所以你可以尝试实际看看,我遇到了一个问题,问题是我遇到了一个局部最小值,我能清楚地看到,如果这个红点,红圈抬到顶部会更好,然后这个 actx 抓住下面的聚类,但它没有这样做,因为基本上它必须变得更糟才能变得更好,所以尝试达到我们可能称之为局部最小值。而解决这个问题的方法是,结果并不是我的代码有bug,我只是运气不好。

我预期这一切会发生,但这是一个谈论它的好机会。我运气不好是因为这些起始聚类的位置。我有点随机决定了起始聚类的位置,它们恰好在一个不太吸引这三个实际聚类的点上,而这在每个实现中都是一个问题,如果我去真正的实现。

它会有这个东西,表示我们应该尝试运行算法的次数。每次它都会从不同的起始点开始,然后随机更新,希望它能够收敛,然后它会选择其中最好的一次。我没有预料到它会在演示中发生,因为在我之前的练习中并没有发生。

但我现在要重做,所以我要让我的数据保持不变,看看会发生什么。当我开始时,我有点随机生成我的起始点。尽管我现在可能将这三个作为我的起始点。记住,默认情况下,当我们最终使用 SK learn 时,会从 10 个不同的起始点开始,看看每次会发生什么。

当我运行 Ns。让我。你知道吗,让我。我不想有任何旧图,弄混淆了事情。我会这样做。我可能会说,这是我的起始点,我可以。标记点绘制。那就是它被称为的,标记点然后更新。第二步更新中心,所以我会这样做。

好的,我可以看到我分配了点,然后更新了中心,现在我可以看到这次我运气更好,虽然不完美,对吧,我可以看到此时仍然有一些奇怪的地方,尤其是这个在这里被重新分配了。但如果我继续进行几轮,它实际上很快就能找到三个聚类的位置,通常会在这之间,也许需要几次才能真正收敛到正确的地方。

好的。

使用 Scikit-learn 进行机器学习,4小时实战视角刷新知识框架,初学者进阶必备!<实战教程系列> - P12:12)使用 sklearn 进行 K 均值聚类 - ShowMeAI - BV16u41127nr

P。在最后一段视频中,我们构建了自己的 Chas 类,而这一次我们将学习 SKL 自带的类是如何工作的。通常,你会想这样做,因为它运作良好,并且处理了所有这些棘手的细节。例如,你可以轻松地让它自动生成不同数量的起始聚类。在运行算法之前,它通常会有比纯随机选择位置更聪明的策略。

它通常有一些逻辑来判断何时更新中心足够,并且不会得到任何更好的结果,因此你可以对此设置一个上限,但它通常不会超过必要的次数。所以总的来说,你想使用 K 均值,而不是自己动手。因此,K 均值实际上有这三种我们需要了解的方法,我们有拟合,这并不奇怪,我们已经看到拟合用于变换器和估算器,奇怪的是它同时有变换和预测,这与变换器和估算器都有相似之处,尽管估算器和预测在这里的使用有点奇怪,因为我们并不是在预测某个标签,而是同时得出标签并进行预测。

所以这并不是真正的经典预测。因此,我将展示一些粗略的代码或数据,以演示这三者在我们之前编写的代码中的作用。在我们实际深入使用均值之前。之前在我们的课堂上,我们看到我们有这些分配点。

一个更新中心,这就是我们需要做的核心,以及一个拟合方法。它可能会像这样进行某种循环,对于 I 和某个范围。昨天我只是要调用这两个,它会调用标记点。它会调用更新中心,并且会多次这样做以尝试找到正确的答案,这样做多少次呢?

好吧,当我拨打那个次数时,它就是这样做的。EpoCs 的数量,所以我可能在这里说 Epos,正如我之前所说的,实际 K 是与 SK 学习一起使用的,这将是一个上限,对吧,如果它看到这没有进一步改善的话。

如果已经完成,可能会出现一些中断。如果没有得到任何改善,我不会这样做,我只是试图写一些粗略的代码,让你了解正在发生的事情。因此,当我们在我们的版本上进行时,我在最后绘制了这个图。希望,这能解决这个问题,并更新那些点,确实是这样的,它正在确定每个质心应该去哪里,这就是拟合方法。在这个过程中,我们为原始数据框创建了很多补充信息。

相比之下,我们有一个数据框,K均值类使用了额外的信息,首先是与每个聚类的距离,其次是通过查看这三种距离,我们可以确定哪个数字最小。

在这种情况下,x列中的数字最小,这一行将属于x聚类;接下来,O数字最小,因此我们将处于O聚类。当我们在使用K均值进行转换或预测时,唯一的区别在于我们是使用这些距离还是标签。

让我先做转换,给你展示我们会得到什么。我们将有效地得到这些数据。🤧。这是我们在进行tas转换时会得到的结果,最后我会谈谈在进行像逻辑回归这样的操作之前,作为预处理步骤,它是如何有用的。

然后对于预测,我们真正得到的是哪个组适合得很好。这实际上并不是真正的经典预测,因为我们既在决定标签,又在决定哪些点与每个标签匹配。好的,我要在这个相同的数据上使用K均值,从SK learn中,而不是我们自己的。因此,我会说K M等于K均值。这有很多配置选项。

例如,我们希望从多少个聚类开始,我会说我们想从三个开始,然后我们可以说KM.dot。但是,无论是进行转换还是预测,你总是需要先进行拟合。我想拟合那个数据框。让我再看一下那个数据框。

所以我想拟合那个数据。我们做到了。一旦我们这样做,那么我们可以进行这两种操作。我们可以说转换。在某些情况下,这可能是训练数据,然后我们尝试将聚类应用于另一个数据框,可能是一些测试数据,通常我们会对同一原始数据进行这样的操作。因此,当我在这里进行转换时,我看到有三个聚类,这就是为什么我在这里做了三列数字,三个距离。

或者我原始数据集中每一行。这样做是非常常见的,而不是先拟合再转换。你知道,为什么不一次性做两个?就像销售一样。这将是一个不错的做法,同样我也可以进行拟合预测。然后不是说,嗯,哪个组在里面,它在试图告诉我。具体来说,哦。你在组零,你在组二,等等。

所以我们可能想做的是,我可能想写一个原始数据框的副本。然后,添加这个预测。我将说。我很多,我,我称之为集群,对吧。我可以称之为分类,类似的东西。而且。让我现在实际看看。我可以看到这些是预测的集群。

我查看尾部以查看其他一些。对, 所以我可以绘制它,如果我想的话,我可以给不同的集群分配不同的颜色,对吧,我可以这样说。点散射x等于x0 y等于x1,对吧,我们在两个维度上都有x。

我得到了这三样东西,但我真的想看看它们的颜色。所以我要传入。颜色等于数据框2,表示你是什么集群。你会注意到其中一个消失了。所以0最终是白色。因此我应该传入一个不同的颜色映射。所以让我过去看看matpl Lib中的不同颜色映射。嗯。

集群0与集群1的相似性不如与集群2的相似性,所以我不太关心获取所谓的顺序颜色映射。像这样的东西,在哪种光谱上真的01和2是我不同的类别。因此我将关注定性颜色映射。我只是试着选择这个,使用我的颜色集,并且我不想要超过10个集群。当我这样做时。

我将说我想要tab 10颜色映射。现在我可以看到它实际上给出了这些不同的颜色。这些不同的点组。如果我想的话,我也可以看看质心并将其绘制在这里。我得到了这样的质心,我可以说数据,抱歉。进入开始。Uusster中心。我在这里得到了什么?但是每个质心的坐标就像这一行。

我有三个质心,所以我有三行。因此,我完全可以将其封装在一个数据框中。我可以绘制它,对吧,我可以说do plot.dot scatter。我可以说所有的x是x0,哦,x是0。Y是1。我可以绘制这三个点。让我把它们做得更大一些,红色,所以我要说颜色等于红色。大小等于100。

实际上。在这里使用S,我真的应该把这个和我之前的结合起来。我实际上可以看到质心。为了让它真正有效,我得说。应该使用相同的区域,对吧。你,让我在这里拆分一下。我觉得太长了。中央和停止热顶Sc,使用相同的Ax。因此,我可以做所有相同的事情。

就像我之前的版本一样。好的。让我解决一个问题,就是我怎么知道我们应该使用三个簇,答案是我只是大致估计了一下。如果有20个簇,对吧,那可能不容易做到,或者如果没有美观的二维数据。

我有x0,x1,x2,x3,x4,x5。之前不会很明显有多少个簇。所以你会采取的策略是尝试一些簇的数量,看看效果如何。而这个效果的衡量称为惯性。所以我可以像这样查看惯性。嗯,这在测量什么呢,它在测量平均值。

从点到最近的质心的距离,这是什么意思,对吧,所以例如。这个在这里实际上离那个质心有点远,所以我会对这个分数贡献很大,而这个就在质心旁边,所以希望所有东西都整齐地围绕一个质心,当然,我有的质心越多,这个数字会下降,这个惯性会下降,越低越好,这意味着所有的东西都靠近质心。所以我们会尝试不同数量的簇,看看惯性下降的速度,让我们来做这个。

所以我会回去抓取我之前所有的东西。而且。有人抓住这个。所以让我,给我做这个。这就是我真正需要的。我将有一个小循环,我甚至不在乎再做预测了。我只想知道那个惯性分数。A。Ea。哦。E平方。好的。

所以你可以看到我在这里要做的事情。对吧,我会尝试不同的数量。当然。随着我添加。更多这些东西,惯性会下降,直到小球如果我有相同数量的簇和点。那么幸运的是,每个点都命中了自己的簇。所以我可能会在这里有一个循环。我会说在范围内的4个k。我想有1到10个簇,对吧,所以K,这就是为什么它是K均值。

K是质心的数量,与质心作为其他Xy值的平均值的事实相对。我运行这个东西。我想把所有这些放在字典里,或者更好的东西,甚至是一个序列,对吧,我要说。S。这是一个序列。所以我打算这样做。我会说。K的数量等于这个东西。这,这个惯性。我会尝试运行这个。

当我完成的时候,或者我认为这里可能有一些问题时。依然。有一个实际上在pandas中相对较新的问题是,他们不喜欢你留下不明确的类型。所以我可能会在前面非常明确。这个序列将包含浮点数。然后另一个抱怨的是,嗯。

我有一个关键错误是一个。产生这个错误的原因是当我在一系列之后加上括号时,它在猜测这是索引还是整数位置。我错误地猜测了一个整数位置。所以它在猜测这个,当然如果我把它改成那样就没问题了,我可以得到我的分数。

一旦我得到了我的分数,当然我可以绘制我的分数。像这样。我还应该这样做。我应该说这里的一些标签。X 标签是 k,也就是聚类的数量。我的 Y 标签是我的 Y 标签是平均。Bd 距离。你最近的质心。对,所以当我在这里查看时,我看到有两个质心。

远比只有一个要好,所以有两个非常明显的聚类。从两个到三个。之后的另一个大改进是没有必要有四个质心,对吧,这不会给我太大的改善。我们再试一次,从头开始运行,因为有时这些聚类会相互重叠,所以仅仅因为。我在这里创建了三个聚类并不意味着最后会有三个明确的聚类。

所以让我再运行一次。🤧。在这里,是否是两个聚类或三个聚类并不那么清楚,不出所料。从 2 到 3 的收益较少。好的,那让我再试几次。再多一点直觉。好的,所以很明显我们想要去到三个。呃。我想看到一个真的重叠的情况,这在这里有点运气成分。

那个呢,从两个到三个的收益并不大,因为这两个聚类重叠得太多了,对吧?好的。所以这就是你常常想要做的事情之一,这些变换的一个使用案例是你会创建一个这样的图,以便你可以对你的数据进行一些描述。你可以说有多少种不同的聚类,当然这涉及到预测,下次我可能会谈谈我们如何做到这一点,这是我的笔记。

这些变换有什么用途,我们为什么想要获取每个聚类的距离数据?

在过去几个视频中,我们一直在研究如何使用 K 均值来识别数据中有多少个聚类,这本身就是有用的。另一个常见策略是我们会将 K 均值用作我们管道中另一个阶段的预处理。

更一般地说,你可能会应用一些无监督学习技术,如 K 均值或主成分分析,以为监督技术创建更好的输入。例如,逻辑回归。因此,我会在这里做到这一点,我真的尝试创建数据,使其能够很好地工作,所以在左侧你可以看到我的训练数据,在右侧是我的测试数据。

而你可以在训练数据中看到,我在这里创建了五个聚类。这些聚类几乎重叠在一起,在这五个聚类中,四个有黑点,一个有灰点,除此之外,它们只是灰点,随机分布在整个空间中。

然后在右侧我们想要预测的,因此显然这里有一些模式。例如,作为人类,我可能会预测这些与这里的黑点聚类在同一区域,因此我可能猜测这些是黑点,然后其他点也像如果我说在这里这个空间。

这些可能是训练数据中的灰点,那些是灰色的。😊。因此,确实很难画出一条单线将黑点与灰点分开。对于逻辑回归来说,所以我必须做某种预处理。好的。我将创建我的管道,在这里,A P是管道。

管道只是一个步骤列表。而最后一步,最重要的一步。也许是逻辑回归。就这样。在第一个步骤将是标准缩放。像这样标准缩放器,然后最终我将加入K均值作为预处理步骤,以帮助逻辑回归更好地工作。因此我将这样做,我将拟合我的模型,所以P点拟合。

而我想要拟合的对象是,我已经在这里将数据框分割为训练数据和测试数据。我可以看到我的两个输入列是x0和x1。因此我将在这里将它们放入一个变量中,并说x列是x0?和x1。那么我试图预测的y列就是y,因为我将对训练数据中的这些x列进行预测或拟合。

然后我将把它与我的进行比较。为什么,科林?然后在我这样做之后,我想要评分。这种分类器的效果如何。所以我要对我的测试数据进行评分。因此我运行这个,看到它表现不佳,正确率只有大约63%,因为很难将那些黑点与灰点分开。而且,这是因为当我只有一个普通的逻辑回归时,它只能在那儿放一条直线。

所以如果我将K均值作为预处理步骤引入。我们来试试这个。K均值在这里很好。而且,让我指定聚类的数量。我会说,聚类数等于让我们说的。先试试三个。我会运行这个。那么发生了什么?我有一个额外的右括号。只是随便加上的。好了。它应该在那儿。请原谅我。

所以这仍然不是很好,因为这里的聚类不够,对吧。我想原本有五个聚类。如果我尝试增加到5。你可以看到我的表现明显好转,但如果我再增加到10,那效果更好,对吧,我可以更好地捕捉不同的区域并意识到它们的接近程度,但是在进行这种预处理时,聚类更多通常不会像聚类太少那样成问题。那么当我将输入变量带入这个模型时,发生了什么呢?我在数据上使用了这个K均值步骤,对吧?它输出的是到每个聚类的距离,这些聚类是识别出来的。因此,我可能会知道我的一个变量,那么到这个聚类的距离是多少,当然,如果这个距离很小,那么它可能是一个黑点。我还可能遇到另一个问题,比如到这个聚类的距离是多少,如果那个距离很小,那么它实际上可能是一个灰点。

所以这是进行预处理的一种方法,另一种方法,可能同样有效,就是多项式特征,它也可以帮助我们找到黑色和绿色之间更复杂的边界。

使用 Scikit-learn 进行机器学习,4小时实战视角刷新知识框架,初学者进阶必备!<实战教程系列> - P2:2)线性回归 - ShowMeAI - BV16u41127nr

好吧,在这个视频中,我将使用 Psyt Learn 训练一个回归模型,处理一些威斯康星州的 COVID 数据。现在我在卫生服务部网站上,这是一个数据门户,我可以在这里搜索 COVID。而我使用的数据集就是这个,按县的历史数据。威斯康星州大约有 70 个县。

这些数据告诉我每一天,我想知道能否在这里绘制一个数据浏览器。它显示每个县每个日期的所有不同统计数据,比如说,总共有多少阳性病例,新病例有多少。过去七天的平均水平又如何?死亡人数又有多少。

最终我们要预测的内容基于这些数据是,未来两周将有多少死亡人数,依据今天的统计数据。因此我下载了这个,没再做一次。

然后我在这里进行了相当多的数据清理。这并不是这次讲座的重点,所以我有一个笔记本来做所有的清理。我只是想快速向你们介绍我在这里做的一些事情,而不花太多时间。在这一点上,我提取了一些有趣的列,例如。

在过去七天内,平均有多少阳性病例,以及新死亡人数又有多少?

我们有很多缺失数据,所以我只是删除了所有有缺失数据的条目。然后我将日期转换为实际的时间格式,并在这个过程中去掉了小时部分。我只想获得日期,而不包含发布日期的小时。最后,这个数据集的文档说明,负 999 实际上意味着该字段的值少于 55。

所以它可以是从 0 到 4,因此我觉得为了简单起见,我把所有 0 替换掉。我们并不知道那是什么,你可以想象做得更聪明一些,比如说 2.5 在某种意义上更合理。无论如何,我得到的数据集看起来是这样的。

在很多情况下,虽然没有新的病例和新的死亡,但对于一些较小的县可能确实如此。而对于较大的县,显然不是零。因此,我再往下看一点。我还想添加一列,不仅仅是关于新死亡人数。

那么,未来两周新死亡人数有多少?因此我不得不使用一些时间差的技巧,基本上是将数据与未来两周的数据结合,如果你有兴趣可以看看。但最终我得到的数据集看起来是这样的。我知道在这一天有多少新死亡人数。

然后这个最后的字段是特定数量之后的数量,我将所有这些保存到这个 Wisconsin COVID 数据集中,这就是我可能在这里处理的内容,我只是想过来创建一个新的笔记本。来分析它。所以让我过来。然后我将做的是首先导入 pandas。

所以我将说。导入 pandas 作为 PD。也许我还会导入 matplotlib,点5 plot。嗯。作为 PLT,然后也许我可以先配置我的 matplotlib 内容。Ot,lib 和 line。然后 PRRT 那个。A C 参数。让我们把字体大小稍微调大一点。很好。现在我可以实际给我的数据框,所以我将说数据框等于 PDd。read CSv。

我想要的是什么呢,关于我从另一个笔记本生成的文件,即 Wisconsin。12vi。csv。让我先看一下。所以这就是我能做的,或许只是为了确保所有这些东西实际上不是零,我说一下数据框的意义,因此我可以看到在某一天的平均数据中,四分之一的人已经去世。我想做的是预测这个字段,我可能会将其作为特征或将其作为特征,而这将是我实际想要预测的标签列。

这是一个数量,这就是我为什么要做回归而不是分类。通常在我跳入尝试进行回归之前,我会做一个散点图,以查看我是否可以在数据中视觉上识别出任何模式,所以我可能会这样做,我可能会说数据框点图。那是散点图。然后我可以说我的 x 等于某个值,然后我的 y 等于某个值。

在这两种情况下,我试图预测的东西是我的 Y,即在给定日期之后两周会有多少死亡人数。然后我的 X,我想在第一种情况下尝试七天的平均值。就这样。所以我可以看到那里的图像,然后我想做的另一件事是,如果我查看每天的死亡人数,这将告诉我两周后会有多少死亡人数,我看到那里的模式稍微有所不同。

有时对于这些,我喜欢说 alpha 等于 0。2 或者类似的值,这样当许多点重叠在一起时,可以稍微增加一点透明度。我也会这样做。还有一个我在前进过程中非常喜欢做的事情是训练一个回归模型。

在这两个变量上,我希望你能理解当我们评分时,那个评分与这两者之间关系的强度是如何对应的。所以我将从这个开始,我们如何训练一个回归模型来拟合这个?

我首先需要做的是导入它。所以我会说从 SKLearn 导入线性模型,导入线性回归。这是我们这个学期要学习的主要回归模型,所以我会这么做。如果我想,我可以创建一个新的线性回归对象。就这样。

所以有几个,确实有几个方法是我们想要学习的。因此,一些重要的方法包括拟合、预测、F 分数和预测。我们将对我们的数据运行这些方法。对吧?所以让我在这里继续。当我拟合或训练它时,我需要提供两部分信息,我给它我的。

我的 x 值,我将给它我的 y 值。对于 y 值,如果我愿意,可以是一个序列。所以我可以直接从我的 x 值中提取那一列,它必须是一个数据框。所以让我先看看我早先的数据框。我要做的第一件事是做一个与这个图对应的模型,对吧?所以我想做的是,今天的死亡人数如何预测未来的死亡人数。

所以我需要做的是将这一列的新死亡人数绘制到一个数据框中。我要这么做,如果我这样做,只是死亡。新。那么我刚才做了一个序列,创建数据框的方式是我可以传入一个列表,我可以在这里说一些列,对吧?所以把列表放在括号内看起来有点奇怪,但这就是发生的事情。在这种情况下,我实际上只对一件事感兴趣,那就是在这一天有多少新的死亡人数。因此我这样做,得到了一个不错的数据框,对我们来说会很好,然后对于我的 y 值,我可以直接将其作为序列提取出来。

这将是死亡的新数据。两周后。所有这些将是我的 x 值。这必须是一个数据框。然后这些 y 值可以是一个序列。一般来说,为什么我在试图预测一件事时?但我可能是基于多个列来进行预测。所以我将往下走,我会复制这些内容。

我要在这里复制这个。然后让我在这里复制这个。就这样。我训练它。所以拟合意味着根据数据进行训练。因此,我没有进行很多特征和标签的示例,对吧?所以我可以这样做,这相对平淡。我希望能够可视化。这个模型看起来像什么。

如果我有新数据,它会做出什么样的预测?结果发现,由于我在做线性回归,我这里只有一列。实际上,这将非常容易可视化,因为我可以询问给定的 x 值,你预测的 y 值是多少?

我可以这样做,我可以说Lr.preect。然后我必须传入某种值。对,我想我可以传入一些东西,比如,如果有10人新的死亡,我预测两周后会有多少。我必须把这个作为一个列表的列表传入,因为这就是上面所需的形状。我可以看到还有这个数组的东西。

这是一个nuy数组,我们现在不必太担心这个。一般来说,我会创建一个数据框来帮助我展示拟合线。这是我们可以表示关系的一种方式。如果我在这里画一条线,那就可以告诉我对于我的x变量,我对y的预测是什么。

所以我将创建一个新的拟合数据框,像这样。这个数据框将有一列,记住这是今天的死亡人数。对于这一点,我只是尝试放入一些不同的值,可能我会从0到500绘制。

让我看一下。好的,这就是我的新死亡人数。然后我可以将整个内容传入我的预测中,基本上计算出那些y值。我可以说LR.t predict。如果我想,我可以像这样放入我的整个数据框,试着找出那一列,再一次。

我得到了很多这些奇怪的值,对,这个nuy数组。但是好的一点是,我可以说,我想把这些东西放入一个新列中。我将称其为“预测”。我说完这个后,可能还想强调一下这不是实际数据,而只是一个预测。所以我将把它放在这里。现在当我运行这个时,我可以看到我有。

针对今天的死亡人数,我预测两周后会有多少。对,如果今天有500人死亡,我猜测在两周后,某个特定县可能会有160人死亡。那么我现在应该怎么做呢?我可以实际绘制这个东西,我可以说 fit DF.dot plot online。

我可以说x等于这个东西。我可以说y等于另一个东西,就像这样。不同的模型会给出不同的结果,但我使用的线性回归,正试图给我一条直线。我要运行这个,那里会有某种直线,也许我会把它设置为红色,因为我即将绘制一些新点。

我常常喜欢在得到回归线后,将其与我的实际数据进行比较。记得之前我有这些类似的列,这些都在我的原始数据框中。对于我的原始数据框,我只想绘制一个散点图,展示所有那些点。在这一点上,我并不是在绘制某种预测,而是在绘制真实数据。

所以我将这样做。我想它正在这里画图。让我实际上尝试将其放在同一个上。我将说。AX等于AX。我可能会让第一个返回一个AX。然后也许。在这里我将再次设置alpha B 0.2。我为什么要把AX放在那里?好了。然后我得到了这些漂亮的图。

我可以看到这实在是太长了。也许我应该做的是,我看到我的数据大约只有。大约100,所以也许在这里我会在大约100的范围内做出预测。所以我将这样做,我可以看到那条线是如何契合的。是的。好的,那么,我做得如何,我是说。我可能会根据观察直观推测。实际上。

我正在看的每一个点。好吧,我希望大多数都靠近那条线。我可以看到很多并不是,对吧?所以我们评价这些东西的方式是,我们会看看我们试图预测的东西的方差是什么?

那么这个东西的方差是什么,方差是一种测量值,表示值通常与平均值的差异。对,所以我可以得到我的方差,这一列的方差是1.35。我们的想法是,我们将说。那么这些点与y轴上点的平均值相比,相差多少,然后我们将其与我画的红线的差异进行比较,如果这条线很好,那么相对于红线的方差可能会下降很多。

对不起,它们相对于红线的方差可能相对于平均值下降很多,我想我可以画一条水平线。于是我可以像之前那样回来拟合数据。我在哪里拟合的数据,我就在这里。我可以检查。与其拟合,不如给它打分。对, 这将告诉我模型解释了多少方差。

通常这将是一个介于0和1之间的分数,其中0是最糟糕的,而1是最好的,在某些奇怪的情况下,它甚至可能变成负数,或许我们最终会讨论这个。一般来说,它会在0和1之间。所以我看到这并不太好。好的。让我们试着对我们之前的另一个变量进行处理。对吧。

所以我这里有这个,看看这些图。我可能会期待这个表现稍微好一些。我想它大约是9%。所以我将在这里复制这些东西。然后我将创建一个新的。一个新的线性回归对象。然后我将做什么?F它。我之前在哪里拟合。

这是我之前的拟合方式。不是拟合。今天的桌子。好吧。让我尝试拟合到多少。哦,我想获取阳性病例的数量。让我再上去看看我的数据框。我想拟合过去七天的平均病例数。

所以我现在要这样做,我将根据这个其他变量训练我的新模型。我该如何使用这个来预测两周内会有多少死亡人数,也许我会立即给它打分。所以我也许会把你复制这个,然后给它打分。我可以看到它做得好多了,而不是解释9%的方差。

我在解释方差的20%如果我解释方差的100%,那么这将是非常显著的,因为每个点都会恰好在那条线上。让我试着像之前那样绘制图形,所以我将把这个复制到这里。然后我需要这个,记住这个拟合的数据框。

我必须在这里使用一系列值生成它。所以我将把这个粘贴到这里。那么我将再次生成从零到100的值。这告诉我,嗯,确实是正面的。每天平均病例。然后我将根据这个得到一个预测。然后我可以绘制这样的线。

我会这样做,我可以看到。嗯,有些地方有点奇怪,对吧,我想。我想我没有正确更改所有内容,我看到X轴仍然是今天的死亡人数,而不是我实际训练的内容,它显示的是七天平均值,对吧,所以让我修正它。再运行一次。所以这稍微好一些。我可以看到线没有延伸得太远。

这之前是有道理的,当我说,嗯,某一天有多少死亡人数时,那个数字相对较小,和确诊的Covid病例数量相比。因此,也许我会重新做这个,而不是从0到100,也许我会从零到大约900。所以我运行这个。我可以看到现在的F值更好,我在解释方差的20%,而不是只有9%。

所以我在这里做了一些不好的事情,我想在下一个视频中谈谈这个。如果我只是想给你留下一个想法。嗯。假设我在课堂上教某个东西。我演示一个例子。也许每个人都看到那个例子并尝试从中学习。如果我在任何考试中给出完全相同的答案或完全相同的例子。那么,有人能在那次考试中表现好,这意味着什么呢?我认为有两种可能性。

可能有一个人确实从那个例子中学到了东西,即使他们再次看到同样的例子,他们也理解发生了什么。另一种可能是,有人只是记住了例子的答案,然后在考试时,他们只是重复它。这就不太好了。所以这里也是一样,对吧,当我进行拟合时。

我真的在给我的线性回归模型一些例子。😊 然后当我打分时,实际上我是在使用那些相同的例子。所以如果这个分数很好,我想这里不太好,但如果它很好,我就真的不知道,嗯。模型是否有效地记住了答案,还是过度拟合。

过拟合是我们指的基本上是记住了它的情况。因此,下次我将讨论我们如何实际解决这个问题,并更好地判断它是否做得很好。

使用 Scikit-learn 进行机器学习,4小时实战视角刷新知识框架,初学者进阶必备!<实战教程系列> - P3:3)训练测试拆分 - ShowMeAI - BV16u41127nr

所以上次我讨论了在同一数据上评估我们模型的问题。模型实际上可以有效地记忆答案,看起来表现良好,即使它并没有真正学到任何东西。我们将通过使用一种SK学习中的训练测试拆分来解决这个问题。这是一种通用策略,但这种特定方法会让我们更容易。

我们将这样做,我将获取我们的原始数据框,并返回两个数据框。我们将把我们的模型训练在一个数据框上,然后在另一个未见过的数据上进行评估。因此,这更好地测试它的表现。因此我可以看到我可以传递许多内容,其中之一是我可以说我希望我的数据中有多少比例进入测试集,我还可以说其他事情,比如尝试对数据进行分层,例如假设我处理的是某种分类数据。

我可能想确保两边的类别数量相似,虽然我在这里并没有尝试这样做。但我会指定一个训练测试集。

所以让我导入这个东西,我要说。从SKLn导入哦是SKLn。t模型选择。导入。训练,测试,拆分。好的,然后我要说尝试和测试拆分。我将尝试在我原始的数据框上进行拆分。基本上,它返回一个包含两个数据框的数组。

所以我可以这样理解,我有我的训练数据框和测试数据框,它们的顺序是返回它们。让我看看这些。这里是我的训练数据框。然后这是我的测试数据框。你可以看到它们有点打乱了,如果我看索引的话。我正在处理不同的数据,所以这是我的模型将要学习的数据,而另一个是我实际确保它能学到东西的数据。

所以现在我可以看到,如果我看这个,下面是6300,上面是19000。这是因为默认的拆分是0.25,所以如果我愿意,可以这样做。然后这会让第一个数据框变大,第二个变小。所以我将这样做。哦,接下来让我看看我做错了什么。我想我实际上需要指定测试大小。

所以我将设置测试大小等于这个。然后这将会大一点。用于测试的数据更多。而训练的数据则稍少,所以这里有一些权衡。无论如何,现在我将回到我之前的例子,在那里我做了训练,而不是在同一数据上进行拟合和评分。我将拟合我的训练数据,然后在我的测试数据上进行评分。

所以我将从头开始再做一次复习,我要说LR等于线性回归。

哦,来了,我说Lr.fit。我有我的训练数据框,然后我有一个列的列表。在这里,我可能有我的Y列,对吧?所以这就是总体策略。然后我想做的是给它打分。当我给它打分时,我会提供一个Y列和一个x列。抱歉。

我得说,训练数据框在这里。我会给它同样的信息。但现在我将处理测试数据框。我可能会说测试数据框,然后在这里也是一样,测试数据框。然后我将为此传递一个列的列表,就像之前一样。

我上次在看这个正数时在做什么?七天的平均值。有人可能会将其传递过来。就像这样,这里也是一样。然后在这里,我可以查看我试图预测的Y值,这就是这个东西。当我把它传递过来时,这里也是一样。我会这么做。

我看到这个。好吧,我的得分是0.16。那么如果我想在我原始的训练数据框上运行它,会发生什么呢?

像这样的训练数据框。在我训练的数据上表现得更好。这表明这里存在一些过拟合,对吧?模型在它学习过的数据上表现得更好,而不是在一些它之前没见过的新数据上,这当然是一个问题。因此,我可以尝试不同的方法来避免这种情况,我们最终会在这个学期讨论其中的一些方法。

大家好,今天我将讨论如何判断一个模型是否表现良好。我们如何解读不同的得分,并确保我们不是偶然得到一个好得分。因此,我可能会接上次的内容,模型试图预测基于当前病例数量的两周后COVID死亡人数,所以让我快速回顾一下上次我们在数据框上进行训练测试分割时的操作,我们的数据框看起来像这样。

这是按县计算的。然后每天和一年的数据在那里。然后我创建了这个线性回归模型,我从SK学习的线性模型中导入了它。然后我用它做了两件事,我把它拟合到我的训练数据上。然后我在我的测试数据上给它打分,这两部分我的训练数据和测试数据来自这里,因此当我做这个时。

我基本上做的是输入我的Y值,这是我最终想要预测的。然后在这里我输入我的x值或特征,这些是我现在知道的东西,例如,现在我知道阳性病例的七天滚动平均数,然后两周后我试图预测会有多少死亡。这可以是一个单一的序列,这就是为什么我们只输入一个字符串。

我在数据框后的括号里。这里我们实际上必须传入一个完整的数据框,因为通常我们可能有多个特征,当我在数据框后面的括号里传入一个列表时,我得到的是一个较小的数据框。这就是为什么我会有双括号。所以无论如何,我有这个0。

2,我们知道分数会在0和1之间。因此,很难说这个分数有多好,对吧?也许你总是偶然得到0.2。那么,这是我今天想谈的事情之一。你可能还会注意到,如果我多次重新运行这个,哦,现在我得到了27%、32%、24%、24、28、26。所以你可以看到,基于我如何进行训练测试划分,结果是不同的。

我可以得到非常不同的数字,因此这并没有给我们很多保障。那么我们如何才能从系统中获得更稳定的数字呢?我只给你一个关于问题的提示,如果我查看训练数据框并查看这个列,正是我们要预测的内容。嗯。让我来做这个。所以我有所有这些数字。

让我查看该列的方差,方差只是不同值与平均值之间差异的一个度量。然后我也将对测试集做同样的事情。因此,当我对测试集进行操作时,我看到它们实际上具有相当不同的方差。如果我再运行一次,随机抽样结果不同,现在测试数据的方差实际上比训练数据的方差要高。

我们最终会看看这个评分函数是如何工作的。但事实证明,它在很大程度上基于这个方差。这就是我们有如此嘈杂的度量的原因。所以让我去看幻灯片,尝试预览一下我们今天要讨论的内容。

我们将学习与模型评估相关的新函数。所以首先我们将学习这两个函数,它们将让我们对模型进行评分。

第二,如果我们的模型表现平庸,就像我的模型一样,我的意思是0.2并不好。我们怎么知道这不是偶然的呢?因此,我们将使用一种叫做置换检验分数的方法。最后,为了获得一个噪声较少的度量,我们将进行交叉验证评分。

那么让我从这两个指标开始。我有这个R²分数和平均绝对误差。我们将讨论它们是如何工作的。

如果我回到我的幻灯片或我的笔记本,我在这里进行评分。我也可以在这里说,从SKL.dot矩阵开始。

导入。 我想做几件事。 我想计算 R2 分数,然后是平均绝对误差分数。 所有这些指标的工作方式大致如下。 我会调用指标函数。 然后我会说类似于,我的意思是。 我应该在这里快速检查一下。 我会说,我必须确保我的真实值和预测值之间的顺序是不同的。

我会说,真实值是什么,然后是我的预测值。 所以例如,在这里。 我知道这些是我的真实值。 然后我的预测值,嗯。 我该如何忘记我的预测值,我可以简单地说,模型。 请为我预测这些 y 值应该基于我将给你的 x 值。

所以我将这样做,在这里我输入 x 值,它将返回给我 Y 值。 还有这个奇怪的东西,我们最终会谈到。 但我可以把这个放在这里。 这样我就可以在这里使用很多不同的指标函数,例如。

使用 R2 分数。 就在这里,结果是与模型相关的这个平方默认使用 R2 分数。 我可以使用很多不同的指标,但这个是默认的。 所以让我们谈谈。 让我们稍微谈谈这个是如何计算的。 所以它的想法是,这是我想预测的东西。 所以这是我的 y 列。

有人会说,为什么在这里。 我可以瞥一眼。 我想做的是查看这一列相对于均值的平方残差。 那是什么意思。 我可以取这个。 然后减去这个的均值。 然后如果我想,我可以对所有这些进行平方。 所以这实际上是衡量系统有多糟糕的一个标准,如果我把所有这些东西加起来。

所以这实际上是系统的方差,只是我在求和而不是平均。 对,所以这是我原本的总误差或系统的方差,我可以认为我只是在添加,所以我在尝试平方和。🤧然后我想考虑的是,如果不是测量每个值与均值的距离。 而是测量到我实际预测的距离。

所以在这里会非常相似,我可以说,剩下的是什么。 如果我减去我的预测。 我如何获得我的预测,嗯,这就是在这里。 我会抓取这一部分。 让我把我的预测放在这里。 是的,然后让我看看。 所以我真正的想法是,最初这是我在系统中的方差,而这是我现在的方差。

在我做预测后,而不是仅仅减去均值。因此,我可以说,嗯,我可以说,还有多少剩余。我可以说剩余除以总数。那么,为什么呢?哦,让我把它放在这里。我可以说剩余除以总数,然后我想,好的。

为什么基本上保留了79%的方差?这意味着我减去了20%。🤧你可以看到这正是上面的内容,所以实际上这是人们用来评估回归效果的数学。通常我们可以用R平方分数更简单地做到这一点,甚至更简单的就是默认的vi say线性回归.dot分数。

让我给你举个例子,说明人们可能会使用的另一种指标。所以也许我只是想知道,嗯,平均误差是多少?在这种情况下,我会回到这一部分。对,这都是错误。如果我想获得平均值,应该考虑绝对误差。然后我可以取那个的均值。对。

所以这将是平均绝对误差。结果证明,实际上,干脆取这个均值绝对误差就行了。这其中有很多不同的指标,我想如果我按下Shift Tab,嗯。也许只是常规Tab。我可以看到这里所有不同的指标。

而且我大多数都没有使用过。所以我把这个粘贴在这里,我发现,嗯,这有点奇怪。它应该是相同的,应该是同一个数字。为什么不是同一个数字。因为我想要的是我的预测误差,而不是相对于均值。因此,对不起,这是我想要的,这是我想抓的东西。对。

所以我想说,你知道,这里是我所有的错误。取它们的绝对值。对,有些错误是正的或负的。我只是想要绝对值。然后我有平均值。为什么呢。嗯。在平衡语法中,这通常可能意味着我的括号不匹配。我明白了。

所以这个在那儿是匹配的。我不知道为什么我抓住了那个平方。好的。我可以看到这都是我的错误。然后我取绝对值并计算平均值。感谢上天,实际上得到的和我在这里写的相同。因此,再一次。对,这只是这个更复杂数学的捷径。

但这是另一种指标,涉及这些指标如何工作。呃。这种方法对所有错误的计数相对平等,你知道。错误的两倍大只是坏的两倍。因为在这里,我在做R平方分数时,平方我的错误,这会使它看起来更糟,尤其是当我有一些非常大的错误,而不是很多小错误时。

好的,这些是几个指标,这是我们想在幻灯片中回答的内容之一。我将返回这里。

使用 Scikit-learn 进行机器学习,4小时实战视角刷新知识框架,初学者进阶必备!<实战教程系列> - P4:4)模型评估 - ShowMeAI - BV16u41127nr

我们谈到了我们的平方得分,我们谈到了绝对平方误差。这是我们可以衡量误差的不同方式。接下来我想讨论的是,如果我们的得分尝试中等,比如0.2满分1,我如何知道这实际上是增长,而不仅仅是运气。

答案是我们要做的是使用我们原始的数据,并用我们的模型对其进行评分。我们能够训练一个模型,使得x和y能够评分。所以假设我的得分是0.8,这并不是那么糟糕。我将打乱数据,因此我知道y和x之间没有关系。

好的,我要做的是把这个y列随机打乱。而这个词就是“排列”。当我得到这个列的排列版本时,你可以看到。例如,5曾经是第一个数字,而现在这里的5变成了下面的数字。所以我只是随意地打乱了一下,然后在这个数据上训练模型,试图寻找y和x之间的关系。

显然应该没有关系,因为我只是把所有东西都打乱了,但我可以尝试训练一个模型并对此进行评分。所以如果我看到在垃圾数据上训练模型时,如果我的得分比最初的得分更高。

嗯,这可能意味着我最初没有任何显著的结果,所以我可能没有任何有意义的模型。这就是这个函数的粗略想法,它将为我们打乱数据。

它将获取一个得分,然后尝试再次打乱数据,获取一个得分,试图根据这些打乱的数据得到100或100个不同的得分。然后基于此我们可以估计并真正看到这个得分。

这是否有点不寻常地好,还是感觉这可能与垃圾数据相符,基于此我们基本上可以说,嘿,我信任这个模型还是那个?那么我去这里回到笔记本?

所以,可能我只是想在这里做一些笔记,以便我们所做的事情更清楚。这部分是关于指标的。

然后这部分将会讨论排列测试。

所以让我来看看,我实际上已经导入了它,这很好,所以所有与模型评估相关的东西都在这个模型选择下,因为我们经常会有几种不同的模型,我们尝试使用不同的工具来说出我们认为最好的模型,并推荐给人们。所以我看到我有这个置换检验分数。

我可能会把这个粘贴在这里,我可以看到我需要三样东西。至少。我必须有我的模型,也就是 L R。🤧我必须有我自己的。

我的 x 值,然后最后是我的 y 值。所以我这里要做的就是,因为。嗯。因为我有这个 testF。对于我的 x 和 y,我就直接抓这些对吧。这个是我的 x,根据七天的平均值,我想预测这里的值。我会抓取这个。结果表明这将返回一个长度为三的元组。

所以我只需要运行它,这需要一点时间。这个元组中的三样东西将是我模块模型的原始分数。

你知道,当我可能只是在告诉垃圾分数时,会有一些其他分数。因为我在打乱数据。我不期望有任何模式,会有一堆这样的分数。然后会有一个叫做 P 值的东西。P 值告诉我的是什么。嗯。什么是这样的好分数被一个生成所有这些垃圾分数的系统生成的概率。

对,如果这个值真的很小,那么我可以看到,这实际上比我的垃圾分数好得多。所以我实际上得到了一个显著的结果。因为这些是我返回的三样东西。😊,对,我知道 T 是一个元组。我只是把它放在这里,它会自动为我解包这些东西。

所以我来看看这个。然后我会得到我模型的一个分数。然后我可以在这里有我的垃圾分数。我看到有一大堆。如果我想的话,可以把它们放到一个系列中。

然后我可以做一个这些的直方图。

我能看到,实际上它们都在 0 或更低,对吧,所有这些。而这大约是 0.0,9,实际上。这很远。所以看起来我们离这些垃圾分数相当远。因此,这个 P 值将会很小。似乎无论什么过程。

我用来获取这些垃圾分数的方法不太可能得到这么好的分数。所以我会把这个作为一个有意义的结果。

让我再回到这里想一个主意,我们如何处理噪声。我们看到当我不断做这个时,得到了不同的分数,为此我们将使用一种叫做交叉验证的东西。

交叉验证分数。它的工作方式是我将把数据拆分,而不仅仅是有这些训练和任务。我将分成四个部分。然后这四个部分将轮流作为测试数据。所以也许我会先在这些行上训练我的数据,然后在这个上进行测试。

然后我的模型会得到,比如说,0。2 的分数。接着我会拿一块不同的数据,每一个都叫做数据的一个折叠。顺便说一下,我会先在第一、第二和第四部分上进行训练。所以我得到一个模型,然后在那个测试数据集上进行评估,假设这次我运气好一些,得到了 0。

3,再做一次,01再来一次0。2,然后我可以取这些的平均值,这样会是一个更稳定的衡量我模型表现的方式,不会太脆弱于测试或训练数据集上发生的事情,因为所有的数据在某个时候都在测试数据中。

或者训练数据。所以我过来这里做这个,对吧,所以这就叫做。

交叉验证。让我把这个称为交叉验证分数。我需要传入的内容是我的估算器。然后我必须传入我的 x 值和我的 y 值。

好的,让我把这些东西拿过来。其实,我想这和这里的内容是一样的。所以我来抓取我的模型、我的 x 值和我的 y 值。

这次,我只想在我的所有数据上进行操作。所以我可以说数据框。然后数据框,实际上最佳实践就是这样做训练数据。因此,我将这样做,然后我会得到所有这些分数,原因是默认情况下有五个折叠,所以我可以说,你知道在这张图里,有四个,这里我看到默认情况下有五个,这就是我得到五个分数的原因。我可以说我想要 10 个,这样我就能得到这些 10 个分数,这些分数看起来像之前看到的数字,比如 0。

27 0。17 另一个 0。27 是 0。304,如果我回到这里,再运行这个几次,这就是我随机拆分我的训练和测试后得到的数字。

那么,为什么这很有用呢?因为我可以在这里得到我的分数。我可以说几件事情,我的意思是分数。

所以我可以看到,平均而言,R²平方得分将是0.21。但我也可以获得一些方差的感觉,这将告诉我我对测试或训练数据集中数据发生什么是多么敏感,这可能取决于我有多少异常值,以及这些异常值的数量。评分会有什么影响?好的,这将是我们通常的做法。

所以最后一件事,对吧,当我在。

这里展示这张图片,我有点说,嘿,我有我所有的数据。然后我只是把它分成训练集和测试集。

我为什么没有在这里使用我所有的数据,原因是。尽管在这个例子中这样做是可以的,但你通常会尝试进行几个不同的模型,而你会想要在每个模型上进行交叉验证,然后你会看到哪个模型的平均得分最好,然后你就会说,这个模型是赢家,未来会使用它。

所以在做这个时存在风险,比如说我评估了20个模型,并选择最佳的那个。最好的模型可能比应该的表现得更好。对吧?如果我做了20个模型,有些模型只是因为运气而表现得更好,有些则表现得更差。因此,尽管这是选择最佳模型的正确过程,但我不应该夸耀这个交叉验证得分,因为我并不是只做一个模型。

我做了许多模型。所以我会查看每个模型的交叉验证得分,选择最佳的,然后最后我会回过头来实际使用我的真实测试数据,这些数据仍然在这里。然后我会报告我最喜欢的模型的准确性。

使用 Scikit-learn 进行机器学习,4小时实战视角刷新知识框架,初学者进阶必备!<实战教程系列> - P5:5)sklearn 管道 - ShowMeAI - BV16u41127nr

好吧,在这个视频中,我们将学习 Pscant Learn 管道。我们一直在学习如何使用线性回归作为模型。通常我们的模型在分析数据之前需要对数据进行某种转换。因此,我们的模型最终会形成这些管道,我们会进行一系列转换,最后使用一个估计器,PsyAL 中称之为估计器,以实际进行预测。

因此在这个例子中,我可能会使用一个稍微复杂一点的数据集,在芝加哥,正好位于密歇根湖旁边。他们在不同海滩上都有这些传感器,测量波浪的相关数据,所以我可能会查看这个数据集中的所有测量结果,我可以看到这是俄亥俄海滩,这是63街海滩。

然后我知道关于这些传感器的所有信息,比如水温、浊度等等,而我们要尝试预测的是这个海滩的波浪有多大。我们将使用波周期等因素来进行预测,或者直接看看我们所在的海滩。

所以这里有一些垃圾数据,我已经清理过了。这是所有数据的图表,X轴是波周期,Y轴是波高。

然后我也试着逐个海滩分析。因此在这里我把所有的海滩提取出来,形成一个唯一的排序列表。

根据海滩名称,然后我在这里做什么呢,我是分别绘制每个海滩。

所以我在创建一些子图。我正在循环这些子图,并基本上绘制每个海滩。对,我在 pandas 中进行一些过滤。我把每个海滩绘制在不同的 Ax 区域。所以我看着这个,有一些观察结果,通常在我建模之前,我喜欢做很多散点图,试图从中获得一些直觉。

一个是我确实看到海滩运行是一个重要变量。这些海滩在波浪方面有不同的模式。另一个我看到的是波周期和波高之间的关系并不是线性的。并不是说波周期越大,波高就越大,反之亦然。

我看到的情况是,通常在中间会有一个小隆起,因此如果我们想要得到最大的波浪,我们需要一个位于中间的波周期。

我将在这里构建四个不同的模型来分析这些数据,它们将以不同的方式使用不同的变量,第一个将与我们之前做的非常相似。我将尝试基于波周期预测波高,仅使用简单的线性回归,我们将看看它的表现如何。接下来,我们将学习如何进行多项式回归,这意味着如果我在这里画一条线,这条线就不必再是直的。

最后,我将研究,如果我只知道我在什么海滩上,我能多好地进行预测?然后最终,我将查看海滩和波周期的组合,将波周期视为多项式,看看我能在那儿预测多少。因此,在我的导入中,我有一些我们之前做过的内容,我们首先学习了如何进行线性回归。

我们会将线性回归拟合到训练数据集上,然后在最后评估测试数据集,在此过程中我们可能还会在训练数据中进行交叉验证,所以这些都是旧的内容,而下面的内容是新的。因此,为了能够。

处理这些数据时,我想以多项式方式进行,可能需要使用这个多项式特征的东西进行转换。如果我想处理像“我在什么海滩上”这样的分类数据,那不是数字,而是一个类别,我必须使用这个叫做“一热编码”的东西。如果我想使用这两者,我必须使用这个叫做“列转换器”的东西来将它们组合起来,最终我将有这个管道,在管道的最后,我仍然将进行简单的线性回归。

但我将在数据达到之前对其进行所有这些转换。这也许就是我如何构建这些更复杂模型的方式。让我们从这里开始,我可能会给这四个模型编号,分别为一、二、三、四,按照这里的编号,我可能将模型1设为简单的线性回归。

就像那样。然后我可以说M1,实际上。我可以做不同的事情,我可以说M1进行拟合,我会将其拟合到我的x值和y值上。这是大写,因为它是一个完整的数据框,而这是小写,因为它只是一个单一系列。我想在此之前,我实际上需要将我的训练数据框与测试数据框分开。我说训练测试。拆分Df。也许我会查看这两个的长度。

所以大约25%的数据用于测试,我对此没问题。因此在这里,我需要我的训练数据框,然后我可以放一个特征列表。然后在这里,我可能会再次使用我的训练数据框,我只需使用我的y列。我的y列,也就是我试图预测的,就是波高。

就这样,然后我的特征列表,首先我在这里列出了一个列表,这就是我得到这些奇怪的双括号的原因。我将首先使用波周期,如果我回去查看,我可能需要大写以匹配早先数据框中的内容。

是的,看来这些都是大写的。所以我可以这样做。现在,这个模型已经学习了模式。那么我可以说M1点预测。基于我的测试数据。所以我可以说测试数据框,只给它x值,然后它将为我预测这些y值。

所以让我叫它M2和M1。我得到了所有这些预测。接下来我可以将这些预测进行比较。

我实际上对这个波周期的数据进行比较。我可以把这些数字与下方的数字进行比较,乍一看,我看到它们并不接近。我进行比较的更简单方法是调用评分函数,这样评分函数会自动在此调用预测,然后与我的波高测试数据进行比较,告诉我我解释的方差百分比,而现在我看到结果很糟糕,实际上我没有解释任何东西。如果我总是预测平均波高,那会比我现在的结果要好。当然,这其中有些运气成分,特别是在我如何进行训练测试拆分方面。

所以这里更可靠的衡量方法是进行交叉验证。让我打印一下交叉验证得分。

然后我需要给它三个东西,我得说,嗯,我的模型是什么,我的模型是M1。我的x值和y值是什么,我将在这里进行处理。当我进行交叉验证时,我通常会在训练数据中完成这一切,我只是尝试将测试数据保留到项目的最后进行最终分析,我发现我实际上得到了各种分数,有时运气不好我做得甚至还不如零,大多数情况下我可以说我想将数据分成多少块,记住我会循环遍历每一块或折叠,它都有机会成为测试数据集,所以我可以在这里获得更多数字,也许我只会说分数等于这个,我可以说分数没有意义。

所以这可能是我模型表现的更好指示。我解释了1/10的1%的模式,这并不令人惊讶,对吧,我用的只是波周期,我试图将一条直线拟合到这里,我能看到,嗯,是的。

毫不奇怪,我无法将一条直线拟合到它上面。

好吧,如果我想要,我先复制一下这个,我很快就会删掉。如果我想做更多的列,那将是一件简单的事情。例如,如果我想包括,比如说水温。我可以很容易地将其作为另一列添加,对吧,有多个x值非常简单。所以我可以在这里做到。

然后在这里,也许我会得到一个稍微不同的分数,还是不太好,对吧,试着把这个删掉。 但是添加这些不同的东西非常简单,为什么呢?因为当我这样做并把那个列表放在这里时。我只是展示了一个我想用来进行预测的简单数据框,包含X列。

好吧,这就是我们如何添加东西,实际上让我们考虑一下现在该怎么做,如果我想要有一个多项式拟合。那么我们要做的是,实际上让我把这一切都删掉。😊。

我只是想创建一个演示,这将是我的训练DF的副本,而我的训练DF可能只是一个波周期。

让我看一下这个数据框,但我们要做的事情是,如果我想要有一个二次拟合。我想在这里添加一些列,这些列将包含平方数据。

所以我可以做这样的事情,我可以说演示。我可以说周期。平方。等于demo。波期。那我可以有像这样的一个是立方体。

这是为什么不开心,哦,因为我在一个比较上做一个分配。所以我只是假设那'已经存在。

所以如果我这样做,那么。

而且你知道,我实际上想要复制这个,以免抱怨。我可以看到我会做的事情是,这一列而二平方是2,2立方体是8。3平方体线。33的立方体是27。所以我实际上可以做的是对这些东西进行线性回归,即使第二次线性回归试图像二次或三次回归一样。

因为我只是把这些视为常规列,我可以对这些东西的重要性进行加权,所以我怎么能做到这一点呢,这里我只是手动添加这些东西,如果我想的话,我可以使用这个多项式特征的东西。

所以在这里,我可以说波利。等于多项式特征,我可以说poly点fit transform。我想在这里转换我的数据,这是我以前有的。

所以我要运行这个东西。我看到我得到了所有这些不同的列。如果我想的话,让我在数据中捕捉这些,对,这是其中一个nuy数组。我们最终会学到的,直到我们学到为止。我只是想把它放在熊猫数据框中,这样我就能更好地看到发生了什么。

所以我要说熊猫数据框。

然后我要把我的数据放在那里,然后我想知道这些列的列名是什么,结果这件事也会告诉我。所以我可以说,抱歉Polly会告诉我,所以我可以说多项式处理。

就像那样的特征名称,我必须说的列等于。

现在我可以看到,我有V x然后x平方。我实际上必须告诉我的原始名字才能起作用。

我实际上必须有像这样的一个列表,请原谅我。

所以我能看到,好的,我有一个周期和一个周期的平方,如果我想出现。我可以说像这样的事情,我想要它成为一个四次的对吧,所以我可以有一个周期周期的平方周期的立方周期的四次。

你可以看到它也给我提供了一个零的列,这实际上是一列全是1的值。所以我通常会禁用这个称为偏置列的东西。所以我会说我不想要那个东西。

现在我实际上有一些与我之前手动所做的非常相似的东西,我可以使用我的数据进行这个转换。如果我想的话,我可以对我的训练数据和测试数据都进行这个转换,然后这就是我将要进行所有建模的基础。现在,我认为为了简化,我们想要自动进行转换,然后立即应用线性回归,事实证明,这里的管道(pipelines)也被我导入了。

让这一切变得非常简单,所以我可以在这里创建一个管道。

就像这样,也许我会在这里画出这个,它将成为我的第二个模型。它将是一个管道,我们必须在这里传入一个列表。

列表的工作方式是我会有像转换器(transformers)这样的东西。我可能会有一个或多个这样的东西。然后在最后,我可能会有一个估计器。所以所有这些东西都将以某种方式修改我的数据,可能会添加更多的列,然后在最后我可能实际上会进行我的真实模型,而我的真实模型只是一个线性模型。

就是这样的回归。那么这里,我的转换器是什么呢?我只是想像这样做多项式特征。我认为二次的程度对于我们现在来说是合适的,所以我有这两个东西,关于这个管道的后续细节是,我们必须给每个阶段命名,而它想让我们这样做的方式是将这些东西放在括号内以创建一个元组,然后将名称放在元组的第一部分。

所以我将这个转换器称为poly,因为它是一个多项式转换器,然后这个我不知道,我就称它为LR的缩写。其实这并不重要。

好吧,让我看一下M2,它向我展示了所有这些细节。但是现在M2只是一个模型,它与简单的线性回归非常相似,我可以用同样的方法进行。比如说,如果我回到这里,所有之前做的事情。

我刚刚创建了M1作为我的模型,并且我在它上面做了所有这些事情。我可以在这里做所有那些相同的事情,所以如果我在这里运行,只需说M2 dofi,也许我会为简化起见删除这个,一切都是一样的,我可以看到也许我现在的表现稍微好一点。那么我之前的分数是多少呢?

实际上,这完全是一样的。我本来期望表现得稍微好一点。为什么我表现得没有更好,可能是因为我在评估我的同一个模型。这就是复制粘贴的诅咒。好吧,在此之前让我看看这个。我解释的是0.1%。

嗯,我想接近0.2%的方差,现在我解释的是差不多4.6%,所以我可以看到模型2相比模型1有了巨大的改进,而我真正做的就是我仍在进行线性回归,但我通过给它这些额外的列,提供了更多的信息。我有一列大概是“波周期的平方”,在这里绘制。

直觉是,我在这里拟合一条线。

而且那条线不必再是直线。它可以是一个弯曲的二次曲线。

好的,我们有这两个模型。我们有这个,真的是很糟糕,它几乎告诉我没有什么。有时这个模型,取决于你的训练测试数据集,实际上会让你离真相更远。如果你总是猜测平均值,这个模型实际上表现得相当不错。

好吧,它几乎解释了5%的方差。让我们试试海滩,看看我们能做到什么。这将是我的第三个模型。所以如果我下来这里,我想对这个模型做第一次尝试。

也许我应该在这里加些注释,对吧,这个是。这是波周期。

然后这个在上面是什么,模型1,这只是基于周期的线性分析。

然后我会尝试进行线性分析,海滩就是我现在想做的事情。所以如果我有这个模型,我将把这个模型称为模型3。也许我会再次删除这个,以保持干净。可能会在这里做这个。

我想做的主要事情是,想要将其改为海滩名称,而不是波周期。如果我把它放在这里,我就能看到所有的海滩名称。

好的,我要下去,我想要预测。

波浪高度基于沙滩名称,对吧,就像这样。而且这也是下面的沙滩名称。

这将会给我抱怨,它说无法将俄亥俄街名称沙滩转换为浮点数,这确实没有被转换为浮点数,这很有道理。因此,如果我看一下这个东西。

这是分类数据,事实证明线性回归最终会学习到原因。但它希望一切都是数字的。

所以这是个问题。那么我该如何处理呢,我的意思是,也许学生有时想到的一个主意是,我可以编码这些。我可以说,1代表俄亥俄沙滩,2代表卡拉梅特沙滩,然后3可能代表蒙特罗斯沙滩。

问题是,如果我把这些数字放成这样。嗯,线性回归模型会假设它们是有意义的。这意味着,如果模型学习到关于俄亥俄沙滩的某些东西,然后学习到关于蒙特罗斯沙滩的东西。它错误地认为它了解一些关于卡拉梅特沙滩的信息,我觉得这就像是所有其他沙滩的平均值,当然这不是真的。

我只是有点任意地把这些数字放在这里。没有理由相信这个沙滩有其他两个沙滩的平均特征,所以那样是行不通的,我不能那样编码。

我们要使用的想法叫做独热编码(one hot encoding),独热编码看起来是这样的。独热编码。这将是这样的,我可以说112那个脚。转换。我将把这个数据在这里进行转换。然后我得到了这个奇怪的东西,嗯,无论那是什么,那就像是稀疏矩阵。

我们最终会学到更多,但我可以把它转换成这个东西,这是一个NumPy数组,然后这个东西我实际上可以放进, 我会简化一下。这个东西我实际上可以放入数据框,或者有时称为pandas数据框。

就像这样,然后就像之前那样,我想弄清楚这些列是什么,所以就像多项式变换器一样。我可以说获取特征名称,情况也是一样,对吧,我可以说什么热点获取特征名称。就这样,然后我必须告诉它,我最初是用什么操作的,我想我是在沙滩上。

那为什么这样不高兴呢?所以过去的值的形状是这样的,索引暗示了。类似的东西,我在想那里发生了什么。我认为我的承诺是我需要说像列等于那个。

好的,那么这是如何工作的,第一行是俄亥俄海滩。你看到我实际上为每个不同的海滩都有一列。我们要做的是设置在其中。如果是俄亥俄海滩,我们会设为1。然后其他都是0。如果我再往下几行。

我看到我在第4个位置有蒙特罗斯海滩。

所以那个口味,我会在蒙特罗斯海滩下放一个1,然后在其他地方放0。这就是我们所称的“一热编码”。对吧,所以我想热的地方是我们有1的地方,而其他地方是0。所以如果我有这个。

尽管我一开始有一些分类数据,但我最终可能会得到一些数字的东西。所以如果我整理一下。

让我回到这个。我可能会删除所有这些,因为这有点走入死胡同。对吧, 更接近的灵感是我之前使用的管道。

由于多项式特征,因为就像多项式特征作为变换器一样。所以一热编码也是对的,我要调整一下,现在我们在模型3。这就是一热编码。在这里我可以直接放弃这个,然后我可以说一热编码。就这样。然后我可以在这里做线性回归。然后我可以在这里说。

我可以说。

我想这像是海滩名称,对吧。海滩名称。然后。实际上,我甚至不需要这个。对,我有点这会自动为我进行拟合,并告诉我效果如何。呃。我想知道为什么这在这里抱怨。我有点紧张,不过它可能会很快告诉我。我可以在这里说海滩名称。

然后让我试一下,果然,这是无效的语法。因为我那里没有匹配。

所以这比之前更好,对吧,我想仅仅查看海滩名称就比知道波周期更好。

对,所以我的模型越来越好。对,首先。我一开始只是用线性模型看波周期。然后那太糟糕了,我现在甚至只能解释1%。

我说,嗯,让我们对波浪周期进行多项式拟合,我大约解释了5%,而且差不多是4.5%。然后我只看海滩,得到5.5%。接下来自然而然要做的事情是,让我们对海滩和波浪周期的多项式进行回归,也许我可以做得更好,或许这两者都为我提供了一些信息。

这就是我面临挑战的地方,对吧,因为我想对海滩名称进行独热编码。我还想做多项式特征。

另外一列对吧,我必须有某种方式来组合这些东西,结果发现这就是我在这里导入的最后一部分。创建列转换器将让我将多个转换器组合在一起,每个转换器应用于不同的列,所以我会在这里往下走,可能会复制这个以获取我对模型4的灵感。

我现在有模型4了。我将要做什么?所以这就是必须改变的,对吧?

不知怎么的,我必须要有一些东西。在这里。能够同时捕获两个列,对吧。因为我接下来要做的事情是,我可能会传入海滩名称和波浪周期。为了预测我的波浪高度。那么我该怎么做呢,嗯。我称之为我导入的东西,就是创建列转换器。

当我调用那个东西时,我会有一系列的转换器。我会有转换器一,然后是转换器二,如果我想的话,可以有更多,但在这种情况下我不需要。每一个。

每个转换器将是一个元组,元组将是转换器。然后将是它适用的列的列表,所以这两者都将是这样的,对吧,我有这些元组,或许我只需在这里换行。

所以我们有这两个转换器。然后是一列列名。因此,我认为我想做的事情是对海滩名称进行独热编码,所以我会在这里复制我的独热编码器。那么这个适用于哪个列呢?嗯,它适用于海滩名称列。然后我的另一个是多项式特征,我应该直接从上面复制。

就是这个东西。

多项式特征。这是我的另一个引入者。这仅适用于波周期。好的,所以我现在有这个模型,然后我可以尝试运行它,现在我看到我解释了高达9.5%的方差,这实际上,我想我希望能解释100%。但我可以通过考虑这两个因素看到,我解释的方差比我原本要多得多。

在我结束这个视频之前,我想做的最后一件事是讨论一下这些名称的意义,我可以利用这个。我们可以把管道像字典一样使用。对,所以例如,这意味着我可以把两个都放在这里,这样会给我什么呢?这会给我我创建的这个列转换器。

就在这里。如果我想,我可以窥视一下这个东西的工作方式,以便调试我的模型。我可以说拟合,转换。

然后我可以在这里说,这就是我正在处理的数据,所以我可以看到。

那么我想我实际上需要一些列名在这里。不过我可以看到,这是我正在处理的,让我做一个数据框。

在这里。我看到这里有所有这些列,这些列进行了独热编码。然后我有这些列对其他事物进行了多项式特征处理。所以这是我用来预测波高的数据。因此,即使我最开始只有这两列,在我完成所有这些转换后。

实际上,我在管道的最后给线性回归提供了更多的信息,这就是为什么我们能够在这里做得更好。因此,作为最后一步,我想做的是,我看到Model4显然是最好的,所以我会推荐这个。可能如果我在做四个不同的模型,其中一个恰好表现更好,这就是为什么我保留了我的训练数据,我只在测试数据上使用,并且会将训练数据用于交叉验证。

验证评分。所以在最后,我可能会将这些数据适配到这些内容上。就这样。

那么让我运行一下,然后我可以用它来进行预测。让我记住如何做到这一点,因为这很有用。我可以用这个在我的测试数据框上进行预测。就这样。我可以做出所有这些关于波浪可能性的预测。

或者我可以方便地评估这些预测在我的测试数据框中关于波高的准确性。我现在看到,我能够解释8.4%的方差,所以我确实有一点运气,但我仍然可以说这显然比我的其他模型要好。

使用 Scikit-learn 进行机器学习,4小时实战视角刷新知识框架,初学者进阶必备!<实战教程系列> - P6:6)逻辑回归 - ShowMeAI - BV16u41127nr

嗯,大家好,当我们开始学习机器学习时,首先讨论的问题是回归。在学习了回归之后,我们了解了一些其基础的线性代数,现在我们将转向第二种机器学习问题,那就是分类。所以我想回顾一下机器学习的主要类别。

主要有三个类别,有些人会说是四个。但有强化学习,这与多阶段决策有关。在 320 课程中我们并不涉及这一点。我们真正感兴趣的是监督学习,也就是我们尝试对未来或其他未知事物进行某种预测。

然后还有无监督学习,那里没有我们想要预测的特定事物。但我们在寻找数据中的某种模式或简化。我们一直在学习回归,这是我们想要预测一个数量的地方。所以我们将学习另一种最常见的监督学习,这就是。

那么我们如何预测一个类别呢,这被称为分类。所以简单回顾一下这两者之间的区别。我这里有一个大数据框,所有这些东西都是特征,而在这些特征中,我有混合的数量和类别。在查看我的特征以确定我面临什么样的问题时,这实际上并不相关。我要考虑我处理的问题类型时,我会查看这个标签。

我试图预测的是定量的。或者在这种情况下,是定量的。所以这是一个回归问题。那么我们会怎么做呢?我可能在这里有一些数据,其中我的特征和标签都是已知的。因此我会将一个模型拟合到这些数据上,然后我会用同一个模型进行预测。

或许这个标签是未知的,或者我可能假装它是未知的,以便我可以基本上测试我的模型的有效性。如果这是某种测试数据集。分类问题看起来又非常相似。我可能有一些数量或类别的混合作为我的特征。现在主要的区别是我有一个分类的 y 或标签列。

否则我仍然会将我的特征与标签相匹配,然后尝试对此进行某种预测。所以如我所提到的,我们有这四个大类,而 S KL 针对每一类都有许多不同的算法或实现。

到目前为止我们学到的是线性回归。这就是我们一直用于回归的内容。所以线性回归模型被称为回归模型。非常令人困惑的是,我们现在要学习的叫做逻辑回归,它实际上不是回归,而是一个分类器。名字虽然是线性回归,但它是分类器。所以不要搞混,尽管我们正在学习逻辑回归的线性回归。

我正在教你一个回归模型,以及一个分类模型。所以我将退出这里,前往我的笔记本,试着介绍一下这个。

让我看看。这是我的笔记本。我有一些自以为是。也许我稍后会回到这个话题。现在让我先跳到这里。我有这个数据框,它包含了一些来自一个非常著名的机器学习数据集的数据,叫做IIS数据集。IIS数据集的理念是关于鸢尾花的所有这些测量。

比如说,花瓣的大小是多少,萼片的长度或宽度是多少,我想它就像花瓣之间的叶子。鸢尾花有不同的品种,所以我把品种放在最右边的这一列。现在我看到的整个内容是一个测试数据集,它只有10个样本,这个数量非常少,通常我们会有更大的测试数据。

我只是想保持简单和小巧。在这种情况下,我传入这个随机状态。尽管它有点随机,我的意思是每次运行时,结果都会相同。如果我在这里放一个不同的数字,我会得到不同的随机结果。而且我每次都很小心地使用随机数。所以这样做只是为了让我可以复现。

即便它希望我基本上是随机的。我想要随机,但可复现。所以我已经进行了训练和测试,但我这里只放了10个样本。因此我们将要做的是将不同的模型拟合到训练数据上,然后看看它们在这个非常小的测试数据集上的表现。看这一点时,有三个特征我可能会感兴趣,当我们查看萼片的维度时。

然后我有这个常量列,记住有时当你有这些模型时,你可能会有单独的截距系数,或者你可能只会有系数。而最后一个系数应该乘以这一列,这就是我在这里所做的。我想我会把后面的例子做得简单一些。这些就是我的特征。

我实际上这里有多个y列。我只是想看看我能否预测不同的东西。我能否预测花瓣的宽度?我能否预测特定品种是否为Ctosa?实际上总共有三种品种,所以我能否预测任何一种品种。你可以看到每当我有Ctosa时,它对案例是真实的。

这是 false,对吧,因为它不是 Setosa,所以这就是我将要做的。我将看看是否可以根据这三个不同的特征预测这三个不同的列。我想这实际上是两个特征。因此我们将进行四件事。我将在花瓣宽度上进行回归,这实际上只是复习。

我们将对 Setosa 列进行二元分类,因此我们将尝试预测。是否为真或假,二元意味着两个,这就是为什么这里只有两个东西。要么是真的,要么是假的。我将使用同一个模型不仅告诉我它是否为真或假。我将询问模型它为真的概率和为假的概率。

与其说,嘿,是真的,我想看看是否有人说,哦。这有 95% 的机会是真的。最后,多重二元意味着两个。多类意味着我想更多于两个,所以我们将在这里进行,你可以看到我有三个不同的类别,在这种情况下事情会变得复杂一点。好吧,所以我会在这里,然后我首先要开始一个回归,我要说回归等于线性回归。

这只是之前的复习。我在这里有所有这些选项。而这个 fit intercept 一定要确保我设置为 false,所以 fit intercept 是 false。如果它为真,通常会为我添加这一列,因为我已经手动完成了。所以这样可以让我稍后得到更干净的示例。因此我有这个东西。

我想将其适配一些数据,所以我将使用回归 dot fit。当我拟合时,我的 x 和 y 是什么,然后我可以使用回归 dot predict。也许一些其他的 x,然后那将返回一个 y,对吧,所以我会有这样的东西。也许我会说 y,y 2 和 x2。在我的特定示例中。

我有我的训练和测试数据,所以我现在试图预测什么。我试图预测花瓣湿度。对吧,我将复制这个列名。当我进行拟合时,我会从我的训练数据中提取它。所以我将把它放在这里,并用引号包裹。这就是我的 y。然后我的 x,嗯,它将是。

这将再次是我的训练数据,然后我需要一些列。我想应该有一个列的列表。因此我实际上已经在这里创建了,我有这些 x 列。这些是花萼长度,花萼宽度,以及常量。因此这将是我放在这里的列表。我基本上会得到这三列。

让我这样做。如果有人在可视化上有困难。我只是在从我更大的数据框中获取这三列。而当我这样做时。我是在处理一个包含花瓣宽度列的pandas系列,所以我会尝试根据这三件事来预测。好的,所以我正在这样做,现在我想在这里进行一些预测,这将是一样的。

我将基本上采用相同的格式,只是现在我将使用我的测试数据。也许不捕获那个变量,而只是看看现在的样子。这些是我的预测。或者我应该在这个花瓣宽度列中绘制的内容。所以如果我想的话,我甚至可以将它们添加到我的训练数据框,或者我的测试数据框中。

我可以说我的预测等于那个。然后我可以查看我的测试数据框。它抱怨的事情是,我试图将一些值添加到另一个数据集的切片中。所以当我在这里做的时候,这些都是我大数据框中行的切片。如果我在尝试向其中之一添加列时感到困惑。

这不是原始成功的简单修复。我可以说像test等于test的复制,然后test将完全与我的数据框脱离,我可以向它添加列。没有抱怨。所以让我运行这个。现在我可以看到这里有这个预测列。我可以看看这些预测如何,如果我预测1。3,实际上是1。2。

我预测1。59,实际上是1。4。哦。所以我有时能看到预测不错,有时则不太好,反正这就是回归。哦,让我继续这个部分。让我继续尝试下一个部分。我想做一个二元分类。在这一列上。所以代码实际上会和之前非常相似。对吧,我在这里写下。

我会改变一些东西,首先。我想进行逻辑回归。记住,它是一个分类器。尽管名字如此,所以我可以处理像这样的类别。然后对于我的目标,我将只使用Ctosa列,它是Setosa品种还是不是?所以我这样做。我也可能会重新命名这个,以便记住它是一个分类器,我将把它称为CLS。

然后在这里我也需要CLS。我这样做。现在我可以在这里看到我的预测,我可以看到。这一列告诉我花是什么,另一列告诉我模型预测的结果。实际上,我想我们在这里做得相当不错,每一个预测都是完全准确的,这很好。好的,让我回到这里,转到我们想要做的事情。

所以我们使用线性回归进行了回归,使用逻辑回归进行了二元分类。然后基本上说,好吧,我现在是否有一个真或假,我实际上想知道获取一个真实的概率是多少。

所以我可以像这样做,我可以说。哦。这有额外的功能,非常类似于产品。但它会像这样,它会是predict。概率A,然后我们得到一个所有概率的非均匀数组。因此,我的解释是,这里有94%的概率是假的,5%的概率是真的。这就是为什么它最终将其减少到假的原因。97。

9%的假概率和仅有2%的真概率。这就是你知道它们是假的原因。让我看看这个。这一项有93%的概率是真的,这就是为什么我有真的,真的在那里。如果我愿意,我甚至可以试着提取最后一列。我可以说类似于,我想要某种切片,就像真正的切片。

然后,在做这个列切片时,我想要所有行。我想要第二列。这些只是它为真的概率。如果我想,我可以说像test.T。的概率等于这个,然后我可以再看看。在每种情况下,我可以根据这些维度看到。

模型认为它有多大概率是Setoa,有时我对此不太确定。我可以识别出模型不太自信的案例,然后识别出那些明显的案例。因此,我不需要为此创建一个新模型。我只需要调用预测概率A,而不是predict。好的。

让我继续,现在我们要做最后这一部分。如何对多类别进行分类?而多样性稍微复杂一点,因为我有三个不同的类别,我想这在实际的数学运算中会更复杂,但在运行代码方面并没有更复杂。

所以如果我实际上在这里复制这个。然后我往下走。我只叫它salt multi,这样我就可以记住我的三个不同模型。然后我说multi。然后,我还需要更改什么,我这次在做一个不同的列。所以我可以这样做,现在它会告诉我我的预测是什么。

我会说我的预测仍然是假的和真的。这是从这里得出的。所以这是返回真和假,因为我所有的新模型被称为multi,而我使用的是旧模型。我将这样做,现在我可以看到,我们正在写这个。我可以看到它为这一项预测了什么,那一项预测得不错,而这里确实出错了,模型会犯错,这并不令人惊讶,因为我猜这只是数据集中唯一的错误。

当然,这个概率列是之前的,所以我想忽略它。我继续运行这个概率或这个预测列,针对我的四个示例。好的,我们看到了一些不同的东西,对吧,我们看到了一次回归。然后我们看到了这两种不同的分类。

让我们尝试深入了解这些示例背后的线性代数。所以在我这里记住我有R EG,那是我之前的模型。在这里,我有系数。我还有。Hetercepted。而截距是0,因为之前发生了什么。我将截距设置为false传入了所有这些。如果我没有这样做。

那么会发生什么呢,我的coi fishers我只会在这里有这两列或这两个数字,对应于这两列的权重。然后不是这个基本上是我的interap。那将转到这里的单独变量。所以基本上这些是我在真实列上的权重。

然后这是我的1列的截距或权重,好的,所以我有那个东西。我想做的是。我会重塑它。这样可以。我希望它是需要的行数和一列,所以它将是垂直的。另一个我想做的是获取我的x数据,这将是我的测试数据框。

然后它将是这些x列。也许我会说,神值。所以我会看看这个。所以我把这里的前三列提取出来。好的。我有三列在这里,然后这里的列基本上有三个条目。如果我想,我可以把它与下面这些做点积。

这正是线性回归进行预测的方式。所以如果我来到这里,我可以说找到回归预测。如果我这里有一些x值,我可以返回x点。哦,基本上这些东西,对吧,所以我可以说。也许我会把它称为向量1,或者称它为tro efficient。你知道我实际上要做什么。

为什么不直接把它放在这里呢,我不需要为此单独创建一个变量。所以我会看看这个回归预测。我会在我的X数据上做这个,我得到了这些预测1.32,1.59。让我实际上早些时候在这里画一下。然后,我看到了这个。

这些正是我之前的线性回归做出的预测,1.32和1.59。所以这个常规回归确实像这样进行预测。它所做的只是这里的数学,对吧。好的。让我们试着看看逻辑回归在做什么。所以它实际上会非常相似。

所以前面我在做什么,我在说CLS。我是分类器还是预测。我可以这样做,这些是我从分类器中得到的值。这个数学在做什么,实际上几乎与这个相同。让我复制这个,实际上我只是稍微调整一下。我将有我的CLS。Pect。然后我说CLS。Proect。す。

还有我的X数据。还有。区别在于,对吧,我现在有这些所有的数字,实际上,抱歉。我想要我其他那个的系数。所以我的CS系数。在我跳入这个之前,我也应该看看那些。我可能有不同的玩具鱼,因为我叫它们,为什么所有的数字都一样。这没有意义。

我得到了所有这些数字。记住,我们的目标是预测真假。方法是我们为每个条目获取一个分数。如果分数大于0,我们预测为真,否则预测为假。所以这里的形状有点不同。也许我可以重新调整形状,这样更明显。

不过,除此之外,这就是它的功能。上面的所有数字都是相同的。下面也是。我想这也许就是他们为什么称之为逻辑回归。尽管它是一个分类器,但数学上与我们之前的线性回归基本相同。因为我们只是做了一个点积。我们之前做的线性回归和现在的逻辑回归之间的唯一区别在于。

我们只是检查某个数字是否大于0。好吧,我们来做下一部分。所以下一部分是,我有点回顾之前的例子。在我们进行预测之后,试图说我们是否预测为假,我们想获得这个概率。这个概率是什么呢?

如果我回到这里,你会发现,在我添加这个大于号之前,我有一个数字课程。我打算回到那个地方。现在我要预测概率A。我只需回到这里。并且。通过概率进行预测。我会这样做。我看到我有所有这些分数。当然,这些并不是概率,因为概率应该在0到1之间。

但事实证明,有一个非常简单的函数可以将其转换为概率,而这个函数叫做sigmoid函数。我在笔记本的开头提到过它,但我还没有谈论过。我只是简要提及一下,当我讨论sigmoid函数以及我们将如何使用它时。

我们不需要深入数学的细节。我不在乎你是否记得,我当然不记得。重要的是输入的x值可以大也可以小。但是如果我得到非常负的数字,我实际上接近于0;如果我得到非常大的数字,我实际上接近于1。所以好的一点是,我可以输入任何种数值分数,它会返回一个在0和1之间的结果。

基本上,我可以将某种分数转换为至少看起来像概率的东西。所以我要调用这个smoid函数。在这里对吗?因此,代替拥有所有这些数字,比如负2.76或2.57。

我只是想把所有这些点汇总。然后这些数字都会在0和1之间,事实证明,这就是我们实际上如何计算概率的方式。因此,就像之前我试图说我将预测X的类别一样,在这里也是这样。

也许我会在这里做这个。在这里上方,Rece 预测了概率。让我看看这里发生了什么,这些数字。就是它为真的概率。这一列就是我写的代码中为真的概率。我并没有计算为假的概率,因为那样太无聊了,对吧,我需要加起来等于一。所以为什么我要做两个,但你可以看到这些数字是完全相同的。

这就是概率,非常简单,我仍然只是在做那个核心的点积,然后我对结果中的每个数字都进行了 sigmoid 处理。到目前为止,我们已经看到了所有这些情况。这个点积是非常重要的,我正在对一个矩阵进行点积。与一个垂直向量。让我上去谈谈我们在多类模型中做的第四个模型。

这里的多类模型,我试图预测品种,品种可以是这三种中的任何一种,结果是我的品种系数将会复杂得多。如果我查看。这是我的二元模型。如果我查看我的二元模型的系数,我只有这三个数字。

但是如果我查看我的多类回归的系数,我实际上并没有一个向量,而是一个包含所有这些数字的完整矩阵。所以,让我现在使用这些。我们将要做的是,我想就像它们被设置的那样。我们必须对它们进行转置。我们将这样做。让我抓一下这个。

这将再次非常相似。但是。与仅仅将 xs 乘以一个垂直向量不同。我将把它乘以这里的整个东西。我将它乘以那个整体。然后我得到这个结果。有些人可能会迅速称之为。抱歉。目前这是乘法。好吧,我预测。我可能会称之为。Mie。预测 Xs。

而且在这个时候我实际上不再进行 soid。我很抱歉。那么我该如何解释这个呢?

基本上,这些列中的每一个都是对这三种品种之一的响应。如果我有更多的品种,我在这里会有更多的列,但我在这个系数矩阵中仍然会有三行。所以你可能想象,我不知道哪个是哪个,但你可以想象这是 atosa 品种。

结果是,当我拿到我的大数据矩阵,并将其乘以这里的所有列时。实际上,它是逐列操作。它取这列。是我的数据矩阵,并用它来产生这个输出列。所以这些可能是它看起来像 sattosa 的分数。

那么,也许我们说这些是versicolor的系数,那么这些将是。versicolor的分数,如果这些是virginica的系数,那么这些可能是virginica的分数。因此,我可以做到的是,这些行中的每一行对应于我原始数据中的一行。这意味着这一行对应于一朵特定的花,一种特定的鸢尾花。

因此,对于那一特定的鸢尾花,我有一个分数,它有多少像sattosa。它有多少像versicolor,它有多少像virginica,因此我可以尝试把这些分数拿出来,看看哪个分数最高,在这种情况下是中间的那个,所以与中间列对应的鸢尾花类型就是我想要预测的。

所以我可以检查这个,我可以说。如果我回到这个,我可以说。我认为这是类。我可以看到,好吧,我想这应该是Setosa,而第一个应该是。相反的颜色。并且我可以实际做到这一点的方法之一。结果发现确实有一个弧。哦。困难的人们。

让我尝试在这里做这个,并确保我做对了。我是对的,好吧。那么,我想Agon max这将做的是,它将给我哪个索引。基本上是在给我最大的值,但我必须指定如何访问,0是纵向的,1是横向的,我说1。这告诉我什么,我将要重塑。它也更明显一些。

真实负1,1。这意味着。在索引1,我在第一个位置有最大的数字。第二个位置,最大的数字在这里。是真的吗?是的,是真的。这个数字比其他的都大。让我检查第四个。那意味着a0位置更大,所以这是更大。并且这些,所以这绝对是真的。

所以,如果我有这样的一个对象,酷的地方在于。我可以把它放进另一个这样的数组里。我可以把这些类放进去,并且我可以把这个数字数组放进这里。然后我基本上会得到,所有这些类别是什么。所以我会把这一切都拿走。并且。我会把它放回这里。并且。

我可以看到,然后我将为我所有的花朵得到预测。对,我可以看到。对于每一个,它的预测结果是什么,这将与我之前的预测相对应。对,所以再次强调。点积是核心。但现在,因为我有不同的可能类别。我必须有系数来为每个类别获得分数。这就是原因。

我们必须用完整矩阵乘以数据,而不是一个子矩阵。这是我们在这门课程中看到的第一个这样的真实应用案例。