k-means算法处理聚类标签不足的异常
k-means算法在人群聚类场景中,是一个非常实用的工具。(该算法的原理可以参考K-Means算法的Python实现)
常见调用方式
该算法常规的调用方式如下:
# 从sklearn引包
from sklearn import cluster
# 初始化并设定聚类数
k_means = cluster.KMeans(n_clusters=9)
# 指定聚类特征
df_pct = stat_score['feature_1', 'feture_2', 'feature_3']
k_means.fit(df_input.fillna(0))
# 计算聚类标签
labels = k_means.labels_
# 获得聚类的质心
C = k_means.cluster_centers_
异常现象
常规情况下,以上处理后,会根据dataframe上的索引列顺序的label(0~8的数值)。
但是,我们在执行代码过程中,出现了raise ValueError('Length of values does not match length of ' 'index')错误,该错误是由于对label值进行翻译的时候出现了label个数不到8个的情况。也就是说,k-means算法最后给出少于8个的聚类标签。
打印中间信息,确认只得到了3个聚类标签。
>>>>>>>>>>>>>>>>>>>>labels<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
[4 4 4 4 4 2 4 4 4 0 4 4 4 0]
14
{0, 2, 4}
异常原因
在对原数据进行下钻维度上的聚类时,比如全公司下某个门店的订单,存在一定时间内订单过少的情况。上面异常就是因为在一个下钻维度上只有28条特征记录,造成k-means只得到3个标签,最后出现了dataframe行数不匹配的情况。
处理方式
在对下钻维度进行聚类前,对此维度的特征数量进行统计,若数量小于特定阈值则考虑:
- 使用特征分组聚类然后再对分组标签进行组合;
- 考虑其它聚类算法,如Spectral clustering。
k-means算法处理聚类标签不足的异常的更多相关文章
- KNN 与 K - Means 算法比较
KNN K-Means 1.分类算法 聚类算法 2.监督学习 非监督学习 3.数据类型:喂给它的数据集是带label的数据,已经是完全正确的数据 喂给它的数据集是无label的数据,是杂乱无章的,经过 ...
- K 均值算法-如何让数据自动分组
公号:码农充电站pro 主页:https://codeshellme.github.io 之前介绍到的一些机器学习算法都是监督学习算法.所谓监督学习,就是既有特征数据,又有目标数据. 而本篇文章要介绍 ...
- K-means算法
K-means算法很简单,它属于无监督学习算法中的聚类算法中的一种方法吧,利用欧式距离进行聚合啦. 解决的问题如图所示哈:有一堆没有标签的训练样本,并且它们可以潜在地分为K类,我们怎么把它们划分呢? ...
- 机器学习之K均值算法(K-means)聚类
K均值算法(K-means)聚类 [关键词]K个种子,均值 一.K-means算法原理 聚类的概念:一种无监督的学习,事先不知道类别,自动将相似的对象归到同一个簇中. K-Means算法是一种聚类分析 ...
- 聚类算法:K-means 算法(k均值算法)
k-means算法: 第一步:选$K$个初始聚类中心,$z_1(1),z_2(1),\cdots,z_k(1)$,其中括号内的序号为寻找聚类中心的迭代运算的次序号. 聚类中心的向量值可任意设 ...
- 聚类--K均值算法:自主实现与sklearn.cluster.KMeans调用
1.用python实现K均值算法 import numpy as np x = np.random.randint(1,100,20)#产生的20个一到一百的随机整数 y = np.zeros(20) ...
- 数学建模及机器学习算法(一):聚类-kmeans(Python及MATLAB实现,包括k值选取与聚类效果评估)
一.聚类的概念 聚类分析是在数据中发现数据对象之间的关系,将数据进行分组,组内的相似性越大,组间的差别越大,则聚类效果越好.我们事先并不知道数据的正确结果(类标),通过聚类算法来发现和挖掘数据本身的结 ...
- 【机器学习】聚类算法——K均值算法(k-means)
一.聚类 1.基于划分的聚类:k-means.k-medoids(每个类别找一个样本来代表).Clarans 2.基于层次的聚类:(1)自底向上的凝聚方法,比如Agnes (2)自上而下的分裂方法,比 ...
- K中心点算法之PAM
一.PAM聚类算法: 选用簇中位置最中心的对象,试图对n个对象给出k个划分:代表对象也被称为是中心点,其他对象则被称为非代表对象:最初随机选择k个对象作为中心点,该算法反复地用非代表对 ...
随机推荐
- 微信小程序 保存图片
微信小程序 保存图片 注: 此处使用的是小程序 wepy框架, 原生或其他的请注意转换写法 <div class="handle"> <button class= ...
- 初写C#的小总结
虽然大学学过很多计算机语言,但是现在工作是前端,一个刚入行的前端菜鸟,之前对于后台完全零接触,但是最近有个项目,我也是第一次真正接触C#,中间遇到了一些小问题,就做个总结记录下,真的是超级简单的小知识 ...
- Selenium 2自动化测试实战33(带unittest的脚本分析)
带unittest的脚本分析 #test.py #coding:utf-8 from selenium import webdriver from selenium.webdriver.common. ...
- 一百零三:CMS系统之使用sweetalert提示框优化返回结果
在base模板中引用 在修改密码的js中使用 $(function () { $('#submit').click(function (evnet) { evnet.preventDefault(); ...
- 单元测试unittest及报告生成(两种报告模板)
Python中有一个自带的单元测试框架是unittest模块,用它来做单元测试,它里面封装好了一些校验返回的结果方法和一些用例执行前的初始化操作. 在说unittest之前,先说几个概念: TestC ...
- Linux学习—yum命令(转载)
yum简介 yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器. 基於RPM包管理,能够从指定的服务器自动 ...
- 导出文档设置exportDocument
<?xml version="1.0" encoding="UTF-8"?> <?eclipse version="3.4" ...
- SpringBoot: 5.访问静态资源(转)
springboot默认从项目的resources里面的static目录下或者webapp目录下访问静态资源 方式一:在resources下新建static文件(文件名必须是static) 在浏览器中 ...
- 小程序插件使用wx.createSelectorQuery()获取不到节点信息
发现小程序一个bug, 在小程序插件中使用wx.createSelectorQuery()获取不到节点信息,需要在后面加入in(this) 例如: const query = wx.createSel ...
- 可视化,matplotlib,seaborn,plotly,pyecharts等等
画频率直方图 import pandas as pd import matplotlib.pyplot as plt Series.value_counts().plot.bar() plt.show ...