kmeans聚类算法python,具体案例代码
时间: 2023-10-17 16:07:35 浏览: 82
以下是一个KMeans聚类算法的Python实现示例代码:
```python
from sklearn.cluster import KMeans
import numpy as np
#生成随机数据
data = np.random.rand(100,2)
#将数据聚类分为3类
kmeans = KMeans(n_clusters=3, random_state=0).fit(data)
#输出每个样本所属的聚类
print(kmeans.labels_)
#输出聚类中心点的位置
print(kmeans.cluster_centers_)
```
本示例使用了Python的scikit-learn库实现KMeans聚类算法,将随机生成的100个样本数据分为3类,并输出每个样本所属的聚类以及聚类中心点的位置。
相关问题
kmeans聚类算法python案例
kmeans聚类算法是一种常用的无监督学习算法,可以将数据集分成k个不同的簇。Python中有很多库可以实现kmeans聚类算法,比如scikit-learn和numpy等。下面是一个使用scikit-learn库实现kmeans聚类算法的Python案例:
```python
from sklearn.cluster import KMeans
import numpy as np
# 生成随机数据
X = np.random.rand(100, 2)
# 定义kmeans模型
kmeans = KMeans(n_clusters=3)
# 训练模型
kmeans.fit(X)
# 预测结果
y_pred = kmeans.predict(X)
# 打印结果
print(y_pred)
```
在这个例子中,我们生成了一个包含100个样本的二维数据集,然后使用KMeans模型将其分成3个簇。最后,我们打印出每个样本所属的簇的标签。
kmeans聚类算法python代码
下面是使用Python实现K-means聚类算法的示例代码:
``` python
import numpy as np
import matplotlib.pyplot as plt
# 生成随机数据
def create_data():
X = np.random.randn(200, 2)
X[:50, :] += np.array([-2, 2])
X[50:100, :] += np.array([2, 2])
X[100:150, :] += np.array([-2, -2])
X[150:, :] += np.array([2, -2])
return X
# 计算两点之间的距离
def euclidean_distance(x1, x2):
return np.sqrt(np.sum((x1 - x2) ** 2))
class KMeans:
def __init__(self, K=2, max_iters=100):
self.K = K
self.max_iters = max_iters
# 初始化聚类中心
def initialize_centers(self, X):
self.centers = X[np.random.choice(len(X), self.K, replace=False)]
# 分配数据点到最近的聚类中心
def assign_clusters(self, X):
clusters = [[] for _ in range(self.K)]
for i, x in enumerate(X):
distances = [euclidean_distance(x, center) for center in self.centers]
closest_center = np.argmin(distances)
clusters[closest_center].append(i)
return clusters
# 更新聚类中心为当前聚类的平均值
def update_centers(self, X, clusters):
for i in range(self.K):
new_center = np.mean(X[clusters[i]], axis=0)
if not np.isnan(new_center).any():
self.centers[i] = new_center
# 预测数据点的聚类
def predict(self, X):
clusters = self.assign_clusters(X)
y_pred = np.zeros(len(X))
for i, cluster in enumerate(clusters):
for j in cluster:
y_pred[j] = i
return y_pred
# 训练模型
def fit(self, X):
self.initialize_centers(X)
for i in range(self.max_iters):
old_centers = np.copy(self.centers)
clusters = self.assign_clusters(X)
self.update_centers(X, clusters)
if np.allclose(self.centers, old_centers):
break
# 测试KMeans算法
X = create_data()
kmeans = KMeans(K=4, max_iters=100)
y_pred = kmeans.fit(X).predict(X)
# 可视化聚类结果
plt.scatter(X[:, 0], X[:, 1], c=y_pred, cmap='viridis')
plt.scatter(kmeans.centers[:, 0], kmeans.centers[:, 1], marker='x', s=200, linewidths=3, color='r')
plt.title('K-Means Clustering')
plt.show()
```
该代码生成了一个随机的二维数据集,并使用K-means算法将其聚类成4个簇。最后,将聚类结果可视化出来。
阅读全文