10个最频繁使用的聚类算法 Python 实现(附完整代码)

news2024/11/17 12:22:48

大家好,聚类或聚类分析是无监督学习问题。它通常被用作数据分析技术,用于发现数据中的有趣模式,例如基于其行为的客户群。

有许多聚类算法可供选择,对于所有情况,没有单一的最佳聚类算法。相反,最好探索一系列聚类算法以及每种算法的不同配置。在本教程中,你将发现如何在 python 中安装和使用顶级聚类算法。

文末提供jupyter notebook的完整代码、技术交流。

文章目录

    • 一、聚类
    • 二、聚类算法
    • 三、聚类算法示例
      • 1、库安装
      • 2、聚类数据集
      • 3、亲和力传播
      • 4、聚合聚类
      • 5、BIRCH
      • 6、DBSCAN
      • 7、K均值
      • 8、Mini-Batch K-均值
      • 9、均值漂移聚类
      • 10、OPTICS
      • 11、光谱聚类
      • 12、高斯混合模型
    • 三、总结
    • 代码&技术交流

一、聚类

聚类分析,即聚类,是一项无监督的机器学习任务。它包括自动发现数据中的自然分组。与监督学习(类似预测建模)不同,聚类算法只解释输入数据,并在特征空间中找到自然组或群集。

聚类技术适用于没有要预测的类,而是将实例划分为自然组的情况。

—源自:《数据挖掘页:实用机器学习工具和技术》2016年。

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

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

—源自:《数据挖掘页:实用机器学习工具和技术》2016年。

聚类可以作为数据分析活动提供帮助,以便了解更多关于问题域的信息,即所谓的模式发现或知识发现。例如:

  • 该进化树可以被认为是人工聚类分析的结果;

  • 将正常数据与异常值或异常分开可能会被认为是聚类问题;

  • 根据自然行为将集群分开是一个集群问题,称为市场细分。

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

聚类是一种无监督学习技术,因此很难评估任何给定方法的输出质量。

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

二、聚类算法

有许多类型的聚类算法。许多算法在特征空间中的示例之间使用相似度或距离度量,以发现密集的观测区域。因此,在使用聚类算法之前,扩展数据通常是良好的实践。

聚类分析的所有目标的核心是被群集的各个对象之间的相似程度(或不同程度)的概念。聚类方法尝试根据提供给对象的相似性定义对对象进行分组。

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

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

  1. 亲和力传播

  2. 聚合聚类

  3. BIRCH

  4. DBSCAN

  5. K-均值

  6. Mini-Batch K-均值

  7. Mean Shift

  8. OPTICS

  9. 光谱聚类

  10. 高斯混合

每个算法都提供了一种不同的方法来应对数据中发现自然组的挑战。没有最好的聚类算法,也没有简单的方法来找到最好的算法为您的数据没有使用控制实验。

在本教程中,我们将回顾如何使用来自 scikit-learn 库的这10个流行的聚类算法中的每一个。这些示例将为您复制粘贴示例并在自己的数据上测试方法提供基础。我们不会深入研究算法如何工作的理论,也不会直接比较它们。让我们深入研究一下。

三、聚类算法示例

在本节中,我们将回顾如何在 scikit-learn 中使用10个流行的聚类算法。这包括一个拟合模型的例子和可视化结果的例子。这些示例用于将粘贴复制到您自己的项目中,并将方法应用于您自己的数据。

1、库安装

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

sudo pip install scikit-learn  

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

# 检查 scikit-learn 版本  
import sklearn  
print(sklearn.__version__)  

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

0.22.1  

2、聚类数据集

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

这将有助于了解,至少在测试问题上,群集的识别能力如何。该测试问题中的群集基于多变量高斯,并非所有聚类算法都能有效地识别这些类型的群集。因此,本教程中的结果不应用作比较一般方法的基础。下面列出了创建和汇总合成聚类数据集的示例。

# 综合分类数据集  
from numpy import where  
from sklearn.datasets import make_classification  
from matplotlib import pyplot  
%matplotlib inline  
  
# 定义数据集  
X, y = make_classification(n_samples=1000,   
                           n_features=2,   
                           n_informative=2,   
                           n_redundant=0,   
                           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, 0], X[row_ix, 1])  
    # 绘制散点图  
pyplot.show()

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

在这里插入图片描述

图:已知聚类着色点的合成聚类数据集的散点图

接下来,我们可以开始查看应用于此数据集的聚类算法的示例。我已经做了一些最小的尝试来调整每个方法到数据集。

3、亲和力传播

亲和力传播包括找到一组最能概括数据的范例。

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

—源自:《通过在数据点之间传递消息》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=0,   
                           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, 0], X[row_ix, 1])  
# 绘制散点图  
pyplot.show()  

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

在这里插入图片描述

图:数据集的散点图,具有使用亲和力传播识别的聚类

4、聚合聚类

聚合聚类涉及合并示例,直到达到所需的群集数量为止。它是层次聚类方法的更广泛类的一部分,通过 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=0,   
                           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, 0], X[row_ix, 1])  
