控制点或控制点分析是无监督管理自学难题。它一般来说被用作统计数据挖掘控制技术,用作辨认出统计数据中的有意思商业模式,比如如前所述其犯罪行为的消费群。有很多控制点演算法可选配,对大部份情形,没单个的最差控制点演算法。恰好相反,最合适积极探索一连串控制点演算法和五种演算法的相同实用性。在本讲义中,你将辨认出怎样在 python 中加装和采用世界顶级控制点演算法。

顺利完成本讲义后,你将晓得:

控制点是在输出统计数据的特点内部空间中搜寻大自然组的无监督管理难题。

对大部份统计数据集,有很多相同的控制点演算法和单个的最差方式。

在 scikit-learn 机器自学库的 Python 中怎样同时实现、网络连接和采用世界顶级控制点演算法。

讲义简述

本讲义分成三部份:

一、控制点

控制点分析,即控制点,是几项无监督管理的机器自学各项任务。它主要包括手动辨认出统计数据中的大自然各组。与监督管理自学(类似于预估可视化)相同,控制点演算法只说明输出统计数据,并在特点内部空间中找出大自然组或群集。

控制点控制技术适用作于没要预估的类,而要将示例分割为大自然组的情形。

—源于:《统计数据挖掘页:新颖机器自学辅助工具和控制技术》2016年。

群集一般来说是特点内部空间中的密度区域,其中来自域的示例(观测或统计数据行)比其他群集更接近群集。群集可以具有作为样本或点特点内部空间的中心(质心),并且可以具有边界或范围。

这些群集可能反映出在从中绘制示例的域中工作的某种机制,这种机制使某些示例彼此具有比它们与其余示例更强的相似性。

—源于:《统计数据挖掘页:新颖机器自学辅助工具和控制技术》2016年。

控制点可以作为统计数据挖掘活动提供帮助,以便了解更多关于难题域的信息,即所谓的商业模式辨认出或知识辨认出。比如:

该进化树可以被认为是人工控制点分析的结果;

将正常统计数据与异常值或异常分开可能会被认为是控制点难题;

根据大自然犯罪行为将集群分开是一个集群难题,称为市场细分。

控制点还可用作特点工程的类型,其中现有的和新的示例可被映射并标记为属于统计数据中所标识的群集之一。虽然确实存在很多特定于群集的定量措施,但是对所识别的群集的评估是主观的,并且可能需要领域专家。一般来说,控制点演算法在人工合成统计数据集上与预先定义的群集进行学术比较,预计演算法会辨认出这些群集。

控制点是一种无监督管理自学控制技术,因此很难评估任何给定方式的输出质量。

—源于:《机器自学页:概率观点》2012。

二、控制点演算法

有很多类型的控制点演算法。很多演算法在特点内部空间中的示例之间采用相似度或距离度量,以辨认出密集的观测区域。因此,在采用控制点演算法之前,扩展统计数据一般来说是良好的实践。

控制点分析的大部份目标的核心是被群集的各个对象之间的相似程度(或相同程度)的概念。控制点方式尝试根据提供给对象的相似性定义对对象进行各组。

—源于:《统计自学的要素:统计数据挖掘、推理和预估》,2016年

一些控制点演算法要求您指定或猜测统计数据中要辨认出的群集的数量,而另一些演算法要求指定观测之间的最小距离,其中示例可以被视为关闭或连接。因此,控制点分析是一个迭代过程,在该过程中,对所识别的群集的主观评估被反馈回演算法实用性的改变中,直到达到期望的或适当的结果。scikit-learn 库提供了一套相同的控制点演算法选配。下面列出了10种比较流行的演算法:

亲和力传播

聚合控制点

BIRCH

DBSCAN

K-均值

Mini-Batch K-均值

Mean Shift

OPTICS

光谱控制点

高斯混合

