K中心聚类python csv数据集 实例
时间: 2023-08-17 14:47:04 浏览: 91
以下是一个基于CSV数据集的K中心聚类Python实现示例:
```python
import numpy as np
import pandas as pd
from scipy.spatial.distance import cdist
def kcenter_clustering(X, k):
"""
K-Center聚类算法实现
:param X: 数据集,形状为(n_samples, n_features)
:param k: 簇的数量
:return: 簇的标签,形状为(n_samples,)
"""
n_samples = X.shape[0]
# 随机选择第一个中心点
center_idx = np.random.choice(n_samples, 1)
centers = X[center_idx]
# 初始化距离矩阵
distances = cdist(X, centers, metric='euclidean')
# 初始化簇的标签
labels = np.zeros(n_samples, dtype=int)
for i in range(1, k):
# 选择距离当前中心点最远的样本作为下一个中心点
farthest_distance = np.max(distances, axis=1)
next_center_idx = np.argmax(farthest_distance)
next_center = X[next_center_idx]
centers = np.vstack((centers, next_center))
# 更新距离矩阵
next_distances = cdist(X, np.array([next_center]), metric='euclidean')
distances = np.minimum(distances, next_distances)
# 更新簇的标签
next_labels = np.ones(n_samples, dtype=int) * i
labels = np.where(next_distances < distances, next_labels, labels)
return labels
# 读取CSV数据集
data = pd.read_csv('data.csv')
X = data.iloc[:, :-1].values
# 进行K中心聚类
k = 3
labels = kcenter_clustering(X, k)
# 输出簇的标签
print(labels)
```
在该示例中,我们使用了Pandas库读取名为`data.csv`的CSV数据集。请确保该文件与代码文件在同一目录中。然后我们从数据集中提取所有特征,并将其传递给K中心聚类实现。在这里,我们假设要将数据集分成3个簇。最后输出每个点所属的簇的标签。
请注意,在实际应用中,您可能需要对数据进行预处理,例如标准化或归一化,以使得K中心聚类算法能够更好地工作。
阅读全文