数据聚类算法
以下是数据聚类的几种常用算法 -
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
|