每个演算法都提供了一种相同的方式来应对统计数据中辨认出大自然组的挑战。没最合适的控制点演算法,也没简单的方式来找出最合适的演算法为您的统计数据没采用控制实验。在本讲义中,我们将回顾怎样采用来自 scikit-learn 库的这10个流行的控制点演算法中的每一个。这些示例将为您复制粘贴示例并在自己的统计数据上测试方式提供基础。我们不会深入研究演算法怎样工作的理论,也不会直接比较它们。让我们深入研究一下。

三、控制点演算法示例

在本节中,我们将回顾怎样在 scikit-learn 中采用10个流行的控制点演算法。这主要包括一个拟合模型的例子和可视化结果的例子。这些示例用作将粘贴复制到您自己的项目中,并将方式应用作您自己的统计数据。

01 Python库加装

首先,让我们加装库。不要跳过此步骤,因为你需要确保加装了最新版本。你可以采用 pip Python 加装程序加装 scikit-learn 存储库,如下所示:

sudo pip install scikit-learn

接下来,让我们确认已经加装了库,并且您正在采用一个现代版本。运行以下脚本以输出库版本号。

检查 scikit-learn 版本

import sklearn

print(sklearn.__version__)

运行该示例时,您应该看到以下版本号或更高版本。

0.22.1

02 控制点统计数据集

我们将采用 make _ classification ()函数创建一个测试二分类统计数据集。统计数据集将有1000个示例,每个类有两个输出要素和一个群集。这些群集在两个维度上是可见的,因此我们可以用散点图绘制统计数据,并通过指定的群集对图中的点进行颜色绘制。

这将有助于了解,至少在测试难题上,群集的识别能力怎样。该测试难题中的群集如前所述多变量高斯,并非大部份控制点演算法都能有效地识别这些类型的群集。因此,本讲义中的结果不应用作比较一般方式的基础。下面列出了创建和汇总合成控制点统计数据集的示例。

综合分类统计数据集

from numpy import where

from sklearn.datasets import make_classification

from matplotlib import pyplot

定义统计数据集

X, y = make_classification(n_samples=1000, n_features=2, n_informative=2, n_redundant=, n_clusters_per_class=1, random_state=4)

为每个类的样本创建散点图

for class_value in range(2):

获取此类的示例的行索引

row_ix = where(y == class_value)

创建这些样本的散布

pyplot.scatter(X[row_ix, ], X[row_ix, 1])

绘制散点图

pyplot.show()

运行该示例将创建合成的控制点统计数据集,然后创建输出统计数据的散点图,其中点由类标签(理想化的群集)着色。我们可以清楚地看到两个相同的统计数据组在两个维度,并希望一个手动的控制点演算法可以检测这些各组。

已知控制点着色点的合成控制点统计数据集的散点图

接下来,我们可以开始查看应用作此统计数据集的控制点演算法的示例。我已经做了一些最小的尝试来调整每个方式到统计数据集。

03 亲和力传播

亲和力传播主要包括找出一组最能概括统计数据的范例。

我们设计了一种名为亲和传播的方式,它作为两对统计数据点之间相似度的输出度量。在统计数据点之间交换实值消息,直到一组高质量的范例和相应的群集逐渐出现

—源于:《通过在统计数据点之间传递消息》2007。

它是通过 AffinityPropagation 类同时实现的,要调整的主要实用性是将 阻尼 设置为0.5到1,甚至可能是首选项。

下面列出了完整的示例。

亲和力传播控制点

from numpy import unique

from numpy import where

from sklearn.datasets import make_classification

from sklearn.cluster import AffinityPropagation

from matplotlib import pyplot

定义统计数据集

X, _ = make_classification(n_samples=1000, n_features=2, n_informative=2, n_redundant=, n_clusters_per_class=1, random_state=4)

定义模型

model = AffinityPropagation(damping=0.9)

匹配模型

model.fit(X)

为每个示例分配一个集群

yhat = model.predict(X)

检索唯一群集

clusters = unique(yhat)

为每个群集的样本创建散点图

