python聚类算法总结及对应实例代码
时间: 2023-06-29 13:09:51 浏览: 118
聚类算法是一种常用的无监督学习方法,可以将数据集分成若干个组,每个组内的数据具有相似性。下面是一些常用的聚类算法及对应实例代码。
1. K-Means算法
K-Means算法是一种基于距离的聚类算法,其核心思想是将数据集分成K个簇,使得每个数据点都属于离其最近的簇。K-Means算法的步骤如下:
1. 随机选择K个质心(簇中心)。
2. 将每个数据点分配到距离其最近的质心所在的簇中。
3. 重新计算每个簇的质心。
4. 重复步骤2和3,直到簇中心不再改变或达到最大迭代次数。
下面是K-Means算法的Python实现代码:
```python
from sklearn.cluster import KMeans
# 创建数据集
X = [[1, 2], [1, 4], [1, 0], [4, 2], [4, 4], [4, 0]]
# 创建K-Means模型
kmeans = KMeans(n_clusters=2)
# 训练模型
kmeans.fit(X)
# 预测结果
y_pred = kmeans.predict(X)
# 输出聚类结果
print(y_pred)
```
2. 层次聚类算法
层次聚类算法是一种划分聚类算法,其核心思想是从单个数据点开始,将最相似的点组合成一个簇,逐步合并成更大的簇,直到所有数据点都被合并到同一个簇中。层次聚类算法有两种方式:自下而上的聚合和自上而下的分裂。下面是自下而上的聚合层次聚类算法的Python实现代码:
```python
from scipy.cluster.hierarchy import dendrogram, linkage
import matplotlib.pyplot as plt
# 创建数据集
X = [[1, 2], [1, 4], [1, 0], [4, 2], [4, 4], [4, 0]]
# 计算距离矩阵
Z = linkage(X, 'ward')
# 绘制树状图
plt.figure(figsize=(10, 5))
dendrogram(Z)
plt.show()
```
3. DBSCAN算法
DBSCAN算法是一种基于密度的聚类算法,其核心思想是将密度相连的数据点划分为同一个簇。DBSCAN算法的步骤如下:
1. 选择一个未访问的数据点。
2. 如果该点周围的密度达到预设的阈值,则将其作为一个新的簇的中心点,并将其密度可达的所有点加入该簇。
3. 重复步骤2,直到所有数据点都被访问。
下面是DBSCAN算法的Python实现代码:
```python
from sklearn.cluster import DBSCAN
# 创建数据集
X = [[1, 2], [1, 4], [1, 0], [4, 2], [4, 4], [4, 0]]
# 创建DBSCAN模型
dbscan = DBSCAN(eps=1, min_samples=2)
# 训练模型
dbscan.fit(X)
# 预测结果
y_pred = dbscan.labels_
# 输出聚类结果
print(y_pred)
```
以上就是几种常用的聚类算法及对应实例代码。
阅读全文