kmeans聚类算法代码
时间: 2023-09-11 15:04:03 浏览: 108
以下是Python实现的k-means聚类算法代码:
```
import numpy as np
def kmeans(X, k, max_iterations=100):
# 随机初始化聚类中心
centroids = X[np.random.choice(len(X), k, replace=False)]
for i in range(max_iterations):
# 分配样本到最近的聚类中心
distances = np.sqrt(((X - centroids[:, np.newaxis])**2).sum(axis=2))
cluster_assignment = np.argmin(distances, axis=0)
# 更新聚类中心
for j in range(k):
centroids[j] = X[cluster_assignment == j].mean(axis=0)
return centroids, cluster_assignment
```
其中,X是一个n×m的矩阵,表示有n个样本,每个样本有m个特征。k表示聚类的数目,max_iterations表示最大迭代次数。函数返回聚类中心和每个样本所属的聚类编号。
相关问题
kmeans聚类算法代码python
以下是kmeans聚类算法的Python代码:
```
import numpy as np
import matplotlib.pyplot as plt
def kmeans(X, K, max_iters=100):
centroids = X[np.random.choice(len(X), K, replace=False)]
for i in range(max_iters):
C = np.argmin(np.sqrt(((X - centroids[:, np.newaxis])**2).sum(axis=2)), axis=)
new_centroids = np.array([X[C == k].mean(axis=) for k in range(K)])
if np.allclose(centroids, new_centroids):
break
centroids = new_centroids
return C, centroids
# 生成数据
np.random.seed()
X = np.vstack([np.random.randn(100, 2) + [2, 2], np.random.randn(100, 2) + [-2, -2], np.random.randn(100, 2) + [2, -2]])
# 聚类
C, centroids = kmeans(X, 3)
# 可视化
plt.scatter(X[:, ], X[:, 1], c=C)
plt.scatter(centroids[:, ], centroids[:, 1], marker='x', s=200, linewidths=3, color='r')
plt.show()
```
该代码实现了kmeans聚类算法,其中X为输入数据,K为聚类数目,max_iters为最大迭代次数。函数返回聚类结果C和聚类中心centroids。代码中还包括了一个简单的数据生成和可视化过程。
kmeans聚类算法代码jupyter
K-means是一种常用的无监督机器学习算法,用于数据集的分群。下面是一个简单的Python KMeans聚类算法的Jupyter Notebook代码示例:
```python
# 导入必要的库
import numpy as np
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# 假设我们有一个二维数据集
X = np.random.rand(100, 2) # 生成随机数据点
# 初始化KMeans模型
kmeans = KMeans(n_clusters=3)
# 训练模型
kmeans.fit(X)
# 预测数据点所属的簇
labels = kmeans.labels_
# 绘制原始数据点和聚类结果
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis')
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s=300, c='red', label='Centroids')
plt.title('K-means Clustering')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.legend()
plt.show()
#
阅读全文