机器学习之聚类算法:K均值聚类(二、算法案例)

本文介绍了K均值聚类算法的应用,首先通过简易数据集手动实现Kmeans,包括数据载入、聚类中心初始化与更新、代价函数计算。接着使用sklearn库进行Kmeans实现,展示模型信息并可视化聚类结果。
摘要由CSDN通过智能技术生成

一、简易数据集的Kmeans实现

 数据下载  提取码:quu3

导入库并载入数据:

import numpy as np
import matplotlib.pyplot as plt  

# 载入数据
data = np.genfromtxt("kmeans.txt", delimiter=" ")

定义函数:计算距离、初始化聚类中心和更新聚类中心函数:

# 计算距离 
def euclDistance(vector1, vector2):  
    return np.sqrt(sum((vector2 - vector1)**2))
  
# 初始化质心
def initCentroids(data, k):  
    numSamples, dim = data.shape
    # k个质心,列数跟样本的列数一样
    centroids = np.zeros((k, dim))  
    # 随机选出k个质心
    for i in range(k):  
        # 随机选取一个样本的索引
        index = int(np.random.uniform(0, numSamples))  
        # 作为初始化的质心
        centroids[i, :] = data[index, :]  
    return centroids  
  
# 传入数据集和k的值
def kmeans(data, k):  
    # 计算样本个数
    numSamples = data.shape[0]   
    # 样本的属性,第一列保存该样本属于哪个簇,第二列保存该样本跟它所属簇的误差
    clusterData = np.array(np.zeros((numSamples, 2)))  
    # 决定质心是否要改变的变量
    clusterChanged = True  
  
    # 初始化质心  
    centroids = initCentroids(data, k)  
  
    while clusterChanged:  
        clusterChanged = False  
        # 循环每一个样本 
        for i in range(numSamples):  
            # 最小距离
            min
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值