🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 非参数统计的温和介绍 > 原文: [https://machinelearningmastery.com/a-gentle-introduction-to-nonparametric-statistics/](https://machinelearningmastery.com/a-gentle-introduction-to-nonparametric-statistics/) 统计和统计方法领域的很大一部分专用于已知分布的数据。 我们已经知道或可以轻松识别分布的数据样本称为参数数据。通常,参数用于指代在常见用法中从高斯分布中提取的数据。分布未知或不易识别的数据称为非参数。 在使用非参数数据的情况下,可以使用专门的非参数统计方法来丢弃有关分布的所有信息。因此,这些方法通常被称为无分秘籍法。 在本教程中,您将发现非参数统计信息及其在应用机器学习中的作用。 完成本教程后,您将了解: * 参数和非参数数据之间的区别。 * 如何对数据进行排名以丢弃有关数据分布的所有信息。 * 可用于排名数据的统计方法示例。 让我们开始吧。 ![A Gentle Introduction to Nonparametric Statistics](img/899415b2c15556ca5dfe3978c81270c8.jpg) 非参数统计的温和介绍 [Daniel Hartwig](https://www.flickr.com/photos/dwhartwig/34862884831/) 的照片,保留一些权利。 ## 教程概述 本教程分为4个部分;他们是: 1. 参数数据 2. 非参数数据 3. 排名数据 4. 使用排名数据 ## 参数数据 参数数据是从已知数据分布中提取的数据样本。 这意味着我们已经知道了分布,或者我们已经确定了分布,并且我们知道分布的参数。通常,参数是从高斯分布中提取的实值数据的简写。这是一个有用的简写,但严格来说这并不完全准确。 如果我们有参数数据,我们可以使用参数方法。继续使用高斯参数意义的简写。如果我们有参数数据,我们可以利用为假设高斯分布的数据开发的整套统计方法,例如: * 摘要统计。 * 变量之间的相关性。 * 比较均值的显着性检验。 一般来说,我们更喜欢使用参数化数据,甚至可以使用数据参数化的数据准备方法,例如数据转换,这样我们就可以利用这些易于理解的统计方法。 ## 非参数数据 不符合已知或易于理解的分布的数据称为非参数数据。 由于多种原因,数据可能是非参数的,例如: * 数据不是实数值,而是序数,间隔或其他形式。 * 数据是实值的,但不符合很好理解的形状。 * 数据几乎是参数化的,但包含异常值,多个峰值,移位或其他一些特征。 我们可以使用一套方法用于非参数数据,称为非参数统计方法。实际上,大多数参数方法都具有等效的非参数版本。 一般而言,非参数方法的结果不如其参数方法的结果强大,即因为它们必须被推广以适用于所有类型的数据。我们仍然可以使用它们进行推理并对结果和结果做出声明,但它们与参数方法的类似声明不具有相同的权重。有关分发的信息将被丢弃。 在序数或区间数据的情况下,非参数统计是唯一可以使用的统计类型。对于实值数据,当您尝试对不符合熟悉的高斯分布的数据进行声明时,应用机器学习中需要非参数统计方法。 ## 排名数据 在可以应用非参数统计方法之前,必须将数据转换为等级格式。 因此,期望排名格式的数据的统计方法有时被称为排名统计,例如排名相关和排名统计假设检验。 排名数据正如其名称所示。程序如下: * 按升序对样本中的所有数据进行排序。 * 为数据样本中的每个唯一值分配1到N的整数等级。 例如,假设我们有以下数据样本,以列形式显示: ```py 0.020 0.184 0.431 0.550 0.620 ``` 我们可以按如下方式排序: ```py 0.020 0.184 0.431 0.550 0.620 ``` 然后为每个值分配一个等级,从1开始: ```py 1 = 0.021055 2 = 0.404622 3 = 0.488733 4 = 0.618510 5 = 0.832803 ``` 然后,我们可以将此过程应用于另一个数据样本,并开始使用非参数统计方法。 对于特殊情况,例如处理关系,使用反向排名和使用小数排名得分,此过程有不同的变化,但一般属性成立。 SciPy库提供 _rankdata()_函数来对数值数据进行排名,这支持排名的许多变化。 下面的示例演示了如何对数值数据集进行排名。 ```py from numpy.random import rand from numpy.random import seed from scipy.stats import rankdata # seed random number generator seed(1) # generate dataset data = rand(1000) # review first 10 samples print(data[:10]) # rank data ranked = rankdata(data) # review first 10 ranked samples print(ranked[:10]) ``` 首先运行该示例从统一分布生成1,000个随机数的样本,然后对数据样本进行排名并打印结果。 ```py [4.17022005e-01 7.20324493e-01 1.14374817e-04 3.02332573e-01 1.46755891e-01 9.23385948e-02 1.86260211e-01 3.45560727e-01 3.96767474e-01 5.38816734e-01] [408\. 721\. 1\. 300\. 151\. 93\. 186\. 342\. 385\. 535.] ``` ## 使用排名数据 您可以使用统计工具来检查样本数据是否适合给定的分布。 例如,如果我们将非参数数据作为看起来不是高斯的数据,那么您可以使用统计方法来量化高斯数据样本的方式,并在数据未通过这些测试时使用非参数方法。 正常性测试的统计方法的三个例子,如所谓: * Shapiro-Wilk测试。 * Kolmogorov-Smirnov测试。 * 安德森 - 达林测试 决定使用非参数统计信息后,必须对数据进行排名。 实际上,您用于推理的大多数工具都会自动执行样本数据的排名。然而,重要的是要了解在执行测试之前如何转换样本数据。 在应用机器学习中,您可以使用非参数统计方法解决有关数据的两种主要问题。 ### 变量之间的关系 量化变量之间依赖性的方法称为相关方法。 您可以使用的两种非参数统计相关方法是: * 斯皮尔曼的等级相关系数。 * 肯德尔等级相关系数。 ### 比较样本均值 量化两个群体之间的平均值是否显着不同的方法称为统计显着性检验。 您可以使用的三个非参数统计显着性检验包括: * 弗里德曼测试。 * Mann-Whitney U测试。 * Wilcoxon签名等级测试。 ## 扩展 本节列出了一些扩展您可能希望探索的教程的想法。 * 列出三个您认为可能需要在应用机器学习项目中使用非参数统计方法的示例。 * 开发自己的示例来演示 _rankdata()_函数的功能。 * 编写自己的函数来对提供的单变量数据集进行排名。 如果你探索任何这些扩展,我很想知道。 ## 进一步阅读 如果您希望深入了解,本节将提供有关该主题的更多资源。 ### 图书 * [所有非参数统计](http://amzn.to/2oGv2A6) * [实用非参数统计](http://amzn.to/2CXUe9y) * [应用非参数统计](http://amzn.to/2t9iMN6) ### API * [numpy.random.seed()API](https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.seed.html) * [numpy.random.rand()API](https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.rand.html) * [scipy.stats.rankdata()API](http://scipy.github.io/devdocs/generated/scipy.stats.rankdata.html) ### 用品 * 维基百科上的[参数统计](https://en.wikipedia.org/wiki/Parametric_statistics) * [维基百科上的非参数统计](https://en.wikipedia.org/wiki/Nonparametric_statistics) * [维基百科排名](https://en.wikipedia.org/wiki/Ranking) * [维基百科上的排名相关](https://en.wikipedia.org/wiki/Rank_correlation) * [维基百科的正常性测试](https://en.wikipedia.org/wiki/Normality_test) ## 摘要 在本教程中,您发现了非参数统计信息及其在应用机器学习中的作用。 具体来说,你学到了: * 参数和非参数数据之间的区别。 * 如何对数据进行排名以丢弃有关数据分布的所有信息。 * 可用于排名数据的统计方法示例。 你有任何问题吗? 在下面的评论中提出您的问题,我会尽力回答。