LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 354|回复: 0

数据聚类算法 - K-Means算法

[复制链接]
发表于 2023-12-27 15:40:13 | 显示全部楼层 |阅读模式

数据聚类算法
以下是数据聚类的几种常用算法 -
  
K-Means算法

K均值聚类算法是众所周知的数据聚类算法之一。 我们需要假设簇的数量已经是已知的。 这也被称为平面聚类。 它是一种迭代聚类算法。 该算法需要遵循以下步骤 -
  
第1步 - 需要指定所需的K个子组的数量。

第2步 - 修复群集数量并将每个数据点随机分配到群集。 换句话说,我们需要根据群集数量对数据进行分类。

在这一步中,计算聚类质心。

由于这是一种迭代算法,因此需要在每次迭代中更新K个质心的位置,直到找到全局最优值或换句话说质心到达其最佳位置。

以下代码将有助于在Python中实现K-means聚类算法。 我们将使用Scikit-learn模块。

导入必需的软件包 -

import matplotlib.pyplot as plt
import seaborn as sns; sns.set()
import numpy as np
from sklearn.cluster import KMeans

以下代码行将通过使用sklearn.dataset包中的make_blob来生成包含四个blob的二维数据集。

from sklearn.datasets.samples_generator import make_blobs

X, y_true = make_blobs(n_samples = 500, centers = 4,
            cluster_std = 0.40, random_state = 0)

可以使用下面的代码可视化数据集 -

plt.scatter(X[:, 0], X[:, 1], s = 50);
plt.show()

得到以下结果 -



在这里,将kmeans初始化为KMeans算法,以及多少个群集(n_clusters)所需的参数。

kmeans = KMeans(n_clusters = 4)

需要用输入数据训练K-means模型。

kmeans.fit(X)
y_kmeans = kmeans.predict(X)
plt.scatter(X[:, 0], X[:, 1], c = y_kmeans, s = 50, cmap = 'viridis')

centers = kmeans.cluster_centers_

下面给出的代码将根据数据绘制和可视化机器的发现,并根据要找到的聚类数量进行拟合。

plt.scatter(centers[:, 0], centers[:, 1], c = 'black', s = 200, alpha = 0.5);
plt.show()

得到以下结果 -




//更多请阅读:https://www.yiibai.com/ai_with_python/ai_with_python_unsupervised_learning_clustering.html


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表