本文为 AI 研习社编译的技术博客,原标题 :

Customer segmentation using Machine Learning K-Means Clustering

翻译 | 吕鑫灿、就2    校对 | 就2    整理 | 志豪

原文链接:

http://www.patterns7tech.com/customer-segmentation-using-machine-learning-k-means-clustering/

Rajshekhar Bodhale | 2017年11月17日 | 机器学习

基于信息技术的大多数平台正在生成大量数据。这些数据称为大数据,它承载了大量的商业智能。这些数据互相交融以满足不同的目标和可能性。应用机器学习技术就很有可能为客户创造价值。

问题描述

我们在会计学和物联网领域拥有基于大数据的平台,可以持续生成客户行为和设备监控数据。

识别目标客户群或者基于不同维度分析(推导)模式非常关键,并且实在的为平台提供了优势。

对应想法

假设你有1000个客户使用你的平台并且不断地产生体量庞大的大数据,任何关于这方面的深入见解都将产生新的价值。

作为Patterns7团队不断尝试的机器学习计划和创新事物的一部分,我们对K-Means聚类算法进行了实验,这为客户带来的价值非常惊人。

解决方案

聚类是将一组数据点划分为少量聚类的过程。在本部分中,你将理解并学习到如何实现K-Means聚类。

K-Means聚类

K-Means聚类是一种常用于将数据集自动划分为K个组的方法,它属于无监督学习算法。

K-Means目标

K均值的目的是使每个点到其对应的聚类质心的距离的平方和最小。给定一组观测值(x1,x2,...,xn),其中每一个观测值都是d维实数向量,K均值聚类旨在将n个观测值划分为k(k≤n)个集合S={S1,S2,...,Sk}以最小化聚类内的平方和,其中µi是Si中的点的平均值。

保证K-Means算法收敛到局部最优。

业务用途

这是一种通用算法,可用于任何类型的分组。部分使用案例如下:

行为细分:按购买历史记录细分,按应用程序、网站或者购买平台上的活动细分。

库存分类:按照销售活动分组存货(准备库存)。

传感器测量:检测运动传感器中的活动类型,并分组图像。

检测机器人或异常:从机器人中分离出有效地活动组。

k - means聚类算法

步骤1:选择集群的数量K。

步骤2:随机选择K个点,作为质心。(不一定要从你的数据集中选择)

步骤3:将每个数据点分配到-> 构成K簇的最近的质心。

步骤4:计算并重新放置每个集群的新质心。

步骤5:将每个数据点重新分配到最近的质心。如果有任何重置发生,转到步骤4,否则转到FIN。

示例:在python中对客户费用和发票数据应用K-Means集群。

对于python,我使用的是Spyder Editor。

下面,我们将展示K-means算法如何处理客户费用和发票数据的例子。

我们有500个客户数据,我们关注两个客户特征: 客户发票,客户费用。

一般来说,只要数据样本的数量远远大于特征的数量,该算法可以用于任意数量的特征。

步骤1:清理和转换数据

对于这个示例,我们已经清理和做了一些简单的数据转换。下面是pandas  DataFrame的数据样本。

导入库,

1、numpy 即用于数学工具的,以在我们的代码中包含任何类型的数学

2、matplotlib  绘制漂亮的图表

3、pandas 用于导入数据集和管理数据集

步骤2: 我们对总费用和总发票应用聚类。在X中选择必需的列。

下图显示了500个客户的数据集,总发票在x轴,总费用在y轴。

步骤3:选择K并运行算法

选择K

上面描述的算法找到一个特定的预先选择K的集群和数据集标签。

为了找到数据中的集群数量,用户需要运行K-means聚类算法对K个值的范围进行聚类并比较结果。一般来说,没有确定K的精确值的方法,但是可以使用以下技术得到精确的估计值。

通常用于比较不同K值之间的结果的度量之一是:

数据点与它们的集群中心之间的平均距离。

因为增加集群的数量总是会减少到数据点的距离,所以增加K总是会减少这个度量,当K等于数据点的数量时达到0的极限。因此,这个指标不能作为唯一的目标。相反,将与质心的平均距离作为K的函数绘制出来,并使用“弯头点”(急剧下降的速度)来粗略地确定K。

用弯头法求出最优簇数K=3。对于本例,使用Python包scikit-learn进行计算,如下所示:

# K-Means Clustering

# importing the libraries

import numpy as np

import matplotlib.pyplot as plt

import pandas as pd

# importing tha customer Expenses Invoices dataset with pandas

dataset=pd.read_csv('Expense_Invoice.csv')

X=dataset.iloc[: , [3,2]].values

# Using the elbow method to find  the optimal number of clusters

from sklearn.cluster import KMeans

wcss = []

for i in range(1, 11):

kmeans=KMeans(n_clusters=i, init='k-means++', max_iter= 300, n_init= 10, random_state= 0)

kmeans.fit(X)

wcss.append(kmeans.inertia_)

plt.plot(range(1, 11),wcss)

plt.title('The Elbow Method')

plt.xlabel('Number of clusters K')

plt.ylabel('Average Within-Cluster distance to Centroid (WCSS)')

plt.show()

# Applying k-means to the mall dataset

kmeans=KMeans(n_clusters=3, init='k-means++', max_iter= 300, n_init= 10, random_state= 0)

y_kmeans=kmeans.fit_predict(X)

# Visualizing the clusters

plt.scatter(X[y_kmeans == 0, 0], X[y_kmeans == 0, 1], s = 100, c = 'red', label='Careful(c1)')

