跟我一起学scikit-learn22:K-均值算法

K-均值(K-means)算法是一种典型的无监督机器学习算法,用来解决聚类问题(Clustering)。由于数据标记需要耗费巨大的人力物力,无监督或者半监督学习算法不需要对数据进行标记,可以大大减少工作量。

1.K-均值算法原理

我们需要注意聚类问题和分类问题的区别。针对监督式学习算法,如K-近邻算法,其输入数据是已经标记了的 ( x ( 1 ) , y ( 1 ) ) (x^{(1)},y^{(1)}) (x(1),y(1)) ( x ( 2 ) , y ( 2 ) ) (x^{(2)},y^{(2)}) (x(2),y(2)),…, ( x ( m ) , y ( m ) ) (x^{(m)},y^{(m)}) (x(m),y(m)),目标是找出分类边界,然后对新的数据进行分类。而无监督式学习算法,如K-均值算法,只给出一组无标记的数据集 x ( 1 ) x^{(1)} x(1) x ( 2 ) x^{(2)} x(2),…, x ( m ) x^{(m)} x(m),目标是找出这组数据的模式特征,如哪些数据是同一种类型的,哪些数据是另外一种类型。典型的无监督式学习包括市场细分,即通过分析用户数据,把一个产品的市场进行细分,找出细分人群。另外一个是社交网络分析,分析社交网络中参与人员的不同特点,根据特点区分出不同群体。这些都是无监督式学习里的聚类(Clustering)问题。

K-均值算法包含以下两个步骤:
(1)给聚类中心分配点。计算所有的训练样本,把每个训练样例分配到距离其最近的聚类中心所在的类别里。
(2)移动聚类中心。新的聚类中心移动到这个聚类所有的点的平均值处。

一直重复上面的动作,直到聚类中心不再移动为止,这时就探索出了数据集的结构了。

我们也可以用数学方式来描述K-均值算法。算法有两个输入:一个是K,表示选取的聚类的个数;另外一个是训练数据集 x ( 1 ) x^{(1)} x(1) x ( 2 ) x^{(2)} x(2),…, x ( m ) x^{(m)} x(m)
(1)随机选择K个初始聚类中心 u 1 u_1 u1 u 2 u_2 u2,…, u k u_k uk
(2)计算数据集中的每个点 x ( i ) x^{(i)} x(i)分别到这K个聚类中心 u 1 u_1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值