1、聚类分析

是按照个体的特征将他们分类,让同一个类别内的个体之间具有较高的相似度,不同类别之间具有较大的差异性;

2、基本理论

Kmeans:K表示算法当中类的个数

Means 均值算法:K-means 使用均值算法把数据分成k个类别的算法

Kmeans算法:kmeans算法的目标,是把n个样本点划分到k个类中,使得每个点都属于离他最近的质心对应的类,以此作为聚类的标准

质心:是指一个类,内部所有样本点的均值

3、步骤

# 第一步
取得K个初始质心:从数据中随机抽取k个点作为初始聚类的中心,由这个中心代表各个类

# 第二步
根据欧式距离最小原则,把每个点划分配进距离最近的类中
# 第三步
重新计算质心:根据均值等方法,重新计算每个类的质心
# 第四部
迭代计算质心:重复第二步和第三步,迭代计算质心
# 第五步
聚类完成:聚类中心不再发何时能移动

4、聚类方法

sklearn.cluster.Kmeans(n_cluster=8)

n_clusters 要聚类的个数
    
fit(date) 训练模型

data 训练数据

predict(data) 预测

data 需要预测的数据

5、案例代码

# 目的:识别站点应用最广泛的模型是通过:流水、费比roi、当周销转、跨期销转 网销 销转 import pandasdata = pandas.read_csv('D:\\DATA\\pycase\\number2\\Data.csv')explore=data.describe() # 查看数据框基本的信息描述、均值、标准差等len(data) # 数据的行数data.shape # 数据规模,行列data.dtypes # 数据的格式类型data.columns # 提取数据列# 1 数据预处理# 处于花费小于等于0的数据Data=data[(data.现金>0)&(data.流水>0)]# 选择360 头条 广点通 百度 微信 UC 用或“|”的关系 与“&” 非 notData=Data[(Data.广告商.str.contains('今日头条'))|(Data.广告商.str.contains('腾讯广点通'))|(Data.广告商.str.contains('360网盟'))|(Data.广告商.str.contains('微信朋友圈'))|(Data.广告商.str.contains('UC头条'))]# T=('今日头条','腾讯广点通') 数组# 数据探索查看explore=Data.describe()# 2 数据规约
# 原始数据属性太多,根据站点价值挖掘模型,选择与ZD指标相关的6个属性;
# 进行属性的筛选,在底表里边选择流水、现金、当周报名人数、跨期报名人数、报名人数、名片量 展现量# 添加对应的数据属性Data=Data[['站点ID','现金', '流水', '当期报名人数', '跨期报名人数',  '名片量', '展现量','报名人数']]Data['Cvr']=Data.名片量/Data.展现量Data['销转']=Data.报名人数/Data.名片量Data['ROI']=Data.现金/Data.流水Data['当期销转']=Data.当期报名人数/Data.名片量Data['跨期销转']=Data.跨期报名人数/Data.名片量Data['名片成本']=Data.现金/Data.名片量Data.columns# 提取聚类属性TData=Data[['站点ID', '销转', 'ROI', '流水','名片成本','Cvr','当期销转', '跨期销转']]# 异常值处理(在这里,当期销转大于1为异常数据)SData=TData[TData.当期销转<1]Explore=SData.describe()# 3 数据变换# 将数据转换成“适当的”格式,以适应挖掘任务及算法的需要,构造需要的数据属性# 0-1 表转化处理from sklearn.preprocessing import MinMaxScalerscaler=MinMaxScaler()SData[[ '销转', 'ROI', '流水','名片成本','Cvr','当期销转', '跨期销转']]=scaler.fit_transform(SData[[ '销转', 'ROI', '流水','名片成本','Cvr','当期销转', '跨期销转']])# 找到空值所在位置 isNA=TData.isnull()# 获取空值所在行 TData[isNA.any(axis=1)]# 替换掉NA值 TData=TData.fillna('0')# 4  模型构建# 站点价值Fenix模型构建主要由两部分构成,第一部分根据航空公司客户5个指标的数据,对客户进行聚类分群。第二部分结合业务对每个站点群进行特征
# 分析,分析站点的价值,并且对每个站点群进行排名# 选择需要聚类的变量,以list形式展现fcolumns=['销转', 'ROI', '流水','名片成本','Cvr','当期销转', '跨期销转']from sklearn.cluster import KMeans# 设置聚类参数
ZDModel=KMeans(n_clusters=5)ZDModel=ZDModel.fit(SData[fcolumns])# 对聚类的结果客户进行类别标注pTarget=ZDModel.predict(SData[fcolumns])# 查看每个客户的额类别分布情况,也可以进行分组import pandaspandas.crosstab(pTarget,pTarget)import matplotlibimport matplotlib.pyplot as plt# 聚类后需要查看不同客户类别之间对应现有属性值得差异
# 在这里使用每个属性值得均值,以直方图的形式展现# 用数据框来表示,在现有的属性后加类别属性列  dMean=pandas.DataFrame(columns=fcolumns+['分类'])# 通过客户聚类类别对各属性特征进行分类SData_gb=SData[fcolumns].groupby(pTarget)#  坐标轴字体、绘图格式设置import matplotlib.font_manager as font_managerfontprop=font_manager.FontProperties(fname='C:\\windows\\Fonts\\msyh.ttF' )font={'family':fontprop.get_name(),'size':15}matplotlib.rc('font',**font)# 对dmean数据框进行添加数据执行FOR循环,这是两层循环dMean=pandas.DataFrame() # 初始化# 注意for循环为嵌套循环,两个循环一起执行plt.figure(figsize=(16,16)) # 条形图大小i=0
for g in SData_gb.groups:# 获得每种客户的均值  rMean=SData_gb.get_group(g).mean()rMean['分类']=g;rMean['总计']=SData_gb.get_group(g).size/7dMean=dMean.append(rMean,ignore_index=True)# 通过直方图查看各个类别对应所有属性之间的差异subData=SData_gb.get_group(g)for column in fcolumns:i=i+1p=plt.subplot(5,7,i)#进行5行7列的规则划分p.set_title(column)p.set_ylabel(str(g)+"分类")plt.hist(subData[column])plt.tight_layout() #调整子图间距# %matplotlib qt 弹窗# 注释:原案例查看数据,无法可视化ZDModel.cluster_centers_ # 查看聚类中心SData['分类']=ZDModel.labels_ # 查看各样本对应的类别## 导出所需要的文件# 数据表之间的匹配SData_left=TData.merge(SData[['站点ID','分类']],left_on='站点ID',right_on='站点ID',how='left')SData_left.to_csv('D:\\DATA\\pycase\\number2\\project\\SData_left.csv',index=False,encoding='utf_8_sig' # 重要,避免中文乱码)
dMean.to_csv('D:\\DATA\\pycase\\number2\\project\\dMean.csv',index=False,encoding='utf_8_sig' # 重要,避免中文乱码)

21、python的K-means聚类分析方法案例代码相关推荐

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

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

  2. 从零开始用Python实现k近邻算法(附代码、数据集)

    作者:Tavish Srivastava 翻译:王雨桐 校对:丁楠雅 本文约2000字,建议阅读8分钟. 本文将带领读者理解KNN算法在分类问题中的使用,并结合案例运用Python进行实战操作. 注意 ...

  3. python制作编程软件的方法_python代码能做成软件吗

    我们首先还是使用pip进行安装: pip install PyInstaller 安装完成后,直接打开命令行,输入pyinstaller,如果显示如下界面,说明安装成功. 然后就可以进行我们小程序的封 ...

  4. Python计算基尼系数实践笔记(案例+代码+视频+列表推导式)

    前些天听了南京大学周耿老师关于"基尼系数计算"的直播课,需要时间好好消化,便有了整理此篇文章的想法. 1 基尼系数 1.1 简介 1912年意大利经济学家基尼,设计了一个测度社会贫 ...

  5. 【Python入门】Python字符串的45个方法详解

    Python中字符串对象提供了很多方法来操作字符串,功能相当丰富.必须进行全面的了解与学习,后面的代码处理才能更得心应手,编程水平走向新台阶的坚实基础.目前一共有45个方法,给大家分类整理,可以收藏查 ...

  6. python求圆面积_python如何求圆的面积 python求圆的面积方法

    python如何求圆的面积?本篇文章小编给大家分享一下python求圆的面积方法,代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 首先我们要知道圆的面积计算 ...

  7. spss聚类分析_SPSS聚类分析 I K均值聚类法案例实操

    - 点击上方"中国统计网"订阅我吧!- 文末领取医疗行业报告 今天想写一下聚类分析方法之一:K-Mean聚类法 01聚类分析模型简介 (1)聚类分析没有过多的统计理论支持,也没有统 ...

  8. python 股票图表_k线图分析法_【趣味案例】用Python绘制K线图,一眼看清股市状况...

    本文介绍关于[趣味案例]用Python绘制K线图,一眼看清股市状况及神一般的裸k交易法,精髓就这三步,一目了然!精髓就这三步,一目了然!(附图解析)的相关内容. [趣味案例]用Python绘制K线图, ...

  9. python 聚类分析实战案例:K-means算法(原理源码)

    K-means算法: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xvV44zrK-1573127992123)(https://img-blog.csdn.net/ ...

最新文章

  1. 半小时训练亿级规模知识图谱,亚马逊这个 AI 框架要火
  2. 洛谷 P4475 巧克力王国 解题报告
  3. monty python喜剧-Monty Python(蒙提·派森)的成员简介
  4. 前端学习(508):水平和垂直居中第一种方式
  5. socket编程介绍
  6. 360浏览器打不开网页_苹果移动端、PC端safari浏览器打不开网页的解决方案!
  7. spring datasource oracle,spring中2种oracle数据源的配置
  8. 微软出品,文科生也能学得懂的Python免费入门视频
  9. 从char到QChar
  10. C#实现把科学计数法(E)转化为正常数字值 (转)
  11. wamp3.1.0下载地址
  12. 详解CATransformLayer
  13. 2.3Word2003段落设置1
  14. 从零开始配置vim(22)——lsp简介与treesitter 配置
  15. win10电脑IIS服务器配置ASP环境
  16. 重改破解易支付码支付V5.0源码
  17. 宝子,你知道小程序代码大小超限除了分包还能怎么做吗?
  18. Vue npm install失败报错errno -4058
  19. 爱荷华大学计算机科学专业,2015 U.S News计算机科学专业排名(不知道有没有伙伴在找)...
  20. Pocket PC如何与PC机联网

热门文章

  1. ICCV 2021 口罩人物身份鉴别全球挑战赛冠军方案分享
  2. 运动无线耳机哪款不容易掉、最不容易脱落的蓝牙耳机推荐
  3. elasticsearch 常见查询及聚合的JAVA API
  4. 太牛了!我的阿里春招之路分享,值得收藏!
  5. 友芝友生物冲刺港交所上市:极其依赖单一供应商,周鹏飞为董事长
  6. IT软件行业用契约锁实现“代理-销售-投标-项目-合作”电子签
  7. AMiner发布:2022年人工智能全球最具影响力学者榜单AI 2000
  8. matplotlib调整坐标轴最小刻度单位,坐标轴主副刻度单位
  9. js jQuery方法join()
  10. IP地址划分, 常见的CIDR划分,子网掩码对应表及在线CIDR工具