Python数据挖掘与机器学习,快速掌握聚类算法和关联分析

摘要:前文数据挖掘与机器学习技术入门实战与大家分享了分类算法,在本文中将为大家介绍聚类算法和关联分析问题。分类算法与聚类到底有何区别?聚类方法应在怎样的场景下使用?如何使用关联分析算法解决个性化推荐问题?本文就为大家揭晓答案。

本次直播视频精彩回顾, 戳这里

演讲嘉宾简介:
韦玮,企业家,资深IT领域专家/讲师/作家,畅销书《精通Python网络爬虫》作者,阿里云社区技术专家。

以下内容根据演讲嘉宾视频分享以及PPT整理而成。

本文将围绕一下几个方面进行介绍:
1. 聚类问题应用场景介绍
2. K-Means算法介绍与实现
3. 使用K-Means算法对公司客户价值进行自动划分案例实战
4. 关联分析问题应用场景介绍
5. Apriori算法介绍
6. FP-Growth算法介绍
7. 使用关联分析算法解决个性化推荐问题
8. 作业练习:使用关联分析算法解决超市商品货品摆放调整问题

一. 聚类问题应用场景介绍

聚类问题主要用于解决没有明确分类映射关系的物品归类问题,即无监督学习。分类算法必须需要训练数据,训练数据包含物品的特征和类别(label, 也可以被称作标签),这相当于对这些数据建立了映射规则,这种映射规则可以通过机器学习相应的算法来建立,当需要对新的数据进行分类时,就可以直接调用模型,对数据进行相应的处理来实现分类。那么当没有历史数据的时候要对现存的物品进行归类,就需要使用聚类算法解决。比如,聚类算法可以实现公司客户价值自动划分,网页自动归类等。

二. K-Means算法介绍与实现

K-Means算法是一种经典的聚类算法,也称作K均值聚类算法,先为大家介绍K-Means算法的原理。

假设建立一个坐标系,这个坐标系的横坐标是价格,纵坐标是评论。然后根据每个物品的这两项特征将物品放置在该坐标系中,那么如何将这些物品划分为k类,此处k为自定义。例如,可以定义k为2,即将所有物品划分为两类。首先,随机选择两类的中心点AB,这两个点称为聚类中心。初始的聚类中心是随机选择,很大概率上并不是真正的类中心,因此这两点会在后续的聚类过程中不断调整,直至趋于真正的聚类中心。其次,分别计算各个物品距两个聚类中心AB的距离,将其划分至距离较近的聚类中心点一类。例如,点1距A的距离小于点1距B的距离,因此将点1划分至A类。如此,初步将所有点划分为两类,接着需要对每类的聚类中心进行调整。这个阶段,需要对每一类计算重心位置,将这类的聚类中心移动到该重心位置,得到两类的新聚类中心A’ B’。然后再一次计算各个物品距两个新的聚类中心A’ B’的距离,进行距离比较,得到新的聚类结果。按照这样的方法不断迭代,不断的向正确结果靠拢,最终聚类过程会收敛,得到的聚类中心不再变化,便已经得到最终的聚类结果,也就是将物品分成了两类。

按照上述过程,K-Means的步骤大致如下:1. 初始化聚类中心(随机选择);2. 计算样本点到各聚类中心的距离;3. 将样本点归为距离较近的聚类中心一类;4. 移动聚类中心到类别的重心位置,调整聚类中心; 5. 重复234步骤,直到聚类中心不再改变。 
 

那么K-Means算法如何实现?在Python中实现K-Means算法其实是相对容易的,首先需要导入K-Means模型,导入模型后可以设置聚类的个数,然后直接使用fit_predict来实现聚类过程,具体代码如下:
from sklearn.cluster import KMeans
kms=KMeans(n_clusters=3)
y=kms.fit_predict(x)
接下来就使用K-Means算法来解决公司客户价值自动划分的问题。

三. 使用K-Means算法对公司客户价值进行自动划分案例实战

开始聚类时,公司的客户只是具有某些特征,没有具体的分类标准。那么可以直接根据特征进行聚类,得出聚类结果后再分析研究这些类别的真实含义。

假设初始时存在部分客户的数据如下,包含客户年龄,平均每次消费金额,平均消费周期等数据。

现需要对上述客户进行聚类,以帮助公司快速区别出普通客户,VIP客户和超级VIP客户。在有其他历史数据的情况下,可以将这些用户的特征和客户类型建立起映射关系,通过机器学习训练便可以得到未知的客户类型。但在没有历史数据的情况下,这就是典型的聚类问题。具体代码如下:
#通过聚类分析客户价值
import pandas as pda
import numpy as npy
import matplotlib.pylab as pyl
fname="D:\\我的教学\\Python\\阿里云系列直播\\第4次直播代码\\company.csv"
dataf=pda.read_csv(fname,encoding="gbk")
x=dataf.as_matrix()
from sklearn.cluster import KMeans
kms=KMeans(n_clusters=3)
y=kms.fit_predict(x)
print(y)
#年龄-消费金额图,消费时间-消费金额图,年龄-消费时间图
for i in range(0,len(y)):
    if(y[i]==0):
        print(str(i)+"大众客户")
        pyl.subplot(2,3,1)
        #年龄-消费金额图
        pyl.plot(dataf.iloc[i:i+1,0<
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值