for cluster in clusters:

获取此群集的示例的行索引

row_ix = where(yhat == cluster)

创建这些样本的散布

pyplot.scatter(X[row_ix, ], X[row_ix, 1])

绘制散点图

pyplot.show()

运行该示例符合训练统计数据集上的模型,并预估统计数据集中每个示例的群集。然后创建一个散点图,并由其指定的群集着色。在这种情形下,我无法取得良好的结果。

统计数据集的散点图,具有采用亲和力传播识别的控制点

04 聚合控制点

聚合控制点涉及合并示例,直到达到所需的群集数量为止。它是层次控制点方式的更广泛类的一部份,通过 AgglomerationClustering 类同时实现的,主要实用性是 n _ clusters 集,这是对统计数据中的群集数量的估计,比如2。下面列出了完整的示例。

聚合控制点

from numpy import unique

from numpy import where

from sklearn.datasets import make_classification

from sklearn.cluster import AgglomerativeClustering

from matplotlib import pyplot

定义统计数据集

X, _ = make_classification(n_samples=1000, n_features=2, n_informative=2, n_redundant=, n_clusters_per_class=1, random_state=4)

定义模型

model = AgglomerativeClustering(n_clusters=2)

模型拟合与控制点预估

yhat = model.fit_predict(X)

检索唯一群集

clusters = unique(yhat)

为每个群集的样本创建散点图

for cluster in clusters:

获取此群集的示例的行索引

row_ix = where(yhat == cluster)

创建这些样本的散布

pyplot.scatter(X[row_ix, ], X[row_ix, 1])

绘制散点图

pyplot.show()

运行该示例符合训练统计数据集上的模型,并预估统计数据集中每个示例的群集。然后创建一个散点图,并由其指定的群集着色。在这种情形下,可以找出一个合理的各组。

采用聚集控制点识别出具有控制点的统计数据集的散点图

05 BIRCH

BIRCH 控制点( BIRCH 是平衡迭代减少的缩写,控制点采用层次结构)主要包括构造一个树状结构,从中提取控制点质心。

BIRCH 递增地和动态地群集传入的多维度量统计数据点,以尝试利用可用资源(即可用内存和时间约束)产生最差质量的控制点。

—源于:《 BIRCH :1996年大型统计数据库的高效统计数据控制点方式》

它是通过 Birch 类同时实现的,主要实用性是 threshold 和 n _ clusters 超参数,后者提供了群集数量的估计。下面列出了完整的示例。

birch控制点

from numpy import unique

from numpy import where

from sklearn.datasets import make_classification

from sklearn.cluster import Birch

from matplotlib import pyplot

定义统计数据集

X, _ = make_classification(n_samples=1000, n_features=2, n_informative=2, n_redundant=, n_clusters_per_class=1, random_state=4)

定义模型

model = Birch(threshold=0.01, n_clusters=2)

网络连接模型

model.fit(X)

为每个示例分配一个集群

yhat = model.predict(X)

检索唯一群集

clusters = unique(yhat)

为每个群集的样本创建散点图

for cluster in clusters:

获取此群集的示例的行索引

row_ix = where(yhat == cluster)

创建这些样本的散布

pyplot.scatter(X[row_ix, ], X[row_ix, 1])

绘制散点图

pyplot.show()

运行该示例符合训练统计数据集上的模型,并预估统计数据集中每个示例的群集。然后创建一个散点图,并由其指定的群集着色。在这种情形下,可以找出一个很好的各组。

采用BIRCH控制点确定具有控制点的统计数据集的散点图

06 DBSCAN

DBSCAN 控制点(其中 DBSCAN 是如前所述密度的内部空间控制点的噪声应用程序)涉及在域中寻找高密度区域,并将其周围的特点内部空间区域扩展为群集。

…我们提出了新的控制点演算法 DBSCAN 依赖于如前所述密度的概念的集群设计,以辨认出任意形状的集群。DBSCAN 只需要一个输出参数,并支持用户为其确定适当的值

