公司响应式网站,个人博客页面设计图,单位网站建设的重要性,河北农业建设信息网站1、概要 本篇学习AI人工智能机器学习之聚类分析#xff0c;以KMeans、AgglomerativeClustering、DBSCAN为例#xff0c;从代码层面讲述机器学习中的聚类分析。
2、聚类分析 - 简介
聚类分析是一种无监督学习的方法#xff0c;用于将数据集中的样本划分为不同的组#xff…1、概要 本篇学习AI人工智能机器学习之聚类分析以KMeans、AgglomerativeClustering、DBSCAN为例从代码层面讲述机器学习中的聚类分析。
2、聚类分析 - 简介
聚类分析是一种无监督学习的方法用于将数据集中的样本划分为不同的组簇使得同一组中的样本相似度较高而不同组之间的样本相似度较低。
sklearn.cluster提供了多种聚类算法
K均值聚类K-Means Clustering最常用的聚类算法之一通过迭代找到 K 个簇的中心并将样本分配给离其最近的中心从而形成 K 个簇。层次聚类Agglomerative Clustering通过构建一个树形结构树状图来表示数据的聚类过程生成不同层次的聚类结果。DBSCAN基于密度的聚类通过测量数据点的密度来识别簇能够发现任意形状的簇并且可以有效处理噪声。
本篇以三个示例讲述聚类分析使用方法
示例1对数据集进行K均值聚类分析示例2对数据集进行层次聚类分析示例3对数据集进行基于密度的聚类分析
本篇相关资料代码参见AI人工智能机器学习相关知识资源及使用的示例代码
3、聚类分析
3.1、安装依赖 python安装机器学习库 pip install scikit-learn 3.2、示例1 对数据集进行K均值聚类分析
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score# 生成样本数据
X, y make_blobs(n_samples300, centers4, cluster_std0.60, random_state0)# 创建 KMeans 模型
kmeans KMeans(n_clusters4, initk-means, max_iter300, n_initauto)
kmeans.fit(X)# 获取聚类结果
y_kmeans kmeans.predict(X)# 评估聚类效果 - 轮廓系数Silhouette Score衡量样本与其聚类的相似性。值范围在 [-1, 1] 之间值越大表示聚类效果越好。
score silhouette_score(X, y_kmeans)
print(fSilhouette Score: {score:.3f})# 可视化结果
plt.scatter(X[:, 0], X[:, 1], cy_kmeans, s50, cmapviridis)
centers kmeans.cluster_centers_
plt.scatter(centers[:, 0], centers[:, 1], cred, s200, alpha0.75, markero)
plt.title(K-Means Clustering)
plt.show()
运行上述代码的输出
Silhouette Score: 0.682 参数释义
n_clusters指定要形成的簇的数量。init初始化簇中心的方法常用的有 ‘k-means’默认和 ‘random’。max_iter最大迭代次数。n_init运行算法的次数选择最佳结果。
3.3、示例2对数据集进行层次聚类分析
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
from sklearn.cluster import AgglomerativeClustering
from sklearn.metrics import silhouette_score# 生成样本数据
X, y make_blobs(n_samples300, centers4, cluster_std0.60, random_state0)# 创建层次聚类模型
agg_clustering AgglomerativeClustering(n_clusters4, metriceuclidean, linkageward,)
y_agg agg_clustering.fit_predict(X)# 评估聚类效果 - 轮廓系数Silhouette Score衡量样本与其聚类的相似性。值范围在 [-1, 1] 之间值越大表示聚类效果越好。
score silhouette_score(X, y_kmeans)
print(fSilhouette Score: {score:.3f})# 可视化结果
plt.scatter(X[:, 0], X[:, 1], cy_agg, s50, cmapviridis)
plt.title(Agglomerative Clustering)
plt.show()
运行上述代码的输出
Silhouette Score: 0.682参数释义
n_clusters指定要形成的簇的数量。metric计算样本之间距离的方式常用的有 ‘euclidean’欧氏距离和 ‘manhattan’曼哈顿距离。linkage聚类的连接方式常用的有 ‘ward’默认、‘complete’、‘average’ 和 ‘single’。
3.4、示例3对数据集进行基于密度的聚类分析
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
from sklearn.cluster import DBSCAN
from sklearn.metrics import silhouette_score# 生成样本数据
X, y make_blobs(n_samples300, centers4, cluster_std0.60, random_state0)# 创建 DBSCAN 模型
dbscan DBSCAN(eps0.5, min_samples5)
y_dbscan dbscan.fit_predict(X)# 评估聚类效果 - 轮廓系数Silhouette Score衡量样本与其聚类的相似性。值范围在 [-1, 1] 之间值越大表示聚类效果越好。
score silhouette_score(X, y_kmeans)
print(fSilhouette Score: {score:.3f})# 可视化结果
plt.scatter(X[:, 0], X[:, 1], cy_dbscan, s50, cmapviridis)
plt.title(DBSCAN Clustering)
plt.show()运行上述代码的输出
Silhouette Score: 0.682参数释义
eps指定形成簇的最大距离邻域的半径。min_samples形成一个簇所需的最小样本数。
4、 总结
本篇以KMeans、AgglomerativeClustering、DBSCAN为例从代码层面讲述机器学习中的聚类分析,同时使用轮廓系数评估了聚类效果。每种算法都有其独特的优缺点适用于不同类型的数据集。在实际应用中选择合适的聚类算法和优化参数是获得良好聚类效果的关键。通过可视化和评估指标可以更好地理解聚类结果的质量。