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个对象作为中心点,该算法反复地用非代表对 ...
随机推荐
- CF883H
CF883H 题意: 给你一个字符串,需要把它以最小的划分次数划分为x个长度相等的回文串,可以重新排列. 解法: 大模拟一个. 分别统计出现一次的字符和出现两次的字符,如果没有出现一次的字符,那么所有 ...
- Leetcode题目75.颜色分类(双指针-中等)
题目描述: 给定一个包含红色.白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列. 此题中,我们使用整数 0. 1 和 2 分别表示红色.白 ...
- CTF中PHP反序列化和命令注入的一次简单利用
代码来自第六届防灾科技学院网络安全技能大赛,侵删. 目标 获取Linux服务器根目录下的flag 代码 /*home.php*/ class home{ private $method; privat ...
- cloud toolkit同时部署多个服务器
首先安装cloud toolkit安装完成之后重启idea 添加host主机信息: 部署到远程服务器 具体信息: 配置本地查看服务器日志信息 启动脚本信息 start.sh #! /bin/sh so ...
- CentOS7 上搭建 CDH(6.3.0)
这里以四台节点搭建 IP HostName OS 192.168.8.5 h5(主) CentOS 7.5 192.168.8.6 h6(从) CentOS 7.5 192.168.8.7 h7(从) ...
- Spring数据分析思维课
本文目录 一.杂 二.四大行业数据分析 1.工具 1.电商数据分析——以京东为例 2.sql常见问题 2.互联网金融——以芝麻信用为例 3.数据异常排查 3.游戏行业——以欢乐斗地主为例 4.融入 ...
- python异常值检验实战2_医美手术价格
python信用评分卡建模(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_ca ...
- 从数组中找出所有组合为s的数
java版本 package numCombine; /** * 从数组中找出所有组合为s的数 * @author root * */ public class NumComberAll { publ ...
- 解决Ubuntu MySQL服务无法远程登录
一.10061错误 Ubuntu安装MySQL . sudo apt-get install mysql-server . apt-get isntall mysql-client . sudo ap ...
- ceph报错
[ceph_deploy.mon][ERROR ] RuntimeError: config file /etc/ceph/ceph.conf exists with different conten ...