【web搜索】学习笔记-k-means聚类

k-means聚类也称k均值算法,自顶而下的聚类算法,根据元素对类的所属是否为而至,又分为硬聚类和软聚类。在普通的k均值算法中,元素和类用相同的向量形式表达。类是质心,即类中所有元素的均值,初始时可将元素随意(或根据启发性信息)分为k个组,计算出各个组的之心,然后按照以下的算法进行类间元素的调整:硬k均值聚类算法1 初始化k个组的质心向量2 while 还可以继续改进 do3...
摘要由CSDN通过智能技术生成

k-means聚类也称k均值算法,自顶而下的聚类算法,根据元素对类的所属是否为而至,又分为硬聚类和软聚类。
在普通的k均值算法中,元素和类用相同的向量形式表达。类是质心,即类中所有元素的均值,初始时可将元素随意(或根据启发性信息)分为k个组,计算出各个组的之心,然后按照以下的算法进行类间元素的调整:

在这里插入图片描述

在这里插入图片描述

硬k均值聚类算法

1  初始化k个组的质心向量
2  while 还可以继续改进 do
3 	for 每个元素(文档)d do
4 		找出质心向量与d最相似的组c
5 		将d调整到组c之中
6 	end for
7 	for 每个组c do
8 		重新计算质心向量
9 	end for
10 end while

软k均值聚类算法
相对于硬k均值聚类,删去3-6步,在第8步计算质心向量时,采用下式计算质心偏移量,注意:每个元素对每个组的偏移量都有贡献, 但贡献的大小不同,离组的质心越近,贡献越大。

在这里插入图片描述

在这里插入图片描述

相关链接:K-means聚类算法原理和C++实现

学习笔记:
先附上上一段链接中的代码:

#include "stdafx.h"
#include<iostream>
#include<cmath>
#include<vector>
#include<ctime>
using namespace std;
typedef unsigned int uint;

struct Cluster
{
   
	vector<double> centroid;
	vector<uint> samples;
};
double cal_distance(vector<double> a, vector<double> b)
{
   
	uint da = a.size();
	uint db = b.size();
	if (da != db) cerr << "Dimensions of two vectors must be same!!\n";
	double val = 0.0;
	for (uint i = 0; i < da; i++)
	{
   
		val += pow((a[i] - b[i]), 2);
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值