机文章

聚类分析的典型算法python:最常用的聚类分析:K-means的Python实现办法 这都可以?

 

今天我们聊1聊最近互联网有什么事:

简介K-Means聚类是1种简单而实用的算法,适用于数据分析、模式识别和聚类任务它能够帮助我们从大量数据中找出有意义的组合,并理解数据的结构和特征最大的特点是,他处理的是没有标签的原始数据,相当于本身没有分组,k-means用来分组。

这就是聚类和分类的区别。

K-Means聚类算法的步骤:初始化:首先,我们需要选择要分成多少组,这个数量称为K值然后,我们随机选择K个数据点作为初始的聚类中央点分组:现在,我们将每个数据点分配到其最近的聚类中央点所在的组我们使用距离来衡量两个数据点之间的相似性,通常使用欧氏距离。

更新聚类中央:当所有数据点都被分配到组后,我们需要更新每个组的聚类中央将每个组内所有数据点的均值作为新的聚类中央重复步骤2和3:我们反复执行步骤2和3,没有断调整数据点的分组和聚类中央,直到达到停止条件停止条件可以是达到最大迭代次数或者聚类中央没有再发生明显变化。

完成聚类:1旦算法停止,每个数据点都会被分配到最终的聚类组中这些聚类中央代表了没有同的数据组聚类分析代码## Load iris datasetfrom sklearn.datasets import load_iris。

iris = load_iris()X = iris.data # Featuresy = iris.target # Target variable (species)## data spilt to train and test sets

from sklearn.model_selection import train_test_splitX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

from sklearn.cluster import KMeansfrom sklearn.metrics import silhouette_score## Optimization of model parameters

k_values = range(2, 10)silhouette_scores = []for k in k_values: kmeans = KMeans(n_clusters=k, random_state=42)

kmeans.fit(X_train) labels = kmeans.labels_ score = silhouette_score(X_train, labels) silhouette_scores.end(score)

optimal_k = k_values[silhouette_scores.index(max(silhouette_scores))]## model buildingkmeans = KMeans(n_clusters=optimal_k, random_state=42)

kmeans.fit(X_train)train_labels = kmeans.labels_test_labels = kmeans.predict(X_test)train_silhouette_score = silhouette_score(X_train, train_labels)

test_silhouette_score = silhouette_score(X_test, test_labels)print("Silhouette Score of train:", train_silhouette_score)

print("Silhouette Score of test:", test_silhouette_score)为了评估聚类性能,我们使用silhouette_score()from计算剪影分数sklearn.metrics。

剪影分数衡量每个数据点其分配的集群的匹配程度,其值范围从 到 1剪影分数越高表示集群定义越好且分离良好通过打印剪影分数,您可以评估 Iris  数据集的聚类结果的质量请记住,更高的轮廓分数表示更好的聚类性能,而负的轮廓分数表示重叠或分离没有佳的集群。

在这个案例中:>>> print("Silhouette Score of train:", train_silhouette_score)Silhouette Score of train: 0.67

>>> >>> print("Silhouette Score of test:", test_silhouette_score)Silhouette Score of test: 0.70## model plot

import matplotlib.pyplot as pltplt.scatter(X_train[:, 0], X_train[:, 1], c=train_labels)plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], marker=x, color=red)

plt.xlabel(Sepal Length)plt.ylabel(Sepal Width)plt.title(K-means Clustering Results (Training Set))plt.show()

plt.scatter(X_test[:, 0], X_test[:, 1], c=test_labels)plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], marker=x, color=red)

plt.xlabel(Sepal Length)plt.ylabel(Sepal Width)plt.title(K-means Clustering Results (Testing Set))plt.show()

感谢关注,您的支持是我没有懈的动力~

如果您觉得这篇文章写得没有错,请将其转发到您的微博或微信朋友圈。

当前非电脑浏览器正常宽度,请使用移动设备访问本站!