提交 2e53d128 编写于 作者: W wizardforcel

2021-03-10 16:17:49

上级 4c867477
......@@ -99,7 +99,7 @@
![](img/54ec0bbe-fb6c-447a-a671-b7ed06498363.png)
正如您在此处看到的那样,笔记本的结构方式使我可以在实际代码本身中散布有关您在此处看到的内容的小注释和评论,并且可以在 Web 浏览器中实际运行此代码! 因此,对于我来说,这是一种非常方便的格式,可以为您提供一些参考,您可以在以后的生活中使用它来提醒自己,我们将要讨论这些算法的工作原理,并实际对其进行实验和玩耍 和他们自己在一起
正如您在此处看到的那样,笔记本的结构方式使我可以在实际代码本身中散布有关您在此处看到的内容的小注释和评论,并且可以在 Web 浏览器中实际运行此代码! 因此,对于我来说,这是一种非常方便的格式,可以为您提供一些参考,您可以在以后的生活中使用它来提醒自己,我们将要讨论这些算法的工作原理,并实际对其进行实验和自己玩转它们
IPython/Jupyter笔记本文件的工作方式是,它们实际上是从您的浏览器内部运行的,就像网页一样,但是它们受到您安装的 Python 引擎的支持。 因此,您应该看到的屏幕类似于上一个屏幕快照中显示的屏幕。
......@@ -274,7 +274,7 @@ print (len(x))
```
您可以说,例如,调用列表`x`并将其分配给数字`1``6`,这些方括号表示我们正在使用 Python 列表,而这些是我可以实际使用的不可变对象 根据需要添加和重新安排内容。 有一个用于确定列表长度的内置函数,称为`len`,如果我键入`len(x)`,那我会得到数字`6`,因为列表中有 6 个数字。
您可以说,例如,调用列表`x`并将其分配给数字`1``6`,这些方括号表示我们正在使用 Python 列表,而这些是不可变对象,我可以根据需要实际添加和重新安排内容。 有一个用于确定列表长度的内置函数,称为`len`,如果我键入`len(x)`,那我会得到数字`6`,因为列表中有 6 个数字。
只是要确保,然后再次理解这实际上是在这里运行真实代码,让我们在其中添加另一个数字,例如`4545`。 如果运行此命令,则会得到`7`,因为该列表中现在有 7 个数字:
......@@ -526,7 +526,7 @@ listOfTuples
```
我们可以创建一个包含两个元组的新列表。 因此,在前面的示例中,我们有`(1, 2, 3)``x`元组和`(4, 5, 6)``y`元组; 然后我们列出这两个元组的列表,然后返回此结构,其中我们用方括号表示一个列表,该列表包含用括号表示的两个元组,以及在进行数据科学或其他任何操作时通常使用的元组 数据的管理或处理实际上是使用它为读入的输入数据分配变量。在下面的示例中,我想带您逐步了解一下发生的情况:
我们可以创建一个包含两个元组的新列表。 因此,在前面的示例中,我们有`(1, 2, 3)``x`元组和`(4, 5, 6)``y`元组; 然后我们列出这两个元组的列表,然后返回此结构,其中我们用方括号表示一个列表,该列表包含用括号表示的两个元组。在进行数据科学,或进行任何类型的数据管理或处理时,通常使用元组来为读入的输入数据分配变量。在下面的示例中,我想带您逐步了解一下发生的情况:
```py
(age, income) = "32,120000".split(',')
......@@ -805,7 +805,7 @@ while (x < 10):
现在这应该不太困难。 本笔记本中有一些可以做所有这些事情的例子。 您要做的就是将其放在一起并使其运行。 因此,重点不是给您带来困难的东西。 我只是希望您在编写自己的 Python 代码并实际运行并看到它可以运行时获得一定的信心,所以请这样做。 我绝对鼓励您在这里进行互动。 因此,祝您好运,欢迎使用 Python。
所以,那显然是您的 Python 崩溃过程,那里只是一些非常基本的东西。 当我们在本书中遍历越来越多的示例时,由于您有更多的示例要看,这将变得越来越有意义,但是如果此时您确实感到有些害怕,那么也许您也有点 这是编程或脚本编写的新手,在继续之前进行 Python 修订可能是一个好主意,但是如果您对到目前为止所看到的一切感到满意,请继续进行下去,我们将继续。
所以,那显然是您的 Python 崩溃过程,那里只是一些非常基本的东西。 当我们在本书中遍历越来越多的示例时,由于您有更多的示例要看,这将变得越来越有意义,但是如果此时您确实感到有些害怕,那么也许您是编程或脚本编写的新手,在继续之前进行 Python 修订可能是一个好主意,但是如果您对到目前为止所看到的一切感到满意,请继续进行下去,我们将继续。
# 运行 Python 脚本
......@@ -851,7 +851,7 @@ while (x < 10):
因此,当您在底部的交互式提示中单击并一次执行一件事情时,就可以看到某种化妆脚本。 在此示例中,`stuff`是我们创建的变量,一个保留在内存中的列表,有点像该环境中其他语言中的全局变量。
现在,如果我确实想重置此环境,如果我想摆脱`stuff`并重新开始,那么执行此操作的方式是转到此处的“运行”菜单,然后可以说“重新启动内核”,这将会生效 带着空白的你过去了
现在,如果我确实想重置此环境,如果我想摆脱`stuff`并重新开始,那么执行此操作的方式是转到此处的“运行”菜单,然后可以说“重新启动内核”,这将会带给你一个空白面板
![](img/8204b752-159f-4b65-b3e0-6c99f7f8c49a.png)
......
......@@ -378,7 +378,7 @@ Out[11]: ModeResult(mode=array([29]), count=array([14]))
3. 现在,下一步是找到每个数据点均值的差异。 我知道平均值是 4.4。 所以对于我的第一个数据点,我有 1,所以`1 - 4.4 = -3.4`,下一个数据点是 4,所以`4 - 4.4 = -0.4`, 等等等等。 好的,因此我得到了这些正数和负数,它们代表每个数据点(`-3.4, -0.4, 0.6, -0.4, 3.6`)与平均值的方差。
4. 现在,我需要一个代表整个数据集方差的数字。 因此,我接下来要做的就是找到这些差异的平方。 我只是要仔细研究均值中的每一个原始差异,然后将它们平方。 这有两个不同的原因:
让我们看一下发生了什么,所以`(-3.4)²`是正 11.56,而`(-0.4)²`最终是一个小得多的数字,即 0.16,因为这要大得多 接近 4.4 的平均值。 同样,`0.6²`接近平均值,仅为 0.36。 但是当我们达到正离群值时,`3.6²`最终为 12.96。 这样就得出:`11.56, 0.16, 0.36, 0.16, 12.96`
让我们看一下发生了什么,所以`(-3.4)²`是正 11.56,而`(-0.4)²`最终是一个小得多的数字,即 0.16,因为这接近 4.4 的平均值。 同样,`0.6²`接近平均值,仅为 0.36。 但是当我们达到正离群值时,`3.6²`最终为 12.96。 这样就得出:`11.56, 0.16, 0.36, 0.16, 12.96`
为了找到实际的方差值,我们只取所有那些平方差的平均值。 因此,我们将所有这些平方的方差相加,将总和除以 5(即我们拥有的值的数量),最后得出方差 5.04。
......@@ -623,7 +623,7 @@ plt.show()
当您谈论指数下降时,您会期望看到一条曲线,很有可能会发生某件事,接近零,但是随着距离的增加,曲线会很快消失。 自然界中有很多事物以这种方式表现。
要在 Python 中做到这一点,就像我们在`scipy.stats`中有针对`norm.pdf`的函数一样,我们也有`expon.pdf`或指数概率分布函数在 Python 中做到这一点,我们可以做与我们相同的语法 此处具有指数分布的正态分布,如以下代码块所示:
要在 Python 中做到这一点,就像我们在`scipy.stats`中有针对`norm.pdf`的函数一样,我们也有`expon.pdf`或指数概率分布函数在 Python 中做到这一点,我们可以对指数分布使用为正态分布所做的相同语法,如以下代码块所示:
```py
from scipy.stats import expon
......
......@@ -259,7 +259,7 @@ plt.ylabel('my overall health')
![](img/72e7f5b8-3152-47a4-abf1-c47f038380f8.png)
我们实际上是如何将这张图放在一起的,这里有一些有趣的 Python。 我们首先制作一条数据线,该数据线不过是 100 个数据点上的值 1。 然后,我们使用旧的 Python 列表切片运算符获取值 70 之后的所有内容,然后从该 30 项子列表中减去 0 到 30 的范围。因此具有线性减去较大值的效果 当您越过 70 时,这条线便朝着点 70 下方下降到 0。
我们实际上是如何将这张图放在一起的,这里有一些有趣的 Python。 我们首先制作一条数据线,该数据线不过是 100 个数据点上的值 1。 然后,我们使用旧的 Python 列表切片运算符获取值 70 之后的所有内容,然后从该 30 项子列表中减去 0 到 30 的范围。因此当您越过 70 时,它具有线性减去较大值的效果,导致这条线从点 70 下方下降到 0。
因此,这只是其中一些 Python 列表切片操作的小示例,以及对`arange`函数的一点创造性使用,以修改您的数据。
......@@ -445,9 +445,9 @@ def covariance(x, y):
```
同样,协方差被定义为点积,它是两个向量之间的夹角的量度,对于给定的一组数据,该向量与均值之间的偏差,对于一个给定的数据,与另一种给定的数据集合之间,均值的偏差 相同数据的数据点。 然后在这种情况下将其除以`n-1`,因为实际上是在处理样本。
同样,协方差被定义为点积,它是两个向量之间的夹角的量度。 一个是给定数据集与平均值的偏差,另一个是相同数据的数据点与另一给定数据集的平均值的偏差。 然后在这种情况下将其除以`n-1`,因为实际上是在处理样本。
因此`de_mean()`,我们与均值函数的偏差是获取一组数据`x`,实际上是一个列表,并且它正在计算该组数据的均值。 `return`行包含一些 Python 技巧。 语法是说,我将创建一个新列表,并遍历`x`中的每个元素,将其称为`xi`,然后为此返回`xi`均值`xmean`之间的差 整个数据集。 该函数返回一个新的数据列表,该列表表示每个数据点与平均值的偏差。
因此`de_mean()`,我们与均值函数的偏差是获取一组数据`x`,实际上是一个列表,并且它正在计算该组数据的均值。 `return`行包含一些 Python 技巧。 语法是说,我将创建一个新列表,并遍历`x`中的每个元素,将其称为`xi`,然后为此返回`xi`整个数据集的均值`xmean`之间的差。 该函数返回一个新的数据列表,该列表表示每个数据点与平均值的偏差。
我的`covariance()`函数将对输入的两组数据执行此操作,除以数据点的数量减去 1。还记得上一章中关于样本数与总体数的事情吗? 好吧,这正在这里发挥作用。 然后,我们可以使用这些功能,看看会发生什么。
......@@ -572,7 +572,7 @@ correlation (pageSpeeds, purchaseAmount)
![](img/e4de6cdd-edda-437a-8e02-a49b596bf779.png)
因此,假设您通过了第一个测试,则通过第二个测试的概率等于通过两个测试的概率`P(A, B)`(我知道您中有 60% 的人通过了两个测试,而与每个测试都无关 其他)除以通过第一项测试的概率`P(A)`,即 80%。 算出 60% 的人通过了两个测试,80% 的人通过了第一次测试,因此,如果您通过了第一个测试,则通过第二次测试的概率为 75%。
因此,假设您通过了第一个测试,则通过第二个测试的概率等于通过两个测试的概率`P(A, B)`(我知道您中有 60% 的人通过了两个测试,而每个测试都与其他无关)除以通过第一项测试的概率`P(A)`,即 80%。 算出 60% 的人通过了两个测试,80% 的人通过了第一次测试,因此,如果您通过了第一个测试,则通过第二次测试的概率为 75%。
好吧,围绕这个概念有点困难。 我花了一些时间才真正地内化了某些事物给定某种事物的概率与两件事相互独立发生的概率之间的差异。 在继续之前,请确保内部化此示例及其实际工作方式。
......@@ -603,7 +603,7 @@ for _ in range(100000):
我要做的是容纳 100,000 个虚拟人员,并将他们随机分配到年龄段。 他们可以是 20 多岁,30 多岁,40 多岁,50 多岁,60 多岁或 70 多岁。 我还将为他们分配他们在一段时间内购买的一些商品,并根据他们的年龄来加权购买商品的可能性。
该代码最终要做的是使用 NumPy 的`random.choice()`函数将每个人随机分配到一个年龄组。 然后,我将分配购买商品的可能性,并对其进行加权,以使年轻人购买商品的可能性低于老年人。 我要遍历 100,000 个人,然后将所有内容加起来,最后得到的是两个 Python 词典:一个给我每个年龄段的总人数,另一个给我总人数 每个年龄段内购买的商品。 我还将跟踪总体上购买的商品总数。 让我们继续运行该代码。
该代码最终要做的是使用 NumPy 的`random.choice()`函数将每个人随机分配到一个年龄组。 然后,我将分配购买商品的可能性,并对其进行加权,以使年轻人购买商品的可能性低于老年人。 我要遍历 100,000 个人,然后将所有内容加起来,最后得到的是两个 Python 词典:一个给我每个年龄段的总人数,另一个给我每个年龄段内购买的商品数。 我还将跟踪总体上购买的商品总数。 让我们继续运行该代码。
如果您想花一点时间研究一下该代码,并弄清楚它是如何工作的,则可以使用 IPython 笔记本。 您也可以稍后再讨论。 让我们看看最终的结果。
......@@ -695,9 +695,9 @@ P(30's, Purchase) 0.04974
现在,由于数据的随机分布,它不可能完全相同。 记住,我们在这里谈论的是概率,但是它们在同一范围内,所以有意义的是,大约 5% 对 7%,足够接近。
现在,这又不同于`P(E | F)`,因此既在`30s`中又购买东西的概率不同于在`30s`中购买东西的概率 ]
现在,这又不同于`P(E | F)`,因此既在`30s`中又购买东西的概率不同于在`30s`中购买东西的概率。
现在,让我们在这里进行一些理智检查。 我们可以检查前面在“条件概率”部分中看到的等式,该方程式表示,假设您在`30s`,则购买某物的概率与在`30s`中并在某物上购买某物的概率相同 买东西的可能性。 也就是说,我们检查`P(E | F) = P(E, F) / P(F)`
现在,让我们在这里进行一些理智检查。 我们可以检查前面在“条件概率”部分中看到的等式,该方程式表示,假设您在`30s`的购买某物的概率,等于在`30s`中并购买某物的概率,除以购买某物的概率。 也就是说,我们检查`P(E | F) = P(E, F) / P(F)`
```py
(float(purchases[30]) / 100000.0) / PF
......
......@@ -170,7 +170,7 @@ plt.show()
因此,始终仅从可视化数据开始,然后考虑曲线真正需要多么复杂。 现在,您可以使用 R 平方来衡量您的拟合度,但是请记住,这只是在测量该曲线与您的训练数据的拟合度,即您用来实际基于其进行预测的数据。 它不能衡量您准确预测未来的能力。
稍后,我们将讨论称为**训练/测试**的一些防止过度拟合的技术,但是现在您只需要仔细研究一下,以确保您不会过度拟合并在 一个比您需要的功能。 当我们探索一个示例时,这将更有意义,所以让我们继续。
稍后,我们将讨论称为**训练/测试**的一些防止过度拟合的技术,但是现在您只需要仔细研究一下,以确保您不会过度拟合并得到一个比您需要的阶数更高的函数。 当我们探索一个示例时,这将更有意义,所以让我们继续。
# 使用 NumPy 实现多项式回归
......@@ -196,7 +196,7 @@ scatter(pageSpeeds, purchaseAmount)
您会发现这并不是真正的线性关系。 我们可以尝试在其上拟合一条线,这样对于很多数据来说都可以,可能在图形的右侧向下,而在左侧则不然。 我们确实有更多的指数曲线。
现在,恰好 NumPy 具有`polyfit()`函数,该函数可让您将所需的任意多项式拟合到该数据。 因此,例如,我们可以说`x`-轴是我们拥有的页面速度(`pageSpeeds`)的数组,而我们的`y`-轴是我们的页面速度的数组 购买金额(`purchaseAmount`。 然后,我们可以仅调用`np.polyfit(x, y, 4)`,这意味着我们希望对该数据进行四次多项式拟合。
现在,恰好 NumPy 具有`polyfit()`函数,该函数可让您将所需的任意多项式拟合到该数据。 因此,例如,我们可以说`x`-轴是我们拥有的页面速度(`pageSpeeds`)的数组,而我们的`y`-轴是我们的购买金额(`purchaseAmount`)的数组。 然后,我们可以仅调用`np.polyfit(x, y, 4)`,这意味着我们希望对该数据进行四次多项式拟合。
```py
x = np.array(pageSpeeds)
......@@ -247,7 +247,7 @@ print r2
# 多项式回归的活动
我建议您开始研究这些东西。 尝试多项式的多项式。 返回到我们运行`polyfit()`函数的位置,然后尝试除 4 之外的其他值。您可以使用 1,然后返回线性回归,也可以尝试使用诸如 8 之类的非常高的数值,也许您可​​以 我会开始看到过度拟合。 所以看看有什么效果。 您将要更改它。 例如,让我们转到三次多项式。
我建议您开始研究这些东西。 尝试多项式的不同阶数。 返回到我们运行`polyfit()`函数的位置,然后尝试除 4 之外的其他值。您可以使用 1,然后返回线性回归,也可以尝试使用诸如 8 之类的非常高的数值,也许您会开始看到过度拟合。 所以看看有什么效果。 您将要更改它。 例如,让我们转到三次多项式。
```py
x = np.array(pageSpeeds)
......
......@@ -75,7 +75,7 @@
现在有一个解决这个问题的方法,称为 K 折交叉验证,我们将在本书的后面看到一个示例,但是基本概念是您需要多次训练/测试。 因此,您实际上将数据不仅分为一个训练集和一个测试集,还分为多个随机分配的段,即`k`个段。 那就是 k 的来源。 然后将其中一个细分保留为测试数据,然后开始在其余细分上训练模型,并根据测试数据集衡量其性能。 然后,您可以从这些训练集模型的每个结果中获得平均表现,并获得其 R 平方平均得分。
这样一来,您实际上是在对数据的不同部分进行训练,并使用相同的测试集对其进行测量,如果您的模型过度适合您的训练数据的特定部分,则其他模型会将其平均化 有助于 K 折交叉验证的产品
这样一来,您实际上是在对数据的不同部分进行训练,并使用相同的测试集对其进行测量,如果您的模型过度适合您的训练数据的特定部分,则其他模型会将其平均化,这归功于 K 折交叉验证
这是 K 折交叉验证步骤:
......@@ -239,7 +239,7 @@ R 平方值原来是`0.6`,这并不奇怪,因为我们在训练数据上对
我们如何在机器学习中使用它? 实际上,我可以为此构建垃圾邮件分类器:一种算法可以分析一组已知的垃圾邮件电子邮件和一组已知的非垃圾邮件电子邮件,并训练模型以实际预测新电子邮件是垃圾邮件还是垃圾邮件。 不是。 这是在现实世界中的实际垃圾邮件分类器中使用的一项实际技术。
例如,假设电子邮件中包含“免费”一词,那么我们就可以判断出该电子邮件为垃圾邮件的可能性。 如果人们向您承诺免费提供东西,那可能是垃圾邮件! 因此,让我们解决这个问题。 假设您的电子邮件中包含“免费”一词,则该电子邮件为垃圾邮件的概率等于该邮件为垃圾邮件的总概率乘以假定为“垃圾”的包含“免费”一词的概率大于该概率 总体而言是免费的
例如,假设电子邮件中包含“免费”一词,那么我们就可以判断出该电子邮件为垃圾邮件的可能性。 如果人们向您承诺免费提供东西,那可能是垃圾邮件! 因此,让我们解决这个问题。 假设您的电子邮件中包含“免费”一词,则该电子邮件为垃圾邮件的概率,等于一个邮件为垃圾邮件的总概率,乘以垃圾邮件包含“免费”一词的概率,除以一个邮件包含“免费”一词的总概率
![](img/6992cb5a-12dd-4397-b787-571b1d13777c.jpg)
......@@ -565,7 +565,7 @@ plt.show()
在决策树流程图的每个步骤中,我们都可以找到可以对数据进行分区的属性,从而使下一步的数据熵最小。 因此,我们得出了一组分类结果:在这种情况下,雇用或不雇用,我们希望在该步骤中选择属性决策,以最大程度地减少下一步的熵。
在每个步骤中,我们都希望做出所有剩余的选择,从而导致尽可能多的不聘用或尽可能多的聘用决策。 我们希望使数据越来越统一,以便按照流程图进行操作,最终最终得到一组候选人,这些候选人要么全部录用,要么全部录用,因此我们可以根据 决策树。 因此,我们只是沿着树走下去,通过选择正确的属性来决定每一步的熵,然后继续进行直到耗尽。
在每个步骤中,我们都希望做出所有剩余的选择,从而导致尽可能多的不聘用或尽可能多的聘用决策。 我们希望使数据越来越统一,以便按照流程图进行操作,最终最终得到一组候选人,这些候选人要么全部录用,要么全部录用,因此我们可以根据决策树分类是/否决策。 因此,我们只是沿着树走下去,通过选择正确的属性来决定每一步的熵,然后继续进行直到耗尽。
这个算法有个花哨的名字。 它称为 **ID3****迭代二分器 3**)。 这就是所谓的贪婪算法。 因此,当它沿着树下来时,它只选择了将此时的熵最小化的属性。 现在,这实际上可能不会产生使您必须做出的选择数量最少的最佳树,但是在给定您提供的数据的情况下,它会导致树起作用。
......@@ -689,7 +689,7 @@ Image(graph.create_png())
现在,让我告诉您如何阅读它。 在每个阶段,我们都有一个决定。 记住我们大多数的数据是`0``1`。 因此,第一个决策点变为:是否就业? 小于`0.5`? 这意味着如果我们的就业值为 0,则为否,我们将向左移动;如果就业为 1,则为是,我们将向右移动。
那么,他们以前有工作吗? 如果不是,请左,如果是,请右。 事实证明,在我的样本数据中,当前受雇的每个人实际上都有工作机会,所以我可以很快地说出如果您目前在受雇,是的,您值得引进,我们将紧跟 第二层在这里
那么,他们以前有工作吗? 如果不是,请左,如果是,请右。 事实证明,在我的样本数据中,当前受雇的每个人实际上都有工作机会,所以我可以很快地说出如果您目前在受雇,是的,您值得引进,我们这里将紧跟第二层
那么,您如何解释呢? 基尼分数基本上是在每个步骤中使用的熵的量度。 请记住,当我们崩溃时,算法正在尝试使熵量最小化。 样本是先前决策未划分的剩余样本数。
......@@ -744,7 +744,7 @@ print clf.predict([[10, 0, 4, 0, 0, 0]])
那么,还记得随机森林吗? 我们有一堆决策树,它们使用输入数据的不同子样本以及将要分支的不同属性集,当您尝试对某些事物进行最后的分类时,它们都会对最终结果进行投票。 那是集成学习的一个例子。 另一个例子:当我们讨论 K 均值聚类时,我们想到了可能使用具有不同初始随机质心的不同 K 均值模型,并让它们都对最终结果进行投票。 这也是集成学习的一个例子。
基本上,您的想法是拥有多个模型,它们可能是同一类型的模型,也可能是不同类型的模型,但是您可以在一组训练数据上运行所有模型,并且它们都对模型进行投票 无论您要预测什么,最终结果。 通常,您会发现,不同模型的组合所产生的结果要比任何单个模型单独产生的结果都要好。
基本上,您的想法是拥有多个模型,它们可能是同一类型的模型,也可能是不同类型的模型,但是您可以在一组训练数据上运行所有模型,并且无论您要预测什么,它们都对模型最终结果投票。 通常,您会发现,不同模型的组合所产生的结果要比任何单个模型单独产生的结果都要好。
几年前的一个很好的例子是 Netflix 奖。 Netflix 举办了一场竞赛,他们向可以超越现有电影推荐算法的任何研究人员提供一百万美元。 获胜的方法是整体方法,实际上他们可以一次运行多个推荐算法,然后让他们都对最终结果进行投票。 因此,集成学习可以是一种非常强大但简单的工具,可以提高机器学习中最终结果的质量。 现在让我们尝试探索各种类型的集成学习:
......@@ -912,7 +912,7 @@ svc.predict([[50000, 65]])
这是一个小练习,不仅是与 SVM 和各种 SVC 一起玩,还在于使您熟悉如何自己学习有关 SVC 的更多信息。 老实说,对于任何数据科学家或工程师来说,一个非常重要的特征就是能够在不知道答案的情况下自行查找信息。
所以,您知道,我不会偷懒不告诉您其他内核是什么,我希望您习惯于必须自己查找这些内容的想法,因为如果您必须询问其他人 这些事情总是让您在工作场所变得非常烦人,非常快。 因此,去查找它,玩转它,看看你会想到什么。
所以,您知道,我不会偷懒不告诉您其他内核是什么,我希望您习惯于必须自己查找这些内容的想法,因为如果您必须总是询问其他人这些事情,您在工作场所会非常快变得非常烦人。 因此,去查找它,玩转它,看看你会想到什么。
因此,这就是 SVM/SVC,这是一种非常强大的技术,可用于监督学习中的数据分类。 现在您知道了它的工作原理和使用方法,因此请把它保存在技巧包中!
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册