网格聚类算法python代码
时间: 2023-07-23 11:10:33 浏览: 260
网格聚类算法(Grid-based clustering algorithm)是一种基于网格划分的聚类方法。下面是一个简单的Python代码示例,用于实现网格聚类算法:
```python
import numpy as np
# 定义网格类
class Grid:
def __init__(self, x, y):
self.x = x
self.y = y
self.points = []
# 定义网格聚类算法
def grid_clustering(data, grid_size):
# 计算数据范围
min_x, max_x = np.min(data[:, 0]), np.max(data[:, 0])
min_y, max_y = np.min(data[:, 1]), np.max(data[:, 1])
# 计算网格数量
num_x = int((max_x - min_x) / grid_size) + 1
num_y = int((max_y - min_y) / grid_size) + 1
# 初始化网格
grids = [[Grid(x, y) for y in range(num_y)] for x in range(num_x)]
# 将数据点分配到网格
for point in data:
x_idx = int((point[0] - min_x) / grid_size)
y_idx = int((point[1] - min_y) / grid_size)
grids[x_idx][y_idx].points.append(point)
# 获取聚类结果(非空网格)
clusters = []
for row in grids:
for grid in row:
if len(grid.points) > 0:
cluster = np.array(grid.points)
clusters.append(cluster)
return clusters
# 生成随机数据
np.random.seed(0)
data = np.random.rand(100, 2)
# 进行网格聚类
clusters = grid_clustering(data, grid_size=0.1)
# 打印聚类结果
for i, cluster in enumerate(clusters):
print(f"Cluster {i+1}:")
print(cluster)
print()
```
上述代码中,首先定义了一个`Grid`类,用于表示网格的坐标和其中包含的数据点。然后定义了`grid_clustering`函数,实现了网格聚类算法。在该函数中,首先计算了数据的范围,并根据网格大小计算了网格的数量。然后初始化了网格列表,并将数据点分配到对应的网格中。最后返回非空网格作为聚类结果。
最后,通过生成随机数据,调用`grid_clustering`函数进行网格聚类,并打印聚类结果。根据需要,可以调整数据和网格大小来测试不同的情况。
阅读全文