动态数据库网站自己做的网站收费

当前位置: 首页 > news >正文

动态数据库网站,自己做的网站收费,2024年最新时政热点,网站建设技术支持聚类算法 性能度量#xff1a; 外部指标 jaccard系数#xff08;简称JC#xff09;FM指数#xff08;简称FMI#xff09;Rand指数#xff08;简称RI#xff09; 内部指标 DB指数#xff08;简称DBI#xff09;Dunn指数#xff08;简称DI#xff09;
距离计算 外部指标 jaccard系数简称JCFM指数简称FMIRand指数简称RI 内部指标 DB指数简称DBIDunn指数简称DI
距离计算 L p Lp Lp​ 范数欧氏距离曼哈顿距离 分类 原型聚类k-means算法学习向量量化有监督学习高斯混合聚类 都是此类型算法 假设聚类结构能够通过一组原型刻画然后对原型进行迭代更新求解。 密度聚类DBSCAN 层次聚类AGNES 试图在不同层次上对数据集进行划分分为自底向上的聚合策略和自顶向下的分拆策略
聚簇之间的距离的计算最小距离最大距离和平均距离两个簇中样本点对距离之和取平均 AGNES算法被相应称为单链接算法以最小距离为准全链接算法以最大距离为准和均链接算法 以单链接算法为例 初始时每个样本点看做一个簇找到所有簇对中最小的距离将他们合并为一个簇此时合并的簇与其他簇的距离更新为两个点到其他簇距离的最小值。上面的步骤为循环里面的步骤接着进行下一次循环找到所有簇中最短的距离然后将他们合并合并后更新簇之间的距离为【合并簇中的所有点到其他簇距离的最小值】一直进行上述循环操作直到达到指定簇的数量再停止循环。 K-MEANS算法 1 概述 聚类概念这是个无监督问题没有标签数据目的是将相似的东西分到一组。 通常使用的算法是K-MEANS算法 K-MEANS算法 需要指定簇的个数即K值质心数据的均值即向量各维取平均即可距离的度量常用欧几里得距离和余弦相似度先标准化让数据基本都是在一个比较小的范围内浮动优化目标 m i n ∑ i 1 K ∑ x ∈ C i d i s t ( c i , x ) 2 min\sum \limits
{i 1}^K \sum \limits_{x \in C_i} dist(c_i, x)^2 mini1∑K​x∈Ci​∑​dist(ci​,x)2 对于每一个簇让每一个样本到中心点的距离越小越好 c i c_i ci​代表中心点 2 K-MEANS流程 假设平面上有一系列样本点现在需要将其进行分组。 选定K2即将这些数据点分成两个组别。 随机选择两个质心分别代表两个簇计算所有样本点到两个质心的距离。每个样本点会计算出到两个质心的距离那么选择最小的距离这个样本点就归属于哪个簇。然后对于两个簇的所有样本点分别算出对应的质心这两个质心便充当新的质心再对所有样本点计算到两个新的质心的距离还是选择最小的距离那么这个样本点就归属于哪个簇。最终直到两个簇所属的样本点不在发生变化。 K-MEANS工作流程视频参考 3 优缺点 优点 简单快速适合常规数据集 缺点 K值难以确定复杂度与样本呈线性关系很难发现任意形状的簇初始的点影响很大 K-MEANS可视化演示 4 K-MEANS进行图像压缩 from skimage import io from sklearn.cluster import KMeans import numpy as npimage io.imread(1.jpg) io.imshow(image)

io.show() # 显示图片rows image.shape[0]

cols image.shape[1] print(image.shape)image image.reshape(rows * cols, 3) kmeans KMeans(n_clusters128, n_init10, max_iter100) # 簇128, 最大迭代次数100 kmeans.fit(image)clusters np.asarray(kmeans.clustercenters, dtypenp.uint8) labels np.asarray(kmeans.labels_, dtypenp.uint8) labels labels.reshape(rows, cols)print(clusters.shape) np.save(test.npy, clusters) io.imsave(compressed.jpg, labels)DBSCAN算法 1 概述 DBSCANDensity-Based Spatial Clustering of Applications with Noise具有噪声的基于密度的聚类方法是一种基于密度的空间聚类算法。该算法将具有足够密度的区域划分为簇并在具有噪声的空间数据库中发现任意形状的簇DBSCAN算法将簇定义为密度相连的点的最大集合。 核心对象若某个点的密度达到算法设定的阈值则称其为核心点。即r邻域内的点的数量不小于minPts 基于以上密度的定义我们可以将样本集中的点划分为以下三类 核心点在半径r区域内含有超过MinPts数目最小数目的点称为核心点边界点在半径r区域内点的数量小于MinPts数目但是是核心点的直接邻居噪声点既不是核心点也不是边界点的点 噪声点是不会被聚类纳入的点边界点与核心点组成聚类的“簇”。 一些概念 直接密度可达密度直达如果p在q的r领域内且q是一个核心点对象则称对象p从对象q出发时直接密度可达反之不一定成立即密度直达不满足对称性。密度可达如果存在一个对象链q–e–a–k–l–p任意相邻两个对象间都是密度直达的则称对象p由对象q出发密度可达。密度可达满足传递性。密度相连对于 x i x_i xi​ 和 x j x_j xj​ ,如果存在核心对象样本 x k x_k xk​ 使 x i x_i xi​ 和 x j x_j xj​ 均由 x k x_k xk​ 密度可达则称 x i x_i xi​ 和 x j x_j xj​ 密度相连。密度相连关系满足对称性。 核心点能够连通密度可达它们构成的以r为半径的圆形邻域相互连接或重叠这些连通的核心点及其所处的邻域内的全部点构成一个簇。 2 原理 DBSCAN通过检查数据集中每个点的r邻域来搜索簇如果点p的r邻域包含多于MinPts个点则创建一个以p为核心对象的簇然后 DBSCAN迭代的聚集从这些核心对象直接密度可达的对象这个过程可能涉及一些密度可达簇的合并当没有新的带你添加到任何簇时迭代过程结束。 优缺点 优点基于密度定义可以对抗噪声能处理任意形状和大小的簇 缺点当簇的密度变化太大时候聚类得到的结果会不理想对于高维问题密度定义也是一个比较麻烦的问题。
3 实现 import numpy as np import matplotlib.pyplot as plt from sklearn import datasets import matplotlib.colors# 创建Figure fig plt.figure()

用来正常显示中文标签

matplotlib.rcParams[font.sans-serif] [uSimHei]

用来正常显示负号

matplotlib.rcParams[axes.unicode_minus] FalseX1, y1 datasets.make_circles(n_samples5000, factor.6,noise.05) X2, y2 datasets.make_blobs(n_samples1000, n_features2,centers[[1.2,1.2]], cluster_std[[.1]],random_state9)# 原始点的分布 ax1 fig.add_subplot(311) X np.concatenate((X1, X2)) plt.scatter(X[:, 0], X[:, 1], markero) plt.title(u原始数据分布) plt.sca(ax1)# K-means聚类 from sklearn.cluster import KMeans ax2 fig.add_subplot(312) y_pred KMeans(n_clusters3, random_state9).fit_predict(X) plt.scatter(X[:, 0], X[:, 1], cy_pred) plt.title(uK-means聚类) plt.sca(ax2)# DBSCAN聚类 from sklearn.cluster import DBSCAN ax3 fig.add_subplot(313) y_pred DBSCAN(eps 0.1, min_samples 10).fit_predict(X) plt.scatter(X[:, 0], X[:, 1], cy_pred) plt.title(uDBSCAN聚类) plt.sca(ax3)plt.show()