Python实现k均值聚类算法_K-Means聚类算法

Python实现k均值聚类算法_K-Means聚类算法

若想快速了解k均值聚类算法_K-Means聚类算法,可参考这位大佬的文章,通俗易懂:k均值聚类算法考试例题_K-Means聚类算法,作者:weixin_39789792
感谢这位博主。

本篇博客仅作为自用笔记,如有侵权联系删除。

代码详细

注意:
质心k的坐标取值不能取的太离谱,比如三个质心中有一个质心的坐标离样本数据中所有坐标都很远,就会导致列表sse_k1(或k2、k3)中无数据,便使len(sse_kx(x为1、2、3))=0,报错:ZeroDivisionError: division by zero

import pylab as pl


def square_Euclid(x, y):
    """
    计算欧几里得距离:
    若是两个平面上的点,即(x1,y1),和(x2,y2),那这俩点距离即√( (x1-x2)^2+(y1-y2)^2);
    如果是三维空间中的点,则为√( (x1-x2)^2+(y1-y2)^2+(z1-z2)^2 。
    """
    return (x[0] - y[0]) ** 2 + (x[1] - y[1]) ** 2


# 初始化各个点
num_x = []
num_y = []
fl = open('data01.txt')  # 点数据存放在data01.txt中
for line in fl.readlines():
    curLine = line.strip().split()

    num_x.append(float(curLine[0]))
    num_y.append(float(curLine[1]))

# 初始化三个质心,经过聚类得到三个分组
k1 = [-1.7, 
  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
K-Means 聚类算法是一种基于距离的聚类算法,它将数据集分成 K 个簇,每个簇的中心点就是该簇内所有点的质心。K-Means 聚类算法的步骤如下: 1. 随机选择 K 个点作为簇的中心点。 2. 计算每个样本点到 K 个中心点的距离,将其分配到最近的簇中。 3. 对于每个簇,重新计算该簇的中心点。 4. 重复步骤 2 和 3,直到簇不再发生变化或达到最大迭代次数。 下面是使用 K-Means 聚类算法对鸢尾花数据进行聚类Python 代码: ``` python import numpy as np from sklearn.cluster import KMeans from sklearn.datasets import load_iris import matplotlib.pyplot as plt # 加载鸢尾花数据集 iris = load_iris() X = iris.data # 定义 K 值和最大迭代次数 k = 3 max_iter = 300 # 使用 K-Means 聚类算法 kmeans = KMeans(n_clusters=k, max_iter=max_iter) kmeans.fit(X) # 获取聚类结果和簇的中心点 labels = kmeans.labels_ centers = kmeans.cluster_centers_ # 绘制聚类结果图 plt.scatter(X[:, 0], X[:, 1], c=labels) plt.scatter(centers[:, 0], centers[:, 1], c='red', marker='*', s=200) plt.title('K-Means Clustering') plt.xlabel('Sepal length') plt.ylabel('Sepal width') plt.show() ``` 上述代码中,首先加载鸢尾花数据集,然后定义 K 值和最大迭代次数。接着使用 K-Means 聚类算法,获取聚类结果和簇的中心点。最后绘制聚类结果图,其中样本点的颜色表示它所属的簇,红色星号表示每个簇的中心点。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值