python k-means++算法代码
时间: 2023-10-04 12:11:43 浏览: 110
好的,以下是 Python 的 K-Means 算法代码示例:
```python
from sklearn.cluster import KMeans
import numpy as np
# 随机生成一些数据
X = np.random.rand(100, 2)
# 初始化 KMeans 模型并指定聚类数为2
kmeans = KMeans(n_clusters=2)
# 拟合数据(即进行聚类)
kmeans.fit(X)
# 获取聚类结果,即每个数据点属于哪个聚类
labels = kmeans.labels_
print(labels)
```
希望能够帮助您!
相关问题
k-means++聚类算法python实例
下面是一个使用k-means++聚类算法的Python实例:
```python
import numpy as np
from sklearn.cluster import KMeans
# 生成随机数据
X = np.random.randn(100, 2)
# 使用k-means++聚类算法
kmeans = KMeans(n_clusters=3, init='k-means++', max_iter=300, n_init=10, random_state=0)
pred_y = kmeans.fit_predict(X)
# 可视化聚类结果
import matplotlib.pyplot as plt
plt.scatter(X[:,0], X[:,1])
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s=300, c='red')
plt.show()
```
此代码将生成一个包含100个点的随机数据集,并使用k-means++聚类算法将其分成三个簇。最后,使用matplotlib库可视化聚类结果。
使用python代码实现输出k-means++算法的聚类结果
以下是使用Python实现k-means++算法的聚类结果的代码示例:
```python
import numpy as np
from sklearn.cluster import KMeans
def kmeans_plus_plus(X, k):
centers = [X[np.random.randint(len(X))]] # 随机初始化第一个簇中心
while len(centers) < k:
dists = np.array([min([np.linalg.norm(x - c) for c in centers]) for x in X])
probs = dists / dists.sum()
cumprobs = probs.cumsum()
r = np.random.rand()
for j, p in enumerate(cumprobs):
if r < p:
i = j
break
centers.append(X[i])
return np.array(centers)
# 生成一些随机数据
np.random.seed(0)
X = np.vstack((np.random.randn(100, 2) * 0.75 + np.array([1, 0]),
np.random.randn(100, 2) * 0.25 + np.array([-0.5, 0.5]),
np.random.randn(100, 2) * 0.5 + np.array([-0.5, -0.5])))
# 使用k-means++聚类算法进行聚类
k = 3
init_centers = kmeans_plus_plus(X, k)
kmeans = KMeans(init=init_centers, n_clusters=k)
kmeans.fit(X)
# 输出聚类结果
print(kmeans.labels_)
```
该代码使用numpy生成一些随机数据,并使用k-means++算法进行聚类,输出聚类结果。其中,`kmeans_plus_plus`函数实现了k-means++算法,`KMeans`类是scikit-learn库中的k-means算法实现。
阅读全文