plt.scatter(X[y_kmeans == 2, 0], X[y_kmeans == 2, 1], s = 100, c = 'green', label='Standard(c2)')

plt.scatter(X[y_kmeans == 1, 0], X[y_kmeans == 1, 1], s = 100, c = 'blue', label='Target(c3)')

plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s = 250, c = 'yellow',

label='Centroids')

plt.title('Clusters of customer Invoices & Expenses')

plt.xlabel('Total Invoices ')

plt.ylabel('Total Expenses')

plt.legend()

plt.show()

步骤4:查看结果

下面的图表显示了结果。

“谨慎型客户”谁的收入越少,他们花的也就越少。

“一般客户”收入是平均的,他们花得更少,

“目标客户”是谁的收入更多,他们花得更多。

想要继续查看该篇文章更多代码、链接和参考文献?雷锋网(公众号:雷锋网)雷锋网雷锋网

戳链接:http://www.gair.link/page/TextTranslation/691

AI研习社每日更新精彩内容,点击文末【阅读原文】即可观看更多精彩内容:

Google 启动新搜索引擎,帮助科学家找到需要的数据集

立志成为数据科学家?掌握以下基础

当机器学习遇上运动鞋

基于opencv和python的手指识别及追踪

等你来译:

建立一个基于深度学习的混合型的内容协同电影推荐系统

决策树:一种像人脑一样工作的算法

如何用 Dask 数据框架运行并行数据分析

蒙特卡洛模拟航空公司超订

游戏 AI 入门指南

使用 K-means 算法进行客户分类相关推荐

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

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

  2. k近邻算法_机器学习分类算法之k近邻算法

    本编文章将介绍机器学习入门算法-k近邻算法,将会用demo演示机器学习分类算法. 在先介绍算法时,先回顾分类和回归的区别.像文章分类识别也是这样处理的,如1代表体育,2代表科技,3代表娱乐属于分类问题 ...

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

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

  4. 【机器学习】sklearn机器学习入门案例——使用k近邻算法进行鸢尾花分类

    1 背景 这个案例恐怕已经被说的很烂了,机器学习方面不同程度的人对该案例还是有着不同的感觉.有的人追求先理解机器学习背后的理论甚至自己推导一遍相关数学公式,再用代码实现:有的人则满足于能够实现相关功能 ...

  5. 【计算机视觉之三】运用k近邻算法进行图片分类

    这篇文章主要给不知道计算机视觉是啥的人介绍一下图像分类问题以及最近的最近邻算法. 目录 图像分类 1.1 图像分类的原理 1.2 面临的问题 1.3 图像分类任务 最近邻算法 代码实现 L2距离 用k ...

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

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

  7. 【机器学习入门】(1) K近邻算法:原理、实例应用(红酒分类预测)附python完整代码及数据集

    各位同学好,今天我向大家介绍一下python机器学习中的K近邻算法.内容有:K近邻算法的原理解析:实战案例--红酒分类预测.红酒数据集.完整代码在文章最下面. 案例简介:有178个红酒样本,每一款红酒 ...

  8. 一文搞懂K近邻算法(KNN),附带多个实现案例

    简介:本文作者为 CSDN 博客作者董安勇,江苏泰州人,现就读于昆明理工大学电子与通信工程专业硕士,目前主要学习机器学习,深度学习以及大数据,主要使用python.Java编程语言.平时喜欢看书,打篮 ...

  9. C++实现的简单k近邻算法(K-Nearest-Neighbour,K-NN)

    C++实现的简单的K近邻算法(K-Nearest Neighbor,K-NN) 前一段时间学习了K近邻算法,对K近邻算法有了一个初步的了解,也存在一定的问题,下面我来简单介绍一下K近邻算法.本博客将从 ...

最新文章

  1. xilinxaxi ethernet 硬件时间戳告警
  2. 锋利的JQuery —— DOM操作
  3. python dlib学习(三):调用cnn人脸检测
  4. 走向统一的 .NET 旅程
  5. C语言 | 递增运算符
  6. python安装库报错Microsoft visual c++ 14.0 is required问题解决办法
  7. Python中的append()和extend()
  8. android实现欢迎启动界面
  9. mysql重建索引_mysql创建、删除、重建、删除索引的操作命令的一些总结
  10. spring源码核心:DefaultListableBeanFactory
  11. wap2.0技巧篇(转)
  12. Cortex-M3和Cortex-M4 Fault异常基础知识
  13. java gef_GEF最简单的入门-helloword(1)
  14. RCNN算法思想简单讲解概述————(究极简单的讲述和理解)
  15. HTML+CSS美食静态网页设计——八大菜系介绍舌尖上的美食5页
  16. 苹果删除照片不释放内存_手机内存不足又卡顿,别瞎清理,删除这些文件夹,轻松释放几个G!...
  17. Linux系统开启服务器BBR加速教程
  18. java.lang.IllegalArgumentException: bound must be positive
  19. 一个实验了解多层内网渗透
  20. 青岛——生命转折的地方

热门文章

  1. grep 不区分大小写_使用不区分大小写的Grep
  2. stl C++文件读写
  3. 微信公众号文章采集的一些基础概念
  4. input 表单的type属性
  5. 删除矮人Dos目录argh
  6. 机器人手眼标定 (四轴六轴都适用)
  7. 【答学员问】假如面试通过,我能不能问hr为什么选择我?
  8. 开发者 J 有意思|1024 开发者嘉年华活动正式启幕
  9. 谷歌浏览器(Google Chrome)清除密码等缓存记录
  10. 错误:is quoted with which must be escaped when used within the value