Unsupervised clustering—— KMeans

1. 理解

简单来说, 无监督聚类也是对数据实体的分类,只是在这个分类过程中,没有一个标签告诉你这个实体应该属于哪一类, 分类的准则实际上是数据实体本身的相似度。 这里相似度(similarity measure)的衡量常见的是距离(e.g. euclidean-based distance or correlation-based distance)。

KMeans算法是最典型的无监督聚类算法。 K代表了有K个类别,这是用户需要自定义的。也可以说是K个中心点(cluster centers/centriods), 每个中心点是该类别(cluster)的中心(the mean of the values in the cluster). KMeans算法可以用于给客户分类,具有相似行为或者属性的用户会分为一类。 (Application: kmeans algorithm is very popular and used in a variety of applications such as market segmentation, document clustersing, image segmentation and image compression, etc.)

2. 方法

2.1 k-means算法

K-means是一种迭代的算法。

  • 设置k
  • 随机初始化不重复的k个位置作为中心(cluster centers)
  • 对于每一个数据点,把他分类到距离它最近的一个中心点
  • 重新计算每个类的中心
  • 重复上述算法, 直到中心不再变化

在这里插入图片描述

算法的评估可以使用SSE(sum of squared error), 选择不同的数量K的中心,算法收敛后的SSE不同,这可以作为一个选择K数量的参考。SSE越小说明数据点更加靠近质心,分类效果更好。

算法实现参考

K-means总结:

  • 算法作用于Numeric values,对初始中心位置敏感。
  • 优点: 实现简单。
  • 缺点:会陷入局部最小,如下如图所示。

在这里插入图片描述

2.2 bisecting k-means算法

这个算法的出现实际上解决了k-means算法陷入了local maximum的问题。刚开始所有的数据看成一个cluster,然后应用k-means算法将它一分为二。接着选择一个cluster继续一分为二,选择的依据是SSE最小。 重复这个过程,直到达到用户设定的K的数量。

3. 代码

3.1 通过Elbow图来选择合适的K

Elbow method gives us an idea on what a good k number of clusters would be based on the sum of squared distance (SSE) between data points and their assigned clusters’ centroids. We pick k at the spot where SSE starts to flatten out and forming an elbow. We’ll use the geyser dataset and evaluate SSE for different values of k and see where the curve might form an elbow and flatten out.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt 
from sklearn.cluster import KMeans

# Read some data, skipping any header
# Error, there is no header for the csv file
# RogersGirolami_kMeans = pd.read_csv( "Data/RogersGirolami_kMeans.csv")
RogersGirolami_kMeans = pd.read_csv( "Data/RogersGirolami_kMeans.csv"
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值