K-均值算法(数据挖掘无监督学习)

一、无监督学习

  1、聚类:是一个将数据集中在某些方面相似的数据成员进行分类组织的过程。因此,一个聚类就是一些数据实例的集合。聚类技术经常被称为无监督学习。

二、K-均值聚类

  1、k—均值算算法:是发现给定数据集k个簇的算法

  2、步骤:

    1)、随机选取k个数据点作为初始的聚类中心(要求发现k个簇)。

    2)、把每个数据点分配给距离它最近的聚类中心(对图中的所有点求到这K个种子点的距离,假如点P离种子点S最近,那么P属于S点群。)

    3)、重新确定聚类中心(x,y),一旦全部的数据点都被分配,每个聚类的聚类中心会更具现有数据点重新计算。x = (x1+x2+……xn)/n,y = (y1+y2+……yn)/n。

    4)、2)3)过程不断重复,知道满足一下三个终止(收敛)条件:

      a、满足重复次数,比如要求循环执行五十次,第五十一次停止。

      b、没有聚类中心再次发生变化。

      c、误差和(SSE)局部最小

  3、伪代码 :

    

1 Algorithm K-means(k,D)
2     choose k data points as the initial centroids(cluster centers)
3     repeat
4         for each data point x->D do
5             compute the distance from x to each centroid;
6             assign x to the closest centroid
7         endfor
8         re-computer the centroid using the current cluster memberships
9     until the stopping criterion

原文地址:https://www.cnblogs.com/weiliuyby/p/8619325.html

时间: 2024-09-30 22:09:18

K-均值算法(数据挖掘无监督学习)的相关文章

DM里的K均值算法

1.Preface 因为一直在做的是聚类算法的研究,算是总结了一些心得,这里总结些知识性与思路性的东西,我想在其他地方也是很容易的找到类似的内容的.毕竟,世界就是那么小. 声明:本文比较不适合没有DM基础的人来阅读.我只是胡乱的涂鸦而已 2.聚类算法 在DM里的聚类算法里,有基于划分的算法,基于层次的算法,基于密度的算法,基于网格的算法,基于约束的算法. 其中每一种基于的算法都会衍生出一至几种算法,对应的每一种算法不管在学术界还是工业界都存在着许多的改进的算法 这里想介绍的是基于基于划分的算法里

k均值算法

import matplotlib.pyplot as plt import numpy as np import time from django.template.defaultfilters import center def loadDataSet(fileName): dataMat=[] fr=open(fileName) for line in fr.readlines(): curLine=line.strip().split('\t') fltLine=map(float,cu

聚类算法:K-means 算法(k均值算法)

k-means算法:      第一步:选$K$个初始聚类中心,$z_1(1),z_2(1),\cdots,z_k(1)$,其中括号内的序号为寻找聚类中心的迭代运算的次序号. 聚类中心的向量值可任意设定,例如可选开始的$K$个模式样本的向量值作为初始聚类中心.      第二步:逐个将需分类的模式样本$\{x\}$按最小距离准则分配给$K$个聚类中心中的某一个$z_j(1)$.假设$i=j$时, \[D_j (k) = \min \{ \left\| {x - z_i (k)} \right\|

二分-k均值算法

首先我们都知道k均值算法有一个炒鸡大的bug,就是在很多情况下他只会收敛到局部最小值而不是全局最小值,为了解决这个问题,很多学者提出了很多的方法,我们在这里介绍一种叫做2分k均值的方法. 该算法首先将所有点作为一个簇,然后将该簇一分为二.之后选择其中一个簇继续进行划分,选择哪一个簇进行划分取决于哪个簇的sse是最大值.上述基于sse的划分过程不断重复,直到得到用户指定的簇数目为止. 将所有的点看成一个簇,当粗的数目小于k时,对每一个簇计算总误差,在给定的粗上进行k均值聚类(k=2),计算将该粗一

K均值算法-python实现

测试数据展示: #coding:utf-8__author__ = 'similarface''''实现K均值算法 算法摘要:-----------------------------输入:所有数据点A,聚类个数k输出:k个聚类的中心点 随机选取k个初始的中心点repeat: 计算每个点和中心点的距离,将点分配给最近的中心簇中 计算Ck,更新簇的中心点until 中心点稳定 -----------------------------'''import sysimport randomimport

聚类--K均值算法:自主实现与sklearn.cluster.KMeans调用

4 用python实现K均值算法 x=np.random.randint(1,100,[20,1]) y=np.zeros(20) k=3 def initcenter(x,k): return x[:k] def nearest(kc,i): d = (abs(kc - i)) w = np.where(d ==np.min(d)) return w [0] [0] kc = initcenter(x,k) nearest(kc,14) for i in range(x.shape[0]):

聚类--K均值算法

聚类--K均值算法:自主实现与sklearn.cluster.KMeans调用    1.用python实现K均值算法 K-means是一个反复迭代的过程,算法分为四个步骤:(x,k,y) import numpy as np x = np.random.randint(1,50,[20,1]) y = np.zeros(20) k = 3 # 选取数据空间中的K个对象作为初始中心,每个对象代表一个聚类中心:def initcenter(x, k): kc def initcenter(x,k)

3.K均值算法

1). 扑克牌手动演练k均值聚类过程:>30张牌,3类 选取32张牌,分3类. 第1轮:聚类中心为1,2,3. 第2轮:聚类中心为1,2,6(5.5向上取整). 第3轮:聚类中心为1,2,6(5.5向上取整). # 扑克牌手动演练k均值聚类过程:选择32张牌,3类 sum11 = 0 sum12 = 0 sum13 = 0 print("第1轮") for i in range(1, 2): sum11 = sum11+i*4 print("牌为1类求平均值,得到新的中

【机器学习】K均值算法(II)

k聚类算法中如何选择初始化聚类中心所在的位置. 在选择聚类中心时候,如果选择初始化位置不合适,可能不能得出我们想要的局部最优解. 而是会出现一下情况: 为了解决这个问题,我们通常的做法是: 我们选取K<m个聚类中心. 然后随机选择K个训练样本的实例,之后令k个聚类中心分别与k个训练实例相等. 之后我们通常需要多次运行均值算法.每一次都重新初始化,然后在比较多次运行的k均值的结果,选择代价函数较小的结果.这种方法在k较小的时候可能会有效果,但是在K数量较多的时候不会有明显改善. 如何选取聚类数量