# 绘制散点图  
pyplot.show()  

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

在这里插入图片描述

图:使用聚集聚类识别出具有聚类的数据集的散点图

5、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=0,  
                           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, 0], X[row_ix, 1])  
# 绘制散点图  
pyplot.show()  

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

在这里插入图片描述

图:使用BIRCH聚类确定具有聚类的数据集的散点图

6、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=0,   
                           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, 0], X[row_ix, 1])  
# 绘制散点图  
pyplot.show()  

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

在这里插入图片描述

图:使用DBSCAN集群识别出具有集群的数据集的散点图

7、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=0,  
                           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, 0], X[row_ix, 1])  
# 绘制散点图  
pyplot.show()  

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

在这里插入图片描述

图:使用K均值聚类识别出具有聚类的数据集的散点图

8、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=0,  
                           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, 0], X[row_ix, 1])  
# 绘制散点图  
pyplot.show()  

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

在这里插入图片描述

图:带有最小批次K均值聚类的聚类数据集的散点图

9、均值漂移聚类

均值漂移聚类涉及到根据特征空间中的实例密度来寻找和调整质心。

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

—源自:《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=0,   
                           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, 0], 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=0,   
                           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, 0], 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=0,  
                           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, 0], 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=0,  
                           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, 0], X[row_ix, 1])  
# 绘制散点图  
pyplot.show()  

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

在这里插入图片描述

图:使用高斯混合聚类识别出具有聚类的数据集的散点图

三、总结

在本教程中,您发现了如何在 python 中安装和使用顶级聚类算法。具体来说,你学到了:

  • 聚类是在特征空间输入数据中发现自然组的无监督问题。

  • 有许多不同的聚类算法,对于所有数据集没有单一的最佳方法。

  • 在 scikit-learn 机器学习库的 Python 中如何实现、适合和使用10种顶级聚类算法

代码&技术交流

源码、数据、技术交流提升,均可加交流群获取,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友

方式①、添加微信号:dkl88191,备注:来自CSDN +研究方向
方式②、微信搜索公众号:Python学习与数据挖掘,后台回复:10大聚类,即可领取ipynb完整代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/125649.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

46. 批量规范化

训练深层神经网络是十分困难的,特别是在较短的时间内使他们收敛更加棘手。 本节将介绍批量规范化(batch normalization),这是一种流行且有效的技术,可持续加速深层网络的收敛速度。 再结合在 将介绍的残差块,批量规范…

盘点 | 基于小程序语法的跨端开发平台

最近,微信于2022年12月18日悄悄的推出了一款名叫“Donut”的开发平台。根据开发文档的产品介绍来看,该平台的核心是多端框架,支持使用小程序进行代码编写,并进行多端编译,从而实现多端开发。 目前Donut开发平台已经开…

Android 音视频入门/进阶教程

后续的音视频文章,都会在这里更新 作为安卓开发仔,对音视频这块,一直是比较感兴趣的,所以,本着学习和记录的态度,我也把我所学的知识记录起来,希望对想音视频感兴趣的小伙伴有所帮忙。 一. 基础…

SpringBoot maven 项目 JDBC 连接多源数据库

此方法支持 mysql&#xff0c;oracle&#xff0c;postgre&#xff0c;sqlserver等等 基本逻辑&#xff1a;1. 加载驱动; 2. 通过DriverManager传入数据库地址&#xff0c;用户名&#xff0c;密码&#xff0c;获取本地数据库连接 1. pom文件下添加依赖 <dependency><…

Android 多线程下载以及断点续传

多线程下载 在日常开发中&#xff0c;我们不可避免的会接到类似这样的需求&#xff0c;下载一个比较大的素材文件或者安装包文件&#xff0c;以此实现APP的自动更新&#xff0c;APP内的素材替换等。由于一般此类文件都比较大&#xff0c;一般会在50M以上&#xff0c;如果我们不…

高效好用的开发工具箱——猿如意

目录 前言&#xff1a; 1.我常用的功能介绍 2.主要功能chatGPT测评 3.我的使用体验和改进建议 前言&#xff1a; 猿如意是一款帮助开发的效率工具&#xff0c;集成了许多有用的工具和文档教程。帮助开发者提升开发效率&#xff0c;帮你从“问题”找到“答案”。尤其是12月…

加注超融合 星辰天合推出 XHERE V2 系列

近日&#xff0c;北京星辰天合科技股份有限公司&#xff08;简称&#xff1a;“XSKY星辰天合”&#xff09;成功举办了主题为“能存会算&#xff0c;创新不断”的 XHERE 超融合新品渠道推介会&#xff0c;正式向市场推出 XHERE V2 超融合软件平台。通过继续加大对超融合产品线的…

上云节省 35%计算资源,420 个运维人天:运满满实时计算实践和思考

摘要&#xff1a;本文整理自满帮实时数据团队 TL 欧锐&#xff0c;在 FFA 2022 行业案例专场的分享。本篇内容主要分为四个部分&#xff1a;满帮业务及平台架构介绍实时数据实时产品未来计划Tips&#xff1a;点击「阅读原文」查看原文视频&演讲 ppt01满帮业务及平台架构介绍…

