提交 2d676152 编写于 作者: L loopyme

修复页内跳转链接

上级 abf56c68
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
翻译者: 翻译者:
        [@I Remember](https://github.com/apachecn/scikit-learn-doc-zh)         [@I Remember](https://github.com/apachecn/scikit-learn-doc-zh)
**Decision Trees (DTs)** 是一种用来 [classification](#_1101-分类)[regression](#_1102-回归) 的无参监督学习方法。其目的是创建一种模型从数据特征中学习简单的决策规则来预测一个目标变量的值。 **Decision Trees (DTs)** 是一种用来 [classification](#1101-分类)[regression](#1102-回归) 的无参监督学习方法。其目的是创建一种模型从数据特征中学习简单的决策规则来预测一个目标变量的值。
例如,在下面的图片中,决策树通过if-then-else的决策规则来学习数据从而估测数一个正弦图像。决策树越深入,决策规则就越复杂并且对数据的拟合越好。 例如,在下面的图片中,决策树通过if-then-else的决策规则来学习数据从而估测数一个正弦图像。决策树越深入,决策规则就越复杂并且对数据的拟合越好。
......
...@@ -20,11 +20,11 @@ ...@@ -20,11 +20,11 @@
* **平均方法**,该方法的原理是构建多个独立的估计器,然后取它们的预测结果的平均。一般来说组合之后的估计器是会比单个估计器要好的,因为它的方差减小了。 * **平均方法**,该方法的原理是构建多个独立的估计器,然后取它们的预测结果的平均。一般来说组合之后的估计器是会比单个估计器要好的,因为它的方差减小了。
**示例:** [Bagging 方法](#_1111-bagging-meta-estimator(bagging-元估计器)) , [随机森林](#_11121-随机森林) , … **示例:** [Bagging 方法](#1111-bagging-meta-estimator(bagging-元估计器)) , [随机森林](#11121-随机森林) , …
* 相比之下,在 **boosting 方法** 中,基估计器是依次构建的,并且每一个基估计器都尝试去减少组合估计器的偏差。这种方法主要目的是为了结合多个弱模型,使集成的模型更加强大。 * 相比之下,在 **boosting 方法** 中,基估计器是依次构建的,并且每一个基估计器都尝试去减少组合估计器的偏差。这种方法主要目的是为了结合多个弱模型,使集成的模型更加强大。
**示例:** [AdaBoost](#_1113-adaboost) , [梯度提升树](#_1114-gradient-tree-boosting(梯度树提升)) , … **示例:** [AdaBoost](#1113-adaboost) , [梯度提升树](#1114-gradient-tree-boosting(梯度树提升)) , …
## 1.11.1. Bagging meta-estimator(Bagging 元估计器) ## 1.11.1. Bagging meta-estimator(Bagging 元估计器)
......
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
* MLP 需要调试一些超参数,例如隐藏层神经元的数量、层数和迭代轮数。 * MLP 需要调试一些超参数,例如隐藏层神经元的数量、层数和迭代轮数。
* MLP 对特征归一化很敏感. * MLP 对特征归一化很敏感.
解决这些缺点的方法请参阅 [实用使用技巧](#_1178-实用技巧) 部分。 解决这些缺点的方法请参阅 [实用使用技巧](#1178-实用技巧) 部分。
## 1.17.2. 分类 ## 1.17.2. 分类
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
在整个模块中,我们定义向量 ![w = (w_1,..., w_p)](img/b003858334d1ad594207911e84219151.jpg) 作为 `coef_` ,定义 ![w_0](img/57e15e43b846791e47a202e1a9a5d8ce.jpg) 作为 `intercept_` 在整个模块中,我们定义向量 ![w = (w_1,..., w_p)](img/b003858334d1ad594207911e84219151.jpg) 作为 `coef_` ,定义 ![w_0](img/57e15e43b846791e47a202e1a9a5d8ce.jpg) 作为 `intercept_`
如果需要使用广义线性模型进行分类,请参阅 [logistic 回归](#_1111-logistic-回归) 如果需要使用广义线性模型进行分类,请参阅 [logistic 回归](#1111-logistic-回归)
## 1.1.1. 普通最小二乘法 ## 1.1.1. 普通最小二乘法
...@@ -50,7 +50,7 @@ array([ 0.5, 0.5]) ...@@ -50,7 +50,7 @@ array([ 0.5, 0.5])
## 1.1.2. 岭回归 ## 1.1.2. 岭回归
[`Ridge`](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Ridge.html#sklearn.linear_model.Ridge) 回归通过对系数的大小施加惩罚来解决 [普通最小二乘法](#_1111-普通最小二乘法复杂度) 的一些问题。 岭系数最小化的是带罚项的残差平方和, [`Ridge`](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Ridge.html#sklearn.linear_model.Ridge) 回归通过对系数的大小施加惩罚来解决 [普通最小二乘法](#1111-普通最小二乘法复杂度) 的一些问题。 岭系数最小化的是带罚项的残差平方和,
![\underset{w}{min\,} {{|| X w - y||_2}^2 + \alpha {||w||_2}^2}](img/c7e49892dca2f0df35d1261a276693f2.jpg) ![\underset{w}{min\,} {{|| X w - y||_2}^2 + \alpha {||w||_2}^2}](img/c7e49892dca2f0df35d1261a276693f2.jpg)
...@@ -79,7 +79,7 @@ array([ 0.34545455, 0.34545455]) ...@@ -79,7 +79,7 @@ array([ 0.34545455, 0.34545455])
### 1.1.2.1. 岭回归的复杂度 ### 1.1.2.1. 岭回归的复杂度
这种方法与 [普通最小二乘法](#_111-普通最小二乘法) 的复杂度是相同的. 这种方法与 [普通最小二乘法](#111-普通最小二乘法) 的复杂度是相同的.
### 1.1.2.2. 设置正则化参数:广义交叉验证 ### 1.1.2.2. 设置正则化参数:广义交叉验证
...@@ -112,7 +112,7 @@ RidgeCV(alphas=[0.1, 1.0, 10.0], cv=None, fit_intercept=True, scoring=None, ...@@ -112,7 +112,7 @@ RidgeCV(alphas=[0.1, 1.0, 10.0], cv=None, fit_intercept=True, scoring=None,
lasso estimate 解决了加上罚项 ![\alpha ||w||_1](img/b2ea359213f8f5b01eead0821e29e856.jpg) 的最小二乘法的最小化,其中, ![\alpha](img/d8b3d5242d513369a44f8bf0c6112744.jpg) 是一个常数, ![||w||_1](img/62eb544f1f6e234c61099fea1517300b.jpg) 是参数向量的 ![\ell_1](img/3bf32d926cdf24f440b6b831f0d9cc37.jpg)-norm 范数。 lasso estimate 解决了加上罚项 ![\alpha ||w||_1](img/b2ea359213f8f5b01eead0821e29e856.jpg) 的最小二乘法的最小化,其中, ![\alpha](img/d8b3d5242d513369a44f8bf0c6112744.jpg) 是一个常数, ![||w||_1](img/62eb544f1f6e234c61099fea1517300b.jpg) 是参数向量的 ![\ell_1](img/3bf32d926cdf24f440b6b831f0d9cc37.jpg)-norm 范数。
[`Lasso`](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Lasso.html#sklearn.linear_model.Lasso) 类的实现使用了 coordinate descent (坐标下降算法)来拟合系数。 查看 [最小角回归](#_117-最小角回归) ,这是另一种方法: [`Lasso`](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Lasso.html#sklearn.linear_model.Lasso) 类的实现使用了 coordinate descent (坐标下降算法)来拟合系数。 查看 [最小角回归](#117-最小角回归) ,这是另一种方法:
```py ```py
>>> from sklearn import linear_model >>> from sklearn import linear_model
...@@ -152,7 +152,7 @@ array([ 0.8]) ...@@ -152,7 +152,7 @@ array([ 0.8])
#### 1.1.3.1.1. 使用交叉验证 #### 1.1.3.1.1. 使用交叉验证
scikit-learn 通过交叉验证来公开设置 Lasso `alpha` 参数的对象: [`LassoCV`](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LassoCV.html#sklearn.linear_model.LassoCV)[`LassoLarsCV`](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LassoLarsCV.html#sklearn.linear_model.LassoLarsCV)[`LassoLarsCV`](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LassoLarsCV.html#sklearn.linear_model.LassoLarsCV) 是基于下面将要提到的 [最小角回归](#_117-最小角回归) 算法。 scikit-learn 通过交叉验证来公开设置 Lasso `alpha` 参数的对象: [`LassoCV`](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LassoCV.html#sklearn.linear_model.LassoCV)[`LassoLarsCV`](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LassoLarsCV.html#sklearn.linear_model.LassoLarsCV)[`LassoLarsCV`](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LassoLarsCV.html#sklearn.linear_model.LassoLarsCV) 是基于下面将要提到的 [最小角回归](#117-最小角回归) 算法。
对于具有许多线性回归的高维数据集, [`LassoCV`](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LassoCV.html#sklearn.linear_model.LassoCV) 最常见。 然而,[`LassoLarsCV`](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LassoLarsCV.html#sklearn.linear_model.LassoLarsCV) 在寻找 `alpha`参数值上更具有优势,而且如果样本数量比特征数量少得多时,通常 [`LassoLarsCV`](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LassoLarsCV.html#sklearn.linear_model.LassoLarsCV)[`LassoCV`](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LassoCV.html#sklearn.linear_model.LassoCV) 要快。 对于具有许多线性回归的高维数据集, [`LassoCV`](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LassoCV.html#sklearn.linear_model.LassoCV) 最常见。 然而,[`LassoLarsCV`](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LassoLarsCV.html#sklearn.linear_model.LassoLarsCV) 在寻找 `alpha`参数值上更具有优势,而且如果样本数量比特征数量少得多时,通常 [`LassoLarsCV`](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LassoLarsCV.html#sklearn.linear_model.LassoLarsCV)[`LassoCV`](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LassoCV.html#sklearn.linear_model.LassoCV) 要快。
...@@ -394,7 +394,7 @@ array([ 0.49999993, 0.49999993]) ...@@ -394,7 +394,7 @@ array([ 0.49999993, 0.49999993])
``` ```
由于贝叶斯框架的缘故,权值与 [普通最小二乘法](#_111-普通最小二乘法) 产生的不太一样。 但是,贝叶斯岭回归对病态问题(ill-posed)的鲁棒性要更好。 由于贝叶斯框架的缘故,权值与 [普通最小二乘法](#111-普通最小二乘法) 产生的不太一样。 但是,贝叶斯岭回归对病态问题(ill-posed)的鲁棒性要更好。
> **示例**: > **示例**:
> >
...@@ -580,13 +580,13 @@ Elastic-Net正则化是L1 和 L2的组合,来使如下代价函数最小: ...@@ -580,13 +580,13 @@ Elastic-Net正则化是L1 和 L2的组合,来使如下代价函数最小:
注意,在高维数据条件下( `n_features`大),一般而言很难完成稳健拟合,很可能完全不起作用。 注意,在高维数据条件下( `n_features`大),一般而言很难完成稳健拟合,很可能完全不起作用。
>**寻找平衡: 预测器的选择** >**寻找平衡: 预测器的选择**
> * Scikit-learn提供了三种稳健回归的预测器(estimator): [RANSAC](#_11152-ransac:-随机抽样一致性算法(random-sample-consensus)) , [Theil Sen](_11153-theil-sen-预估器-广义中值估计器(generalized-median-based-estimator)) 和 [HuberRegressor](_11154-huber-回归) > * Scikit-learn提供了三种稳健回归的预测器(estimator): [RANSAC](#11152-ransac:-随机抽样一致性算法(random-sample-consensus)) , [Theil Sen](_11153-theil-sen-预估器-广义中值估计器(generalized-median-based-estimator)) 和 [HuberRegressor](_11154-huber-回归)
> >
> * [HuberRegressor](_11154-huber-回归) 一般快于 [RANSAC](#_11152-ransac:-随机抽样一致性算法(random-sample-consensus)) 和 [Theil Sen](_11153-theil-sen-预估器-广义中值估计器(generalized-median-based-estimator)) ,除非样本数很大,即 `n_samples` >> `n_features` 。 这是因为 [RANSAC](#_11152-ransac:-随机抽样一致性算法(random-sample-consensus)) 和 [Theil Sen](_11153-theil-sen-预估器-广义中值估计器(generalized-median-based-estimator)) 都是基于数据的较小子集进行拟合。但使用默认参数时, [Theil Sen](_11153-theil-sen-预估器-广义中值估计器(generalized-median-based-estimator)) 和 [RANSAC](#_11152-ransac:-随机抽样一致性算法(random-sample-consensus)) 可能不如 [HuberRegressor](_11154-huber-回归) 鲁棒。 > * [HuberRegressor](_11154-huber-回归) 一般快于 [RANSAC](#11152-ransac:-随机抽样一致性算法(random-sample-consensus)) 和 [Theil Sen](_11153-theil-sen-预估器-广义中值估计器(generalized-median-based-estimator)) ,除非样本数很大,即 `n_samples` >> `n_features` 。 这是因为 [RANSAC](#11152-ransac:-随机抽样一致性算法(random-sample-consensus)) 和 [Theil Sen](_11153-theil-sen-预估器-广义中值估计器(generalized-median-based-estimator)) 都是基于数据的较小子集进行拟合。但使用默认参数时, [Theil Sen](_11153-theil-sen-预估器-广义中值估计器(generalized-median-based-estimator)) 和 [RANSAC](#11152-ransac:-随机抽样一致性算法(random-sample-consensus)) 可能不如 [HuberRegressor](_11154-huber-回归) 鲁棒。
> * [RANSAC](#_11152-ransac:-随机抽样一致性算法(random-sample-consensus)) 比 [Theil Sen](_11153-theil-sen-预估器-广义中值估计器(generalized-median-based-estimator)) 更快,在样本数量上的伸缩性(适应性)更好。 > * [RANSAC](#11152-ransac:-随机抽样一致性算法(random-sample-consensus)) 比 [Theil Sen](_11153-theil-sen-预估器-广义中值估计器(generalized-median-based-estimator)) 更快,在样本数量上的伸缩性(适应性)更好。
> * [RANSAC](#_11152-ransac:-随机抽样一致性算法(random-sample-consensus)) 能更好地处理y方向的大值离群点(通常情况下)。 > * [RANSAC](#11152-ransac:-随机抽样一致性算法(random-sample-consensus)) 能更好地处理y方向的大值离群点(通常情况下)。
> * [Theil Sen](_11153-theil-sen-预估器-广义中值估计器(generalized-median-based-estimator)) 能更好地处理x方向中等大小的离群点,但在高维情况下无法保证这一特点。 > * [Theil Sen](_11153-theil-sen-预估器-广义中值估计器(generalized-median-based-estimator)) 能更好地处理x方向中等大小的离群点,但在高维情况下无法保证这一特点。
> 实在决定不了的话,请使用 [RANSAC](#_11152-ransac:-随机抽样一致性算法(random-sample-consensus)) > 实在决定不了的话,请使用 [RANSAC](#11152-ransac:-随机抽样一致性算法(random-sample-consensus))
### 1.1.15.2. RANSAC: 随机抽样一致性算法(RANdom SAmple Consensus) ### 1.1.15.2. RANSAC: 随机抽样一致性算法(RANdom SAmple Consensus)
...@@ -640,7 +640,7 @@ RANSAC 是一种非确定性算法,以一定概率输出一个可能的合理 ...@@ -640,7 +640,7 @@ RANSAC 是一种非确定性算法,以一定概率输出一个可能的合理
#### 1.1.15.3.1. 算法理论细节 #### 1.1.15.3.1. 算法理论细节
[`TheilSenRegressor`](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.TheilSenRegressor.html#sklearn.linear_model.TheilSenRegressor) 在渐近效率和无偏估计方面足以媲美 [Ordinary Least Squares (OLS)](#_1111-普通最小二乘法复杂度) (普通最小二乘法(OLS))。与 OLS 不同的是, Theil-Sen 是一种非参数方法,这意味着它没有对底层数据的分布假设。由于 Theil-Sen 是基于中值的估计,它更适合于损坏的数据即离群值。 在单变量的设置中,Theil-Sen 在简单的线性回归的情况下,其崩溃点大约 29.3% ,这意味着它可以容忍任意损坏的数据高达 29.3% 。 [`TheilSenRegressor`](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.TheilSenRegressor.html#sklearn.linear_model.TheilSenRegressor) 在渐近效率和无偏估计方面足以媲美 [Ordinary Least Squares (OLS)](#1111-普通最小二乘法复杂度) (普通最小二乘法(OLS))。与 OLS 不同的是, Theil-Sen 是一种非参数方法,这意味着它没有对底层数据的分布假设。由于 Theil-Sen 是基于中值的估计,它更适合于损坏的数据即离群值。 在单变量的设置中,Theil-Sen 在简单的线性回归的情况下,其崩溃点大约 29.3% ,这意味着它可以容忍任意损坏的数据高达 29.3% 。
[![http://sklearn.apachecn.org/cn/0.19.0/_images/sphx_glr_plot_theilsen_0011.png](img/9d2e3befcfa08a4b6a7cfed8dadbd5c0.jpg)](https://scikit-learn.org/stable/auto_examples/linear_model/plot_theilsen.html) [![http://sklearn.apachecn.org/cn/0.19.0/_images/sphx_glr_plot_theilsen_0011.png](img/9d2e3befcfa08a4b6a7cfed8dadbd5c0.jpg)](https://scikit-learn.org/stable/auto_examples/linear_model/plot_theilsen.html)
......
...@@ -149,7 +149,7 @@ scikit-learn 提供了 [`covariance.EllipticEnvelope`](https://scikit-learn.org/ ...@@ -149,7 +149,7 @@ scikit-learn 提供了 [`covariance.EllipticEnvelope`](https://scikit-learn.org/
LOF 算法的优点是考虑到数据集的局部和全局属性:即使在异常样本具有不同潜在密度的数据集中,它也能够表现得很好。 问题不在于样本是如何被分离的,而是样本与周围近邻的分离程度有多大。 LOF 算法的优点是考虑到数据集的局部和全局属性:即使在异常样本具有不同潜在密度的数据集中,它也能够表现得很好。 问题不在于样本是如何被分离的,而是样本与周围近邻的分离程度有多大。
当使用 LOF 进行孤立点检测的时候,不能使用 predict, decision_function 和 score_samples 方法, 只能使用 fit_predict 方法。训练样本的异常性得分可以通过 negative_outlier_factor_ 属性来获得。 注意当使用LOF算法进行新奇点检测的时候(novelty 设为 True), predict, decision_function 和 score_samples 函数可被用于新的未见过的观测数据。请查看[使用LOF进行新奇点检测](#_274-使用LOF进行新奇点检测). 当使用 LOF 进行孤立点检测的时候,不能使用 predict, decision_function 和 score_samples 方法, 只能使用 fit_predict 方法。训练样本的异常性得分可以通过 negative_outlier_factor_ 属性来获得。 注意当使用LOF算法进行新奇点检测的时候(novelty 设为 True), predict, decision_function 和 score_samples 函数可被用于新的未见过的观测数据。请查看[使用LOF进行新奇点检测](#274-使用LOF进行新奇点检测).
该策略如下图所示。 该策略如下图所示。
......
...@@ -21,9 +21,9 @@ estimator.get_params() ...@@ -21,9 +21,9 @@ estimator.get_params()
* 参数空间 * 参数空间
* 搜寻或采样候选的方法 * 搜寻或采样候选的方法
* 交叉验证方案 * 交叉验证方案
* [计分函数](#_3231-指定目标度量) * [计分函数](#3231-指定目标度量)
有些模型支持专业化的、高效的参数搜索策略, [描述如下](#alternative-cv) 。在 scikit-learn 包中提供了两种采样搜索候选的通用方法:对于给定的值, [GridSearchCV](https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html#sklearn.model_selection.GridSearchCV) 考虑了所有参数组合;而 [RandomizedSearchCV](https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.RandomizedSearchCV.html#sklearn.model_selection.RandomizedSearchCV) 可以从具有指定分布的参数空间中抽取给定数量的候选。介绍完这些工具后,我们将详细介绍适用于这两种方法的 [最佳实践](#_323-参数搜索技巧) 有些模型支持专业化的、高效的参数搜索策略, [描述如下](#alternative-cv) 。在 scikit-learn 包中提供了两种采样搜索候选的通用方法:对于给定的值, [GridSearchCV](https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html#sklearn.model_selection.GridSearchCV) 考虑了所有参数组合;而 [RandomizedSearchCV](https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.RandomizedSearchCV.html#sklearn.model_selection.RandomizedSearchCV) 可以从具有指定分布的参数空间中抽取给定数量的候选。介绍完这些工具后,我们将详细介绍适用于这两种方法的 [最佳实践](#323-参数搜索技巧)
**注意**,通常这些参数的一小部分会对模型的预测或计算性能有很大的影响,而其他参数可以保留为其默认值。 建议阅读估计器类的相关文档,以更好地了解其预期行为,可能的话还可以阅读下引用的文献。 **注意**,通常这些参数的一小部分会对模型的预测或计算性能有很大的影响,而其他参数可以保留为其默认值。 建议阅读估计器类的相关文档,以更好地了解其预期行为,可能的话还可以阅读下引用的文献。
......
...@@ -15,9 +15,9 @@ ...@@ -15,9 +15,9 @@
* **Estimator score method(估计器得分的方法)**: Estimators(估计器)有一个 `score(得分)` 方法,为其解决的问题提供了默认的 evaluation criterion (评估标准)。 在这个页面上没有相关讨论,但是在每个 estimator (估计器)的文档中会有相关的讨论。 * **Estimator score method(估计器得分的方法)**: Estimators(估计器)有一个 `score(得分)` 方法,为其解决的问题提供了默认的 evaluation criterion (评估标准)。 在这个页面上没有相关讨论,但是在每个 estimator (估计器)的文档中会有相关的讨论。
* **Scoring parameter(评分参数)**: Model-evaluation tools (模型评估工具)使用 [cross-validation](cross_validation.html#cross-validation) ( [`model_selection.cross_val_score`](https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.cross_val_score.html#sklearn.model_selection.cross_val_score "sklearn.model_selection.cross_val_score") 和 [`model_selection.GridSearchCV`](https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html#sklearn.model_selection.GridSearchCV "sklearn.model_selection.GridSearchCV")) 依靠 internal _scoring_ strategy (内部 _scoring(得分)_ 策略)。这在 [scoring 参数: 定义模型评估规则](#scoring-parameter) 部分讨论。 * **Scoring parameter(评分参数)**: Model-evaluation tools (模型评估工具)使用 [cross-validation](cross_validation.html#cross-validation) ( [`model_selection.cross_val_score`](https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.cross_val_score.html#sklearn.model_selection.cross_val_score "sklearn.model_selection.cross_val_score") 和 [`model_selection.GridSearchCV`](https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html#sklearn.model_selection.GridSearchCV "sklearn.model_selection.GridSearchCV")) 依靠 internal _scoring_ strategy (内部 _scoring(得分)_ 策略)。这在 [scoring 参数: 定义模型评估规则](#scoring-parameter) 部分讨论。
* **Metric functions(指标函数)**: `metrics` 模块实现了针对特定目的评估预测误差的函数。这些指标在以下部分部分详细介绍 [分类指标](#_332-分类指标), [多标签排名指标](#_333-多标签排名指标), [回归指标](#_334-回归指标)[聚类指标](#_335-聚类指标) * **Metric functions(指标函数)**: `metrics` 模块实现了针对特定目的评估预测误差的函数。这些指标在以下部分部分详细介绍 [分类指标](#332-分类指标), [多标签排名指标](#333-多标签排名指标), [回归指标](#334-回归指标)[聚类指标](#335-聚类指标)
最后, [虚拟估计](#_336-虚拟估计) 用于获取随机预测的这些指标的基准值。 最后, [虚拟估计](#336-虚拟估计) 用于获取随机预测的这些指标的基准值。
>See also:对于 “pairwise(成对)” metrics(指标),_samples(样本)_ 之间而不是 estimators (估计量)或者 predictions(预测值),请参阅 [成对的矩阵, 类别和核函数](?) 部分。dr >See also:对于 “pairwise(成对)” metrics(指标),_samples(样本)_ 之间而不是 estimators (估计量)或者 predictions(预测值),请参阅 [成对的矩阵, 类别和核函数](?) 部分。dr
...@@ -547,7 +547,7 @@ array([0.35, 0.4 , 0.8 ]) ...@@ -547,7 +547,7 @@ array([0.35, 0.4 , 0.8 ])
#### 3.3.2.8.2. 多类和多标签分类 #### 3.3.2.8.2. 多类和多标签分类
在 multiclass and multilabel classification task(多类和多标签分类任务)中,precision(精度), recall(召回), and F-measures 的概念可以独立地应用于每个标签。 有以下几种方法 combine results across labels (将结果跨越标签组合),由 `average` 参数指定为 [`average_precision_score`](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.average_precision_score.html#sklearn.metrics.average_precision_score "sklearn.metrics.average_precision_score") (仅用于 multilabel), [`f1_score`](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.f1_score.html#sklearn.metrics.f1_score "sklearn.metrics.f1_score"), [`fbeta_score`](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.fbeta_score.html#sklearn.metrics.fbeta_score "sklearn.metrics.fbeta_score"), [`precision_recall_fscore_support`](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.precision_recall_fscore_support.html#sklearn.metrics.precision_recall_fscore_support "sklearn.metrics.precision_recall_fscore_support"), [`precision_score`](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.precision_score.html#sklearn.metrics.precision_score "sklearn.metrics.precision_score")[`recall_score`](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.recall_score.html#sklearn.metrics.recall_score "sklearn.metrics.recall_score") 函数,如上 [above](#_3321-从二分到多分类和-multilabel) 所述。请注意,对于在包含所有标签的多类设置中进行 “micro”-averaging (”微”平均),将产生相等的 precision(精度), recall(召回)和 ![F](img/8ef970a809e9beef56eb7a78d0133978.jpg) ,而 “weighted(加权)” averaging(平均)可能会产生 precision(精度)和 recall(召回)之间的 F-score 。 在 multiclass and multilabel classification task(多类和多标签分类任务)中,precision(精度), recall(召回), and F-measures 的概念可以独立地应用于每个标签。 有以下几种方法 combine results across labels (将结果跨越标签组合),由 `average` 参数指定为 [`average_precision_score`](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.average_precision_score.html#sklearn.metrics.average_precision_score "sklearn.metrics.average_precision_score") (仅用于 multilabel), [`f1_score`](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.f1_score.html#sklearn.metrics.f1_score "sklearn.metrics.f1_score"), [`fbeta_score`](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.fbeta_score.html#sklearn.metrics.fbeta_score "sklearn.metrics.fbeta_score"), [`precision_recall_fscore_support`](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.precision_recall_fscore_support.html#sklearn.metrics.precision_recall_fscore_support "sklearn.metrics.precision_recall_fscore_support"), [`precision_score`](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.precision_score.html#sklearn.metrics.precision_score "sklearn.metrics.precision_score")[`recall_score`](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.recall_score.html#sklearn.metrics.recall_score "sklearn.metrics.recall_score") 函数,如上 [above](#3321-从二分到多分类和-multilabel) 所述。请注意,对于在包含所有标签的多类设置中进行 “micro”-averaging (”微”平均),将产生相等的 precision(精度), recall(召回)和 ![F](img/8ef970a809e9beef56eb7a78d0133978.jpg) ,而 “weighted(加权)” averaging(平均)可能会产生 precision(精度)和 recall(召回)之间的 F-score 。
为了使这一点更加明确,请考虑以下 notation (符号): 为了使这一点更加明确,请考虑以下 notation (符号):
...@@ -616,7 +616,7 @@ Similarly, labels not present in the data sample may be accounted for in macro-a ...@@ -616,7 +616,7 @@ Similarly, labels not present in the data sample may be accounted for in macro-a
![J(y_i, \hat{y}_i) = \frac{|y_i \cap \hat{y}_i|}{|y_i \cup \hat{y}_i|}.](img/6b1c74edd599db63c339ead392e8e54a.jpg) ![J(y_i, \hat{y}_i) = \frac{|y_i \cap \hat{y}_i|}{|y_i \cup \hat{y}_i|}.](img/6b1c74edd599db63c339ead392e8e54a.jpg)
`jaccard_score`就像`precision_recall_fscore_support`中的设定方法,本身应用于二分类,并通过使用从二分类扩展到多标记和多类(见[从二分到多分类和multilabel](#_3321-从二分到多分类和-multilabel))。 `jaccard_score`就像`precision_recall_fscore_support`中的设定方法,本身应用于二分类,并通过使用从二分类扩展到多标记和多类(见[从二分到多分类和multilabel](#3321-从二分到多分类和-multilabel))。
二分类时: 二分类时:
```py ```py
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
翻译者: 翻译者:
        [@Sehriff](https://github.com/apachecn/scikit-learn-doc-zh)         [@Sehriff](https://github.com/apachecn/scikit-learn-doc-zh)
变换器(Transformers)通常与分类器,回归器或其他的学习器组合在一起以构建复合估计器。 完成这件事的最常用工具是 [Pipeline](#_511-pipeline-链式评估器)。 Pipeline 经常与 FeatureUnion 结合起来使用。 FeatureUnion 用于将变换器(transformers)的输出串联到复合特征空间(composite feature space)中。 TransformedTargetRegressor 用来处理变换 target (即对数变化 y)。 作为对比,Pipelines类只用来变换(transform)观测数据(X)。 变换器(Transformers)通常与分类器,回归器或其他的学习器组合在一起以构建复合估计器。 完成这件事的最常用工具是 [Pipeline](#511-pipeline-链式评估器)。 Pipeline 经常与 FeatureUnion 结合起来使用。 FeatureUnion 用于将变换器(transformers)的输出串联到复合特征空间(composite feature space)中。 TransformedTargetRegressor 用来处理变换 target (即对数变化 y)。 作为对比,Pipelines类只用来变换(transform)观测数据(X)。
## 5.1.1. Pipeline: 链式评估器 ## 5.1.1. Pipeline: 链式评估器
......
...@@ -427,7 +427,7 @@ One-hot 编码的离散化特征 可以使得一个模型更加的有表现力(e ...@@ -427,7 +427,7 @@ One-hot 编码的离散化特征 可以使得一个模型更加的有表现力(e
... [ 6., 3., 11 ]]) ... [ 6., 3., 11 ]])
>>> est = preprocessing.KBinsDiscretizer(n_bins=[3, 2, 2], encode='ordinal').fit(X) >>> est = preprocessing.KBinsDiscretizer(n_bins=[3, 2, 2], encode='ordinal').fit(X)
``` ```
默认情况下,输出是被 one-hot 编码到一个稀疏矩阵。(请看[类别特征编码](##_534-类别特征编码))。 而且可以使用参数`encode`进行配置。对每一个特征, bin的边界以及总数目在 `fit`过程中被计算出来,它们将用来定义区间。 因此,对现在的例子,这些区间间隔被定义如下: 默认情况下,输出是被 one-hot 编码到一个稀疏矩阵。(请看[类别特征编码](#534-类别特征编码))。 而且可以使用参数`encode`进行配置。对每一个特征, bin的边界以及总数目在 `fit`过程中被计算出来,它们将用来定义区间。 因此,对现在的例子,这些区间间隔被定义如下:
- 特征 1:`[-∞,-1],[-1,2),[2,∞)` - 特征 1:`[-∞,-1],[-1,2),[2,∞)`
- 特征 2:`[-∞,5),[5,∞)` - 特征 2:`[-∞,5),[5,∞)`
- 特征 3:`[-∞,14],[14,∞)` - 特征 3:`[-∞,14],[14,∞)`
......
...@@ -22,8 +22,8 @@ ...@@ -22,8 +22,8 @@
根据所需数据集的类型,有三种主要类型的数据集API接口可用于获取数据集。 根据所需数据集的类型,有三种主要类型的数据集API接口可用于获取数据集。
* **loaders** 可用来加载小的标准数据集,在[玩具数据集](#_62-玩具数据集)中有介绍。 * **loaders** 可用来加载小的标准数据集,在[玩具数据集](#62-玩具数据集)中有介绍。
* **fetchers** 可用来下载并加载大的真实数据集,在[真实世界中的数据集](#_63-真实世界中的数据集)中有介绍。 * **fetchers** 可用来下载并加载大的真实数据集,在[真实世界中的数据集](#63-真实世界中的数据集)中有介绍。
loaders和fetchers的所有函数都返回一个字典一样的对象,里面至少包含两项:shape为n_samples*n_features的数组,对应的字典key是data(20news groups数据集除外)以及长度为n_samples的numpy数组,包含了目标值,对应的字典key是`target` loaders和fetchers的所有函数都返回一个字典一样的对象,里面至少包含两项:shape为n_samples*n_features的数组,对应的字典key是data(20news groups数据集除外)以及长度为n_samples的numpy数组,包含了目标值,对应的字典key是`target`
...@@ -35,7 +35,7 @@ loaders和fetchers的所有函数都返回一个字典一样的对象,里面 ...@@ -35,7 +35,7 @@ loaders和fetchers的所有函数都返回一个字典一样的对象,里面
这些函数返回一个元组(X,y),该元组由shape为n_samples*n_features的numpy数组X和长度为n_samples的包含目标y的数组组成。 这些函数返回一个元组(X,y),该元组由shape为n_samples*n_features的numpy数组X和长度为n_samples的包含目标y的数组组成。
此外,还有一些用于加载其他格式或其他位置的数据集的混合工具(miscellanous tools),在[加载其他类型的数据集](#_65-加载其他数据集)中有介绍 此外,还有一些用于加载其他格式或其他位置的数据集的混合工具(miscellanous tools),在[加载其他类型的数据集](#65-加载其他数据集)中有介绍
## 6.2. 玩具数据集 ## 6.2. 玩具数据集
......
...@@ -10,20 +10,20 @@ ...@@ -10,20 +10,20 @@
        [@Damon](https://github.com/apachecn/scikit-learn-doc-zh)         [@Damon](https://github.com/apachecn/scikit-learn-doc-zh)
        [@Leon晋](https://github.com/apachecn/scikit-learn-doc-zh)         [@Leon晋](https://github.com/apachecn/scikit-learn-doc-zh)
**支持向量机 (SVMs)** 可用于以下监督学习算法: [分类](#_141-分类), [回归](#_142-回归)[异常检测](#_143-密度估计-异常(novelty)检测). **支持向量机 (SVMs)** 可用于以下监督学习算法: [分类](#141-分类), [回归](#142-回归)[异常检测](#143-密度估计-异常(novelty)检测).
支持向量机的优势在于: 支持向量机的优势在于:
* 在高维空间中非常高效. * 在高维空间中非常高效.
* 即使在数据维度比样本数量大的情况下仍然有效. * 即使在数据维度比样本数量大的情况下仍然有效.
* 在决策函数(称为支持向量)中使用训练集的子集,因此它也是高效利用内存的. * 在决策函数(称为支持向量)中使用训练集的子集,因此它也是高效利用内存的.
* 通用性: 不同的核函数 [核函数](#_146-核函数) 与特定的决策函数一一对应.常见的 kernel 已经提供,也可以指定定制的内核. * 通用性: 不同的核函数 [核函数](#146-核函数) 与特定的决策函数一一对应.常见的 kernel 已经提供,也可以指定定制的内核.
支持向量机的缺点包括: 支持向量机的缺点包括:
* 如果特征数量比样本数量大得多,在选择核函数 [核函数](#_146-核函数) 时要避免过拟合, 而且正则化项是非常重要的. * 如果特征数量比样本数量大得多,在选择核函数 [核函数](#146-核函数) 时要避免过拟合, 而且正则化项是非常重要的.
* 支持向量机不直接提供概率估计,这些都是使用昂贵的五次交叉验算计算的. (详情见 [得分和概率](#_1412-得分和概率)). * 支持向量机不直接提供概率估计,这些都是使用昂贵的五次交叉验算计算的. (详情见 [得分和概率](#1412-得分和概率)).
在 scikit-learn 中,支持向量机提供 dense(`numpy.ndarray` ,可以通过 `numpy.asarray` 进行转换) 和 sparse (任何 `scipy.sparse`) 样例向量作为输出.然而,要使用支持向量机来对 sparse 数据作预测,它必须已经拟合这样的数据.使用 C 代码的 `numpy.ndarray` (dense) 或者带有 `dtype=float64``scipy.sparse.csr_matrix` (sparse) 来优化性能. 在 scikit-learn 中,支持向量机提供 dense(`numpy.ndarray` ,可以通过 `numpy.asarray` 进行转换) 和 sparse (任何 `scipy.sparse`) 样例向量作为输出.然而,要使用支持向量机来对 sparse 数据作预测,它必须已经拟合这样的数据.使用 C 代码的 `numpy.ndarray` (dense) 或者带有 `dtype=float64``scipy.sparse.csr_matrix` (sparse) 来优化性能.
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
[![http://sklearn.apachecn.org/cn/0.19.0/_images/sphx_glr_plot_iris_0012.png](img/75d98860b528f3fcd2b060ad5e624ca0.jpg)](https://scikit-learn.org/stable/auto_examples/svm/plot_iris_svc.html) [![http://sklearn.apachecn.org/cn/0.19.0/_images/sphx_glr_plot_iris_0012.png](img/75d98860b528f3fcd2b060ad5e624ca0.jpg)](https://scikit-learn.org/stable/auto_examples/svm/plot_iris_svc.html)
[`SVC`](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC)[`NuSVC`](https://scikit-learn.org/stable/modules/generated/sklearn.svm.NuSVC.html#sklearn.svm.NuSVC) 是相似的方法, 但是接受稍许不同的参数设置并且有不同的数学方程(在这部分看 [数学公式](#_147-数学公式)). 另一方面, [`LinearSVC`](https://scikit-learn.org/stable/modules/generated/sklearn.svm.LinearSVC.html#sklearn.svm.LinearSVC) 是另一个实现线性核函数的支持向量分类. 记住 [`LinearSVC`](https://scikit-learn.org/stable/modules/generated/sklearn.svm.LinearSVC.html#sklearn.svm.LinearSVC) 不接受关键词 `kernel`, 因为它被假设为线性的. 它也缺少一些 [`SVC`](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC)[`NuSVC`](https://scikit-learn.org/stable/modules/generated/sklearn.svm.NuSVC.html#sklearn.svm.NuSVC) 的成员(members) 比如 `support_` . [`SVC`](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC)[`NuSVC`](https://scikit-learn.org/stable/modules/generated/sklearn.svm.NuSVC.html#sklearn.svm.NuSVC) 是相似的方法, 但是接受稍许不同的参数设置并且有不同的数学方程(在这部分看 [数学公式](#147-数学公式)). 另一方面, [`LinearSVC`](https://scikit-learn.org/stable/modules/generated/sklearn.svm.LinearSVC.html#sklearn.svm.LinearSVC) 是另一个实现线性核函数的支持向量分类. 记住 [`LinearSVC`](https://scikit-learn.org/stable/modules/generated/sklearn.svm.LinearSVC.html#sklearn.svm.LinearSVC) 不接受关键词 `kernel`, 因为它被假设为线性的. 它也缺少一些 [`SVC`](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC)[`NuSVC`](https://scikit-learn.org/stable/modules/generated/sklearn.svm.NuSVC.html#sklearn.svm.NuSVC) 的成员(members) 比如 `support_` .
和其他分类器一样, [`SVC`](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC), [`NuSVC`](https://scikit-learn.org/stable/modules/generated/sklearn.svm.NuSVC.html#sklearn.svm.NuSVC)[`LinearSVC`](https://scikit-learn.org/stable/modules/generated/sklearn.svm.LinearSVC.html#sklearn.svm.LinearSVC) 将两个数组作为输入: `[n_samples, n_features]` 大小的数组 X 作为训练样本, `[n_samples]` 大小的数组 y 作为类别标签(字符串或者整数): 和其他分类器一样, [`SVC`](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC), [`NuSVC`](https://scikit-learn.org/stable/modules/generated/sklearn.svm.NuSVC.html#sklearn.svm.NuSVC)[`LinearSVC`](https://scikit-learn.org/stable/modules/generated/sklearn.svm.LinearSVC.html#sklearn.svm.LinearSVC) 将两个数组作为输入: `[n_samples, n_features]` 大小的数组 X 作为训练样本, `[n_samples]` 大小的数组 y 作为类别标签(字符串或者整数):
...@@ -112,7 +112,7 @@ LinearSVC(C=1.0, class_weight=None, dual=True, fit_intercept=True, ...@@ -112,7 +112,7 @@ LinearSVC(C=1.0, class_weight=None, dual=True, fit_intercept=True,
``` ```
参见 [数学公式](#_147-数学公式) 查看决策函数的完整描述. 参见 [数学公式](#147-数学公式) 查看决策函数的完整描述.
记住 [`LinearSVC`](https://scikit-learn.org/stable/modules/generated/sklearn.svm.LinearSVC.html#sklearn.svm.LinearSVC) 也实现了可选择的多类别策略, 通过使用选项 `multi_class='crammer_singer'`, 所谓的多元 SVM 由 Crammer 和 Singer 明确表达. 这个方法是一致的, 对于 one-vs-rest 是不正确的. 实际上, one-vs-rest 分类通常受到青睐, 因为结果大多数是相似的, 但是运行时间却显著减少. 记住 [`LinearSVC`](https://scikit-learn.org/stable/modules/generated/sklearn.svm.LinearSVC.html#sklearn.svm.LinearSVC) 也实现了可选择的多类别策略, 通过使用选项 `multi_class='crammer_singer'`, 所谓的多元 SVM 由 Crammer 和 Singer 明确表达. 这个方法是一致的, 对于 one-vs-rest 是不正确的. 实际上, one-vs-rest 分类通常受到青睐, 因为结果大多数是相似的, 但是运行时间却显著减少.
...@@ -174,7 +174,7 @@ LinearSVC(C=1.0, class_weight=None, dual=True, fit_intercept=True, ...@@ -174,7 +174,7 @@ LinearSVC(C=1.0, class_weight=None, dual=True, fit_intercept=True,
支持向量分类生成的模型(如前描述)只依赖于训练集的子集,因为构建模型的 cost function 不在乎边缘之外的训练点. 类似的,支持向量回归生成的模型只依赖于训练集的子集, 因为构建模型的 cost function 忽略任何接近于模型预测的训练数据. 支持向量分类生成的模型(如前描述)只依赖于训练集的子集,因为构建模型的 cost function 不在乎边缘之外的训练点. 类似的,支持向量回归生成的模型只依赖于训练集的子集, 因为构建模型的 cost function 忽略任何接近于模型预测的训练数据.
支持向量分类有三种不同的实现形式: [`SVR`](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVR.html#sklearn.svm.SVR), [`NuSVR`](https://scikit-learn.org/stable/modules/generated/sklearn.svm.NuSVR.html#sklearn.svm.NuSVR)[`LinearSVR`](https://scikit-learn.org/stable/modules/generated/sklearn.svm.LinearSVR.html#sklearn.svm.LinearSVR). 在只考虑线性核的情况下, [`LinearSVR`](https://scikit-learn.org/stable/modules/generated/sklearn.svm.LinearSVR.html#sklearn.svm.LinearSVR)[`SVR`](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVR.html#sklearn.svm.SVR) 提供一个更快的实现形式, 然而比起 [`SVR`](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVR.html#sklearn.svm.SVR)[`LinearSVR`](https://scikit-learn.org/stable/modules/generated/sklearn.svm.LinearSVR.html#sklearn.svm.LinearSVR), [`NuSVR`](https://scikit-learn.org/stable/modules/generated/sklearn.svm.NuSVR.html#sklearn.svm.NuSVR) 实现一个稍微不同的构思(formulation).细节参见 [实现细节](#_148-实现细节). 支持向量分类有三种不同的实现形式: [`SVR`](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVR.html#sklearn.svm.SVR), [`NuSVR`](https://scikit-learn.org/stable/modules/generated/sklearn.svm.NuSVR.html#sklearn.svm.NuSVR)[`LinearSVR`](https://scikit-learn.org/stable/modules/generated/sklearn.svm.LinearSVR.html#sklearn.svm.LinearSVR). 在只考虑线性核的情况下, [`LinearSVR`](https://scikit-learn.org/stable/modules/generated/sklearn.svm.LinearSVR.html#sklearn.svm.LinearSVR)[`SVR`](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVR.html#sklearn.svm.SVR) 提供一个更快的实现形式, 然而比起 [`SVR`](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVR.html#sklearn.svm.SVR)[`LinearSVR`](https://scikit-learn.org/stable/modules/generated/sklearn.svm.LinearSVR.html#sklearn.svm.LinearSVR), [`NuSVR`](https://scikit-learn.org/stable/modules/generated/sklearn.svm.NuSVR.html#sklearn.svm.NuSVR) 实现一个稍微不同的构思(formulation).细节参见 [实现细节](#148-实现细节).
与分类的类别一样, fit方法会调用参数向量 X, y, 只在 y 是浮点数而不是整数型.: 与分类的类别一样, fit方法会调用参数向量 X, y, 只在 y 是浮点数而不是整数型.:
......
...@@ -8,9 +8,9 @@ ...@@ -8,9 +8,9 @@
翻译者: 翻译者:
        [@那伊抹微笑](https://github.com/wangyangting)         [@那伊抹微笑](https://github.com/wangyangting)
[`sklearn.neighbors`](https://scikit-learn.org/stable/modules/classes.html#module-sklearn.neighbors) 提供了 neighbors-based (基于邻居的) 无监督学习以及监督学习方法的功能。 无监督的最近邻是许多其它学习方法的基础,尤其是 manifold learning (流行学习) 和 spectral clustering (谱聚类)。 neighbors-based (基于邻居的) 监督学习分为两种: [classification](#_162-最近邻分类) (分类)针对的是具有离散标签的数据,[regression](#_163-最近邻回归) (回归)针对的是具有连续标签的数据。 [`sklearn.neighbors`](https://scikit-learn.org/stable/modules/classes.html#module-sklearn.neighbors) 提供了 neighbors-based (基于邻居的) 无监督学习以及监督学习方法的功能。 无监督的最近邻是许多其它学习方法的基础,尤其是 manifold learning (流行学习) 和 spectral clustering (谱聚类)。 neighbors-based (基于邻居的) 监督学习分为两种: [classification](#162-最近邻分类) (分类)针对的是具有离散标签的数据,[regression](#163-最近邻回归) (回归)针对的是具有连续标签的数据。
最近邻方法背后的原理是从训练样本中找到与新点在距离上最近的预定数量的几个点,然后从这些点中预测标签。 这些点的数量可以是用户自定义的常量(K-最近邻学习), 也可以根据不同的点的局部密度(基于半径的最近邻学习)。距离通常可以通过任何度量来衡量: standard Euclidean distance(标准欧式距离)是最常见的选择。Neighbors-based(基于邻居的)方法被称为 *非泛化* 机器学习方法, 因为它们只是简单地”记住”了其所有的训练数据(可能转换为一个快速索引结构,如 [Ball Tree](#_1643-ball-树)[KD Tree](#_1642-k-d-树))。 最近邻方法背后的原理是从训练样本中找到与新点在距离上最近的预定数量的几个点,然后从这些点中预测标签。 这些点的数量可以是用户自定义的常量(K-最近邻学习), 也可以根据不同的点的局部密度(基于半径的最近邻学习)。距离通常可以通过任何度量来衡量: standard Euclidean distance(标准欧式距离)是最常见的选择。Neighbors-based(基于邻居的)方法被称为 *非泛化* 机器学习方法, 因为它们只是简单地”记住”了其所有的训练数据(可能转换为一个快速索引结构,如 [Ball Tree](#1643-ball-树)[KD Tree](#1642-k-d-树))。
尽管它简单,但最近邻算法已经成功地适用于很多的分类和回归问题,例如手写数字或卫星图像的场景。 作为一个 non-parametric(非参数化)方法,它经常成功地应用于决策边界非常不规则的分类情景下。 尽管它简单,但最近邻算法已经成功地适用于很多的分类和回归问题,例如手写数字或卫星图像的场景。 作为一个 non-parametric(非参数化)方法,它经常成功地应用于决策边界非常不规则的分类情景下。
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
高斯过程模型的优点如下: 高斯过程模型的优点如下:
* 预测内插了观察结果(至少对于正则核)。 * 预测内插了观察结果(至少对于正则核)。
* 预测结果是概率形式的(高斯形式的)。这样的话,人们可以计算得到经验置信区间并且据此来判断是否需要修改(在线拟合,自适应)在一些区域的预测值。 * 预测结果是概率形式的(高斯形式的)。这样的话,人们可以计算得到经验置信区间并且据此来判断是否需要修改(在线拟合,自适应)在一些区域的预测值。
* 通用性: 可以指定不同的:[内核(kernels)](#_175-高斯过程内核)。虽然该函数提供了常用的内核,但是也可以指定自定义内核。 * 通用性: 可以指定不同的:[内核(kernels)](#175-高斯过程内核)。虽然该函数提供了常用的内核,但是也可以指定自定义内核。
高斯过程模型的缺点包括: 高斯过程模型的缺点包括:
* 它们不稀疏,例如,模型通常使用整个样本/特征信息来进行预测。 * 它们不稀疏,例如,模型通常使用整个样本/特征信息来进行预测。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册