参考链接: 在Python中使用K-Means聚类分析测试数据

源数据(这里仅展示10行):

程序:

#-*- coding: utf-8 -*-

#使用K-Means算法聚类消费行为特征数据

import numpy as np

import pandas as pd

#参数初始化

inputfile = '../data/consumption_data.xls' #销量及其他属性数据

k = 3 #聚类的类别

threshold = 2 #离散点阈值

iteration = 500 #聚类最大循环次数

data = pd.read_excel(inputfile, index_col = 'Id') #读取数据

data_zs = 1.0*(data - data.mean())/data.std() #数据标准化

from sklearn.cluster import KMeans

#model = KMeans(n_clusters = k, n_jobs = 4, max_iter = iteration) #分为k类,并发数4

model = KMeans(n_clusters = k, max_iter = iteration)

model.fit(data_zs) #开始聚类

#标准化数据及其类别

r = pd.concat([data_zs, pd.Series(model.labels_, index = data.index)], axis = 1)  #每个样本对应的类别

r.columns = list(data.columns) + [u'聚类类别'] #重命名表头

norm = []

for i in range(k): #逐一处理

norm_tmp = r[['R', 'F', 'M']][r[u'聚类类别'] == i]-model.cluster_centers_[i]

norm_tmp = norm_tmp.apply(np.linalg.norm, axis = 1) #求出绝对距离

norm.append(norm_tmp/norm_tmp.median()) #求相对距离并添加

norm = pd.concat(norm) #合并

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签

plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号

norm[norm <= threshold].plot(style = 'go') #正常点

discrete_points = norm[norm > threshold] #离群点

discrete_points.plot(style = 'ro')

for i in range(len(discrete_points)): #离群点做标记

id = discrete_points.index[i]

n = discrete_points.iloc[i]

plt.annotate('(%s, %0.2f)'%(id, n), xy = (id, n), xytext = (id, n))

plt.xlabel(u'编号')

plt.ylabel(u'相对距离')

plt.show()

运行结果:

[转载] Python之使用K-Means算法聚类消费行为特征数据分析(异常点检测)相关推荐

  1. kmeans改进 matlab,基于距离函数的改进k―means 算法

    摘要:聚类算法在自然科学和和社会科学中都有很普遍的应用,而K-means算法是聚类算法中经典的划分方法之一.但如果数据集内相邻的簇之间离散度相差较大,或者是属性分布区间相差较大,则算法的聚类效果十分有 ...

  2. [转载] Python中的Phyllotaxis模式| 算法植物学的一个单位

    参考链接: Python中的Phyllotaxis模式| 算法植物学的单位 简介| 叶底   Phyllotaxis / phyllotaxy是植物茎上叶子的排列,Phyllotactic螺旋形成自然 ...

  3. k means算法C语言伪代码,K均值算法(K-Means)

    1. K-Means算法步骤 算法步骤 收敛性定义,畸变函数(distortion function): 伪代码: 1) 创建k个点作为K个簇的起始质心(经常随机选择) 2) 当任意一个点的蔟分配结果 ...

  4. python机器学习---1. K近邻算法

    机器学习的方法是基于数据产生的"模型" (model) 的算法,也称"学习算法" (learning algorithm).包括有监督学习(supervised ...

  5. python时间序列异常值查找_(No.38)时间序列异常点检测算法

    写在前面: 针对一个数值序列,识别出其中的异常波动点.例如: p = [1 1 1.1 1 0.9 1 1 1.1 1 0.9 1 1.1 1 1 0.9 1 1 1.1 1 1 1 1 1.1 0. ...

  6. k均值聚类算法(K Means)及其实战案例

    算法说明 K均值聚类算法其实就是根据距离来看属性,近朱者赤近墨者黑.其中K表示要聚类的数量,就是说样本要被划分成几个类别.而均值则是因为需要求得每个类别的中心点,比如一维样本的中心点一般就是求这些样本 ...

  7. (学习笔记)聚类算法 - k均值算法(k-means)

    聚类之K均值算法 聚类介绍 k均值算法步骤 Python实现 参考文献 聚类介绍 聚类是一种经典的无监督学习方法. 聚类的目的是将数据集中的样本划分为若干个通常是不相交的子集,每个子集被称为簇,以此来 ...

  8. K近邻算法讲解与python实现(附源码demo下载链接)

    k近邻算法概述 对应demo源码及数据:传送门 K近邻(k-Nearest Neighbor,简称kNN)算法,是一种应用很广泛的监督学习算法.它非常有效且易于掌握,其工作机制也很简单:给定测试样本, ...

  9. K means 图片压缩

    k-means的基本原理较为清晰,这里不多赘述,本次博客主要通过基础的k means算法进行图像的压缩处理. 原理分析 在彩色图像中,每个像素的大小为3字节(RGB),可以表示的颜色总数为256 * ...

最新文章

  1. C#基础——数组(冒泡排序)
  2. 羊皮卷的故事-第二章
  3. 使用NMAKE管理工程
  4. 深入理解JVM虚拟机(三):虚拟机性能监控工具
  5. git pull 是到工作区还是暂存区_每天一Git之简单理解工作区和暂存区
  6. 强化学习6——policy gradient的变种State of the Art
  7. select html value属性,HtmlSelect.DataValueField 属性 (System.Web.UI.HtmlControls) | Microsoft Docs...
  8. 石器时代修改完以后服务器启动不了,石器时代 石器EE 突发问题“突发断连”服务器故障说明...
  9. PHP进程1608占用了9012,swoole (ERRNO 9012): worker exit timeout, forced to terminate
  10. python怎样定义_python dict如何定义
  11. 使用 jQuery Mobile 与 HTML5 开发 Web App (十四) —— jQuery Mobile 方法下
  12. 敏捷开发用户故事系列之八:验收标准
  13. Red Hat Enterprise Linux上配置SQL Server Always On Availability Group
  14. Call for Presentations!Flink Forward Global 2021 议题征集ing
  15. SpringMVC相关
  16. 分享给设计师们9款免费和有用的英文字体
  17. 从JUnit4迁移到JUnit5:重要的区别和好处
  18. Potplayer + LAVFilters + madVR 配置教程
  19. WIN10计算机不支持3D游戏怎么办,win10电脑3d设置在哪里设置
  20. 简洁易用的日志模块——log4j

热门文章

  1. android c博客园,android上进行c/C 开发测试(转) - 奋进 - 博客园
  2. 存储过程循环遍历一个月的每一天的函数_3.3 循环
  3. vue遇到ie兼容问题如何处理_静电喷涂设备遇到紧急事故应该如何处理
  4. Lc19删除链表的倒数第N个节点
  5. java关键字值transient
  6. java关键字只static
  7. java 随机生成图_java – 如何生成随机图?
  8. 白帽子讲Web安全(对看书之后的一点笔记)
  9. opencv 凸包讲解和绘制
  10. matlab 实现行程编码 对二值图像进行编解码