-源于:《如前所述密度的噪声大内部空间统计数据库控制点辨认出演算法》,1996

它是通过 DBSCAN 类同时实现的,主要实用性是 eps 和 min _ samples 超参数。

下面列出了完整的示例。

dbscan 控制点

from numpy import unique

from numpy import where

from sklearn.datasets import make_classification

from sklearn.cluster import DBSCAN

from matplotlib import pyplot

定义统计数据集

X, _ = make_classification(n_samples=1000, n_features=2, n_informative=2, n_redundant=, n_clusters_per_class=1, random_state=4)

定义模型

model = DBSCAN(eps=0.30, min_samples=9)

模型拟合与控制点预估

yhat = model.fit_predict(X)

检索唯一群集

clusters = unique(yhat)

为每个群集的样本创建散点图

for cluster in clusters:

获取此群集的示例的行索引

row_ix = where(yhat == cluster)

创建这些样本的散布

pyplot.scatter(X[row_ix, ], X[row_ix, 1])

绘制散点图

pyplot.show()

运行该示例符合训练统计数据集上的模型,并预估统计数据集中每个示例的群集。然后创建一个散点图,并由其指定的群集着色。在这种情形下,尽管需要更多的调整,但是找出了合理的各组。

采用DBSCAN集群识别出具有集群的统计数据集的散点图

07 K均值

K-均值控制点可以是最常见的控制点演算法,并涉及向群集分配示例,以尽量减少每个群集内的方差。

本文的主要目的是描述一种如前所述样本将 N 维种群分割为 k 个集合的过程。这个叫做 K-均值的过程似乎给出了在类内方差意义上相当有效的分区。

-源于:《关于多元观测的分类和分析的一些方式》1967年

它是通过 K-均值类同时实现的,要优化的主要实用性是 n _ clusters 超参数设置为统计数据中估计的群集数量。下面列出了完整的示例。

k-means 控制点

from numpy import unique

from numpy import where

from sklearn.datasets import make_classification

from sklearn.cluster import KMeans

from matplotlib import pyplot

定义统计数据集

X, _ = make_classification(n_samples=1000, n_features=2, n_informative=2, n_redundant=, n_clusters_per_class=1, random_state=4)

定义模型

model = KMeans(n_clusters=2)

模型拟合

model.fit(X)

为每个示例分配一个集群

yhat = model.predict(X)

检索唯一群集

clusters = unique(yhat)

为每个群集的样本创建散点图

for cluster in clusters:

获取此群集的示例的行索引

row_ix = where(yhat == cluster)

创建这些样本的散布

pyplot.scatter(X[row_ix, ], X[row_ix, 1])

绘制散点图

pyplot.show()

运行该示例符合训练统计数据集上的模型,并预估统计数据集中每个示例的群集。然后创建一个散点图,并由其指定的群集着色。在这种情形下,可以找出一个合理的各组,尽管每个维度中的不等等方差使得该方式不太适合该统计数据集。

采用K均值控制点识别出具有控制点的统计数据集的散点图

08 Mini-Batch k-均值

Mini-Batch K-均值是 K-均值的修改版本,它采用小批量的样本而不是整个统计数据集对群集质心进行更新,这可以使大统计数据集的更新速度更快,并且可能对统计噪声更健壮。

…我们建议采用 k-均值控制点的迷你批量优化。与经典批处理演算法相比,这降低了计算成本的数量级,同时提供了比在线随机梯度下降更好的解决方案。

—源于:《Web-Scale K-均值控制点》2010

它是通过 MiniBatchKMeans 类同时实现的,要优化的主实用性是 n _ clusters 超参数,设置为统计数据中估计的群集数量。下面列出了完整的示例。

mini-batch k均值控制点

from numpy import unique

from numpy import where

from sklearn.datasets import make_classification

from sklearn.cluster import MiniBatchKMeans

