如何使用Kmeans聚类算法分类数据

python环境下的测试程序
import numpy as np
import cv2
import matplotlib.pyplot as plt

#in this example, we test Kmeans clutering algorithm under python.
‘‘‘
#first example: one dimension, one character.

# here we create two clusters x and y on purpose. and test this algorithm whether it can tell x from y or not.
x = np.random.randint(25, 100, 50)
y = np.random.randint(175, 250, 50)
z = np.hstack((x, y))
z = z.reshape((100, 1))
z = np.float32(z)

#set cluters
K = 2
#set bestLabels
bestLabels= None
#Define criteria = (type, max_iter = 10, epsilon =1.0)
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0)
#set attempts
attempts = 10
#set flags
flags = cv2.KMEANS_RANDOM_CENTERS
#Apply Kmeans
compactness, labels, centers = cv2.kmeans(z, K, bestLabels, criteria, attempts, flags, None)

# display
A = z[labels==0]
B = z[labels==1]
plt.hist(A, 256, [0, 256], color = ‘r‘)
plt.hist(B, 256, [0, 256], color = ‘b‘)
plt.hist(centers, 32, [0, 256], color = ‘y‘)
plt.show()

‘‘‘

#two dimensions, two characters, and even mutiply dimensions and mutiply characters.

x = np.random.randint(150, 180, (2000, 1)) # height
y = np.random.randint(50, 80, (2000, 1)) #weight
z = np.hstack((x, y)) #Stack arrays in sequence vertically(row wise)
#ex: a=np.array([1,2,3]) b=np.array([2,3,4]) c=np.vstack((a,b))=array([[1,2,3],[2,3,4]]) c[:,1]=array([2,3])
#z format: array([x.height, x.weight]), x denotes someone.
#Convert to np.float32
z=np.float32(z)

#define criteria and apply kmeans
#set cluters
K = 3
#set bestLabels
bestLabels= None
#Define criteria = (type, max_iter = 10, epsilon =1.0)
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0)
#set attempts
attempts = 10
#set flags
flags = cv2.KMEANS_RANDOM_CENTERS
#Apply Kmeans
compactness, labels, centers = cv2.kmeans(z, K, bestLabels, criteria, attempts, flags, None)

#display
A = z[labels.ravel()==0]
B = z[labels.ravel()==1]
C = z[labels.ravel()==2]

plt.scatter(A[:, 0], A[:, 1], color=‘r‘)
plt.scatter(B[:, 0], B[:, 1], color=‘g‘)
plt.scatter(C[:, 0], C[:, 1], color=‘b‘)

plt.scatter(centers[:, 0], centers[:, 1], s=80, color=‘y‘, marker=‘s‘)
plt.xlabel(‘Height‘)
plt.ylabel(‘Weight‘)
plt.show()

时间: 2024-11-05 18:30:12

如何使用Kmeans聚类算法分类数据的相关文章

数据建模()-K-means聚类算法

K-Means算法是典型基于距离的非层次聚类算法,在最小化误差函数的基础上将数据划分为预定的类数K,采用作为相似性的评价指标,即认为2个对象的距离越近,其相似度越大. 1.算法过程 1)从N个样本数据中随机选取K个对象作为初始的聚类中心 2)分别计算每个样本到各聚类中心的距离,将对象分配到距离最近的聚类中 3)所有对象分配完成后,重新计算K个聚类的中心 4)与前一次计算得到的K个聚类中心比较,如果聚类中心发生变化,转过程2),否则转过程5)当质心不发生变化时,停止并输出聚类结果 对于连续数据,聚

Kmeans聚类算法原理与实现

Kmeans聚类算法 1 Kmeans聚类算法的基本原理 K-means算法是最为经典的基于划分的聚类方法,是十大经典数据挖掘算法之一.K-means算法的基本思想是:以空间中k个点为中心进行聚类,对最靠近他们的对象归类.通过迭代的方法,逐次更新各聚类中心的值,直至得到最好的聚类结果. 假设要把样本集分为k个类别,算法描述如下: (1)适当选择k个类的初始中心,最初一般为随机选取: (2)在每次迭代中,对任意一个样本,分别求其到k个中心的欧式距离,将该样本归到距离最短的中心所在的类: (3)利用

Spark MLlib KMeans聚类算法