数据可视化系列-01大数据可视化基础

文章目录1.概述2.大数据可视化基础2.1 数据可视化基础知识1、数据可视化简史&#xff1a;2、数据可视化是什么&#xff1a;3、数据可视化的分类&#xff1a;4、数据可视化流程&#xff1a;5、数据可视化的意义&#xff1a;2.2 认识BI和数据可视化工具1、BI的简介&#xff1a;BI…

RabbitMQ:订阅模型-匹配模式

阅模型-匹配模式&#xff0c;相比于前两种订阅模型&#xff0c;是更细致的分组&#xff0c;允许 在RoutingKey 中使用匹配符 *&#xff1a;匹配一个单词#&#xff1a;匹配0个或多个单词 RabbitMQ 订阅模型-匹配&#xff08;topics&#xff09;模式主要有以下六个角色构成&#…

FFmpeg功能命令汇总

前言 如此强大的FFmpeg&#xff0c;能够实现视频采集、视频格式转化、视频截图、视频添加水印、视频切片、视频录制、视频推流、更改音视频参数功能等。通过终端命令如何实现这些功能&#xff0c;Richy在本文做一记录&#xff0c;以备之后查阅。 注意&#xff1a;下面一一列举…

AI4DB-Cardinality Estimation

一个学期已经结束了&#xff0c;通过这篇文章总结一下自己在CE方面所学习的内容。 由于大数据技术的飞速发展&#xff0c;使数据库在查询方面面临很大的挑战。原来数据量不大的时候&#xff0c;查询可以在很快的时间内得到结果&#xff0c;但是现在动辄就是上万上千万甚至上亿的…

数据结构之红黑树的生成、添加以及删除详解(附代码)

一&#xff0c;红黑树的来历 红黑树&#xff0c;首先是一个二叉树&#xff0c;对于二叉树&#xff0c;人们为了提升它的搜索效率&#xff0c;降低时间复杂度&#xff0c;创造出了二叉搜索树&#xff0c;把时间复杂度降低为对数级&#xff08;LOGn)&#xff0c;但是会出现一些极…

zookeeper之基本使用及实现分布式锁

写在前面 本文一起看下zk的基本用法。 安装 。 1&#xff1a;数据结构 采用类似于linux系统的文件系统存储结构&#xff0c;但不同于Linux系统文件&#xff0c;zk每个节点都可以存储数据&#xff0c;结构如下图&#xff1a; 节点类型分为如下四种&#xff1a; PERSISTENT&…

RK3568平台开发系列讲解(设备驱动篇)中断下文之tasklet的使用

🚀返回专栏总目录 文章目录 一、tasklet 的概念二、tasklet 参考步骤沉淀、分享、成长,让自己和他人都能有所收获!😄 📢我们一般将中断分为上下两个部分,分为上半部,下半部。上半部完成有严格时限的工作(必须),例如回复硬件等,这些工作都是在禁止其他中断情况下进…

汽车相关概念记录

目录 一、汽车电路相关概念 1.1、两个电源 1.2、单线制 1.3、低压直流供电 1.4、常电与ACC 1.4.1、大众ACC供电开关 1.4.2、奥迪ACC开关 二、电子电路 2.1、三极管 2.1.2、截止状态 2.1.3、放大区 2.1.4、饱和区 2.1.4、实例分析 一、汽车电路相关概念 1.1、两个电…

CIO40— 2022 行平常心,做自由人 (3年之约已满)

今天的天空依然很蓝。认识还是在那个不戴口罩的夏天。 感谢IT行业给了我们帮助。 IT将交流植根于微信群&#xff0c;微信群既是信息的集散地&#xff0c;也是良好实践的方案池。在工作中碰到的问题&#xff0c;只要在IT微信群中求助&#xff0c;大家都是知无不言&#xff0c…

C# 异步编程

一 异步编程 1 异步 asynchronize 2 主要解决的事情是 ① 等待一些耗时的任务&#xff08;特别是文件&#xff0c;网络操作&#xff09;而不阻塞当前任务&#xff1b; ② 异步编程提高响应能力&#xff08;特别是UI&#xff09; 开始一个任务后&#xff0c;让任务在离感应线…

机器学习:图文详细总结马尔科夫链及其性质(附例题分析)

目录0 写在前面1 从一个实例出发2 马尔科夫链3 马氏链的基本性质4 C-K方程5 平稳状态分布6 遍历性与例题分析0 写在前面 机器学习强基计划聚焦深度和广度&#xff0c;加深对机器学习模型的理解与应用。“深”在详细推导算法模型背后的数学原理&#xff1b;“广”在分析多个机器…

canopen4.0-canfestiva移植以及同步帧发送

1.canfestival移植入 工程包: 一、canfestival系列教程之程序移植 1.1、首先准备一个hal工程 ,cubmx --------------RCC配置 -----------SYS配置 ----------时钟配置 -----canopen定时器配置(开启中断) --------------can配置波特率,接收中断