from matplotlib import pyplot

定义统计数据集

X, _ = make_classification(n_samples=1000, n_features=2, n_informative=2, n_redundant=, n_clusters_per_class=1, random_state=4)

定义模型

model = MiniBatchKMeans(n_clusters=2)

模型拟合

model.fit(X)

为每个示例分配一个集群

yhat = model.predict(X)

检索唯一群集

clusters = unique(yhat)

为每个群集的样本创建散点图

for cluster in clusters:

获取此群集的示例的行索引

row_ix = where(yhat == cluster)

创建这些样本的散布

pyplot.scatter(X[row_ix, ], X[row_ix, 1])

绘制散点图

pyplot.show()

运行该示例符合训练统计数据集上的模型,并预估统计数据集中每个示例的群集。然后创建一个散点图,并由其指定的群集着色。在这种情形下,会找出与标准 K-均值演算法相当的结果。

带有最小批次K均值控制点的控制点统计数据集的散点图

09 均值漂移控制点

均值漂移控制点涉及到根据特点内部空间中的示例密度来寻找和调整质心。

对离散统计数据证明了递推平均移位程序收敛到最接近驻点的基础密度函数,从而证明了它在检测密度商业模式中的应用。

—源于:《Mean Shift :面向特点内部空间分析的稳健方式》,2002

它是通过 MeanShift 类同时实现的,主要实用性是带宽超参数。下面列出了完整的示例。

均值漂移控制点

from numpy import unique

from numpy import where

from sklearn.datasets import make_classification

from sklearn.cluster import MeanShift

from matplotlib import pyplot

定义统计数据集

X, _ = make_classification(n_samples=1000, n_features=2, n_informative=2, n_redundant=, n_clusters_per_class=1, random_state=4)

定义模型

model = MeanShift()

模型拟合与控制点预估

yhat = model.fit_predict(X)

检索唯一群集

clusters = unique(yhat)

为每个群集的样本创建散点图

for cluster in clusters:

获取此群集的示例的行索引

row_ix = where(yhat == cluster)

创建这些样本的散布

pyplot.scatter(X[row_ix, ], X[row_ix, 1])

绘制散点图

pyplot.show()

运行该示例符合训练统计数据集上的模型,并预估统计数据集中每个示例的群集。然后创建一个散点图,并由其指定的群集着色。在这种情形下,可以在统计数据中找出一组合理的群集。

具有均值漂移控制点的控制点统计数据集散点图

10 OPTICS

OPTICS 控制点( OPTICS 短于订购点数以标识控制点结构)是上述 DBSCAN 的修改版本。

我们为控制点分析引入了一种新的演算法,它不会显式地生成一个统计数据集的控制点;而要创建表示其如前所述密度的控制点结构的统计数据库的增强排序。此群集排序包含相当于密度控制点的信息,该信息对应于范围广泛的参数设置。

—源于:《OPTICS :排序点以标识控制点结构》,1999

它是通过 OPTICS 类同时实现的,主要实用性是 eps 和 min _ samples 超参数。下面列出了完整的示例。

optics控制点

from numpy import unique

from numpy import where

from sklearn.datasets import make_classification

from sklearn.cluster import OPTICS

from matplotlib import pyplot

定义统计数据集

X, _ = make_classification(n_samples=1000, n_features=2, n_informative=2, n_redundant=, n_clusters_per_class=1, random_state=4)

定义模型

model = OPTICS(eps=0.8, min_samples=10)

模型拟合与控制点预估

yhat = model.fit_predict(X)

检索唯一群集

clusters = unique(yhat)

为每个群集的样本创建散点图

for cluster in clusters:

获取此群集的示例的行索引

row_ix = where(yhat == cluster)

创建这些样本的散布

pyplot.scatter(X[row_ix, ], X[row_ix, 1])

绘制散点图

pyplot.show()