1.1 KMeans聚类算法 1.1.1 基础理论 KMeans算法的基本思想是初始随机给定K个簇中心,按照最邻近原则把待分类样本点分到各个簇.然后按平均法重新计算各个簇的质心,从而确定新的簇心.一直迭代,直到簇心的移动距离小于某个给定的值. K-Means聚类算法主要分为三个步骤: (1)第一步是为待聚类的点寻找聚类中心: (2)第二步是计算每个点到聚类中心的距离,将每个点聚类到离该点最近的聚类中去: (3)第三步是计算每个聚类中所有点的坐标平均值,并将这个平均值作为新的聚类中心: 反复执行(

视觉SLAM之词袋(bag of words) 模型与K-means聚类算法浅析(2)

聚类概念: 聚类:简单地说就是把相似的东西分到一组.同 Classification (分类)不同,分类应属于监督学习.而在聚类的时候,我们并不关心某一类是什么,我们需要实现的目标只是把相似的东西聚到一起,因此,一个聚类算法通常只需要知道如何计算相似 度就可以开始工作了.聚类不需要使用训练数据进行学习,应属于无监督学习. 我们经常接触到的聚类分析,一般都是数值聚类,一种常见的做法是同时提取 N 种特征,将它们放在一起组成一个 N 维向量,从而得到一个从原始数据集合到 N 维向量空间的映射,然后基

Tensorflow快速入门1--实现K-Means聚类算法

快速入门1–实现K-Means聚类算法 环境: 虚拟机 版本:0.12.0(仅使用cpu下,pip命令安装) 目录 1.环境搭建 的安装 1.2简单测试 学习文档 相关的库Seaborn.pandas安装 实现K-Means聚类算法 2.1最基本的K-Means聚类算法步骤 实现K-Means聚类算法 2.3测试数据准备 2.4完整的kmeans.py文件 2.5简单测试结果 1.环境搭建 的安装 这里通过pip安装(只安装cpu单机版的,有条件的可以安装gpu下的). 1 2 1 2 注意:如

k-means聚类算法C++实现

原文:http://www.cnblogs.com/luxiaoxun/archive/2013/05/09/3069594.html Clustering 中文翻译作“聚类”,简单地说就是把相似的东西分到一组,同 Classification (分类)不同,对于一个 classifier ,通常需要你告诉它“这个东西被分为某某类”这样一些例子,理想情况下,一个 classifier 会从它得到的训练集中进行“学习”,从而具备对未知数据进行分类的能力,这种提供训练数据的过程通常叫做 superv

K-means聚类算法原理和C++实现

给定训练集,想把这些样本分成不同的子集,即聚类,,但是这是个无标签数据集,也就是说我们再聚类的时候不能利用标签信息,所以这是一个无监督学习问题. k-means聚类算法的流程如下: 1. 随机初始化聚类中心 2. a. 对与每一个聚类中心,计算所有样本到该聚类中心的距离,然后选出距离该聚类中心最近的几个样本作为一类: 这个公式的意思是,某个样本 i 属于哪一类,取决于该样本距离哪一个聚类中心最近,步骤a就是利用这个规则实现. b. 对上面分成的k类,根据类里面的样本,重新估计该类的中心: 对于新

K-Means 聚类算法原理分析与代码实现

前言 在前面的文章中,涉及到的机器学习算法均为监督学习算法. 所谓监督学习,就是有训练过程的学习.再确切点,就是有 "分类标签集" 的学习. 现在开始,将进入到非监督学习领域.从经典的聚类问题展开讨论.所谓聚类,就是事先并不知道具体分类方案的分类 (允许知道分类个数). 本文将介绍一个最为经典的聚类算法 - K-Means 聚类算法以及它的两种实现. 现实中的聚类分析问题 - 总统大选 假设 M 国又开始全民选举总统了,目前 Mr.OBM 的投票率为48%(投票数占所有选民人数的百分比

《数据挖掘导论》实验课——实验七、数据挖掘之K-means聚类算法

实验七.数据挖掘之K-means聚类算法 一.实验目的 1. 理解K-means聚类算法的基本原理 2. 学会用python实现K-means算法 二.实验工具 1. Anaconda 2. sklearn 3. matplotlib 三.实验简介 1 K-means算法简介 k-means算法是一种聚类算法,所谓聚类,即根据相似性原则,将具有较高相似度的数据对象划分至同一类簇,将具有较高相异度的数据对象划分至不同类簇.聚类与分类最大的区别在于,聚类过程为无监督过程,即待处理数据对象没有任何先验