K近邻(KNN)聚类分析

一、KNN聚类算法

在机器学习领域,KNN(K-Nearest Neighbor,K最近邻)是一种常用的分类和回归算法。KNN算法通过测量不同特征值之间的距离进行分类。KNN聚类算法是KNN算法的一种变化,其原理是将数据点分组为具有相似属性的簇。

二、KNN是聚类还是分类算法

KNN算法既可以用于聚类,也可以用于分类。在KNN分类中,KNN算法根据一个预测样本与其最近邻点的距离来确定预测样本所属的类别。在KNN聚类中,KNN算法将数据点分成具有相似属性的簇。

三、KNN聚类案例

下面来看一个KNN聚类的实例,该实例将对动物进行聚类。案例为矩阵,其中每行表示一个动物,每列表示一个属性。我们将使用KNN算法将同类动物分为同一个簇。

import numpy as np
from sklearn.cluster import KMeans, SpectralClustering, AgglomerativeClustering
from sklearn import datasets

data = datasets.load_sample_image('china.jpg')
data = data.reshape((data.shape[0]*data.shape[1], 3))[:1000]  # 将颜色图像转化为二维数组
kmeans = KMeans(n_clusters=5).fit(data)  # KMeans聚类算法
spectral = SpectralClustering(n_clusters=5, eigen_solver='arpack', affinity="nearest_neighbors").fit(data)  # SpectralClustering谱聚类
ward = AgglomerativeClustering(n_clusters=5).fit(data)  # AgglomerativeClustering基于分层的聚类

# 转化数据并显示
kmeans_img = np.zeros_like(data)
spectral_img = np.zeros_like(data)
ward_img = np.zeros_like(data)
for i, label in enumerate(kmeans.labels_):
    kmeans_img[i] = kmeans.cluster_centers_[label]
for i, label in enumerate(spectral.labels_):
    spectral_img[i] = kmeans.cluster_centers_[label]
for i, label in enumerate(ward.labels_):
    ward_img[i] = kmeans.cluster_centers_[label]

kmeans_img = kmeans_img.reshape((427, 640, 3))
spectral_img = spectral_img.reshape((427, 640, 3))
ward_img = ward_img.reshape((427, 640, 3))

import matplotlib.pyplot as plt
f, axarr = plt.subplots(2, 2)
axarr[0, 0].imshow(data.reshape((427, 640, 3)))
axarr[0, 1].imshow(kmeans_img)
axarr[1, 0].imshow(spectral_img)
axarr[1, 1].imshow(ward_img)
plt.show()

四、KNN聚类原理

KNN聚类与KNN分类类似,都是基于距离计算的。在KNN聚类中,距离通常用欧几里得距离度量。KNN聚类算法的原理是,对于每个数据点,它的簇由与其最近的K个点(邻居)的多数派决定。

五、NMF聚类

NMF(Non-negative Matrix Factorization,非负矩阵分解)是一种用于聚类和分解数据的矩阵分解方法。它可以被认为是一种特征提取方法,能够从数据中提取有用的特征。NMF聚类算法的思想是,在数据的非负矩阵中寻找分量,这些分量可以被认为是簇。

六、KNN聚类分析

KNN聚类算法具有较高的灵活性和准确度,但对于高维数据集而言,它的执行效率较低。如果数据集的维数很高,KNN聚类算法的复杂度会随着维数的增长而呈指数级增长。此时,可以使用NMF聚类算法。

七、KNN聚类算法图像处理

KNN聚类算法可以用于图像处理。在图像聚类中,我们可以将图像像素作为向量进行处理。使用KNN聚类算法将具有相似像素值的像素点聚为一类,并将其表示为同一种颜色。以此可以实现图像的分割、压缩和修复等功能。

八、KNN聚类算法例题

以下是一个使用KNN聚类算法的例题:

import numpy as np
from sklearn import cluster, datasets, mixture
import matplotlib.pyplot as plt

n_samples = 1500

# 创建螺旋形数据
noisy_moons = datasets.make_moons(n_samples=n_samples, noise=.05)
X = noisy_moons[0]

# KNN聚类
kmeans = cluster.KMeans(n_clusters=2)
kmeans.fit(X)

# 绘制分类结果
plt.scatter(X[:, 0], X[:, 1], s=10, c=kmeans.labels_)
plt.show()

九、KNN聚类算法分析

KNN聚类算法是一种非常简单的聚类算法,但是它存在一些明显的缺点。首先,它的执行效率较低,对于高维数据而言,其复杂度会呈指数级增长。其次,它需要根据数据集的特点选择不同的K值,并且K值对于聚类结果的影响很大。

在实际应用中,KNN聚类算法通常用于小型数据集,或者用于对数据进行初步处理。对于大型数据集,我们通常需要使用更加高效的聚类算法,比如DBSCAN、层次聚类和谱聚类。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/235535.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-12 11:55
下一篇 2024-12-12 11:55

相关推荐

  • K 近邻法(K-Nearest Neighbor)

    一、K 近邻法是什么? K 近邻法是一种基本的分类和回归算法,它是一种最简单的机器学习算法之一。该算法通过计算一个点周围 K 个最近邻居的距离来确定该点的类别或值。基于 K 近邻法…

    编程 2025-02-05
  • 最近邻插值

    一、插值方法介绍 在计算机图形学中,图像放大实际上是一种插值方法,最近邻插值是其中最简单的一种,也是最容易理解的一种方法。该方法的思想是,根据已知的数据点,找到离待插值点最近的一个…

    编程 2025-01-20
  • k近邻算法原理详解

    一、k近邻算法的原理及计算步骤 k近邻算法是一种用于分类和回归的机器学习算法,它的本质是找出与某个数据点最近的k个数据点,利用它们来确定该数据点的分类或回归值。 具体计算步骤如下:…

    编程 2024-12-07
  • 了解KNN算法:什么是KNN算法及其实现步骤?

    一、KNN算法是什么? KNN(K-近邻算法)是一种常用的分类与回归算法,在现实生活中得到广泛应用。它被广泛应用于语音识别、图像识别、在线问答等领域。 KNN算法的核心思想是将待分…

    编程 2024-12-03
  • KNN和KMeans的区别

    一、KNN和KMeans的区别是什么 KNN(K-Nearest Neighbor)和KMeans都是数据挖掘中常用的算法,但它们的应用场景和处理方式是不同的。 KNN是一种基于距…

    编程 2024-12-02

发表回复

登录后才能评论