运行该示例符合训练统计数据集上的模型,并预估统计数据集中每个示例的群集。然后创建一个散点图,并由其指定的群集着色。在这种情形下,我无法在此统计数据集上获得合理的结果。

采用OPTICS控制点确定具有控制点的统计数据集的散点图

11 光谱控制点

光谱控制点是一类通用的控制点方式,取自线性线性代数。

最近在很多领域出现的一个有希望的替代方案是采用控制点的光谱方式。这里,采用从点之间的距离导出的矩阵的顶部特点向量。

—源于:《关于光谱控制点:分析和演算法》,2002年

它是通过 Spectral 控制点类同时实现的,而主要的 Spectral 控制点是一个由控制点方式组成的通用类,取自线性线性代数。要优化的是 n _ clusters 超参数,用作指定统计数据中的估计群集数量。下面列出了完整的示例。

spectral clustering

from numpy import unique

from numpy import where

from sklearn.datasets import make_classification

from sklearn.cluster import SpectralClustering

from matplotlib import pyplot

定义统计数据集

X, _ = make_classification(n_samples=1000, n_features=2, n_informative=2, n_redundant=, n_clusters_per_class=1, random_state=4)

定义模型

model = SpectralClustering(n_clusters=2)

模型拟合与控制点预估

yhat = model.fit_predict(X)

检索唯一群集

clusters = unique(yhat)

为每个群集的样本创建散点图

for cluster in clusters:

获取此群集的示例的行索引

row_ix = where(yhat == cluster)

创建这些样本的散布

pyplot.scatter(X[row_ix, ], X[row_ix, 1])

绘制散点图

pyplot.show()

运行该示例符合训练统计数据集上的模型,并预估统计数据集中每个示例的群集。然后创建一个散点图,并由其指定的群集着色。

在这种情形下,找出了合理的集群。

采用光谱控制点控制点识别出具有控制点的统计数据集的散点图

12 高斯混合模型

高斯混合模型总结了一个多变量概率密度函数,顾名思义就是混合了高斯概率分布。它是通过 Gaussian Mixture 类同时实现的,要优化的主要实用性是 n _ clusters 超参数,用作指定统计数据中估计的群集数量。下面列出了完整的示例。

高斯混合模型

from numpy import unique

from numpy import where

from sklearn.datasets import make_classification

from sklearn.mixture import GaussianMixture

from matplotlib import pyplot

定义统计数据集

X, _ = make_classification(n_samples=1000, n_features=2, n_informative=2, n_redundant=, n_clusters_per_class=1, random_state=4)

定义模型

model = GaussianMixture(n_components=2)

模型拟合

model.fit(X)

为每个示例分配一个集群

yhat = model.predict(X)

检索唯一群集

clusters = unique(yhat)

为每个群集的样本创建散点图

for cluster in clusters:

获取此群集的示例的行索引

row_ix = where(yhat == cluster)

创建这些样本的散布

pyplot.scatter(X[row_ix, ], X[row_ix, 1])

绘制散点图

pyplot.show()

运行该示例符合训练统计数据集上的模型,并预估统计数据集中每个示例的群集。然后创建一个散点图,并由其指定的群集着色。在这种情形下,我们可以看到群集被完美地识别。这并不奇怪,因为统计数据集是作为 Gaussian 的混合生成的。

采用高斯混合控制点识别出具有控制点的统计数据集的散点图

总结

在本讲义中,您辨认出了怎样在 python 中加装和采用世界顶级控制点演算法。具体来说,你学到了:

控制点是在特点内部空间输出统计数据中辨认出大自然组的无监督管理难题。

有很多相同的控制点演算法,对大部份统计数据集没单个的最差方式。

在 scikit-learn 机器自学库的 Python 中怎样同时实现、适合和采用世界顶级控制点演算法。

1.本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2.分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3.不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4.本站提供的源码、模板、插件等其他资源,都不包含技术服务请大家谅解!
5.如有链接无法下载或失效,请联系管理员处理!
6.本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!