内容简介:本文为 AI 研习社编译的技术博客,原标题 :Customer segmentation using Machine Learning K-Means Clustering
本文为 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 入门指南
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 【火炉炼AI】机器学习027-项目案例:用聚类算法建立客户细分模型
- 客户端 IPV6 迁移适配:连接竞速算法 Happy Eyeballs 探索实践(一)
- 支付宝客户端架构解析:iOS 客户端启动性能优化初探
- 自己动手做数据库客户端: BashSQL开源数据库客户端
- 支付宝客户端架构解析:Android 客户端启动速度优化之「垃圾回收」
- Odoo 商城模块 Oejia_weshop v0.2.3 发布,多种客户资产及客户分级,多商户管理
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
python学习手册(原书第5版)
马克·卢茨 / 机械工业出版社 / 2018-10 / 219
如果你想动手编写高效、高质量并且很容易与其他语言和工具集成的代码,本书将快速地帮助你利用Python提高效率。本书基于Python专家的流程培训课程编写,内容通俗易懂。本书包含很多注释的例子和插图,以帮助你开始使用Python2.7和3.3。每章都包含关于Python语言的重要组成部分的一节课。本书主要内容:了解Python的主要内置对象类型,如数字、列表和字典;创建和处理对象的Python语句,......一起来看看 《python学习手册(原书第5版)》 这本书的介绍吧!