python实现K-means算法——以鸢尾花数据集为例

import matplotlib.pyplot as plt
from random import sample
import numpy as np
from sklearn.cluster import KMeans
#from sklearn import datasets
from sklearn.datasets import load_iris
#导入鸢尾花数据集
#以二维数据为例 假设k=2,X为鸢尾花数据集前两维
iris = load_iris()
X = iris.data[:,0:2] ##表示我们只取特征空间中的前两个维度 X类型是np.array
print(len(X))
#绘制数据分布图 显示前两维数据
plt.scatter(X[:, 0], X[:, 1], c = "red", marker='o', label='see')
plt.xlabel('petal length')
plt.ylabel('petal width')
plt.legend(loc=2)
plt.show()

#从X中随机选择k个样本作为初始“簇中心”向量: μ(1),μ(2),...,,μ(k)
#随机获得两个数据
n = 3 #表示n个聚类
u = sample(X.tolist(),n) #随机选择n个X中的向量作为聚类中心
max_iter = 0 #记录迭代次数
u_before = u

while max_iter<5:
    #簇分配过程
    c = []
    print(u_before,u)
    for i in range(len(X)):
        min = 1000
        index = 0
        for j in range(n):
            vec1 = X[i]
            vec2 = u[j]
            dist = np.sqrt(np.sum(np.square(vec1 - vec2)))
            if dist

最后结果如下图所示:

python实现K-means算法——以鸢尾花数据集为例_第1张图片

你可能感兴趣的:(机器学习,K-means算法)