在各个行业,尤其是电商行业当中,经常需要做各个人群之间的相似度分析,以便于找到品牌的核心用户,在拉新过程中,我们也需要用现有数据来挖掘潜在客户。下面为大家提供一个做人群相似度的思路。

1、数据准备

需要准备的数据包括每一类数据及其特征,

实际数据如下:

2、计算人群距离

这里我们评价一个类别是否和其它类别相似,可是用各个类别的距离来衡量,这里需要用到一个包:

from scipy.spatial import distance

这个包可以计算各个人群之间的距离。

file = '20191023_114315pivot_people_huaxiang.xlsx'df = pd.read_excel(file, index_col='人群包')df.fillna(0, inplace=True)disMat = distance.pdist(df, 'euclidean')D = distance.squareform(disMat, force='no', checks=True)df_D = pd.DataFrame(D)df_D.index = list(df.index.values)df_D.columns = list(df.index.values)print(df_D)

这里面主要用到了distance当中的两个函数,一个是pdist,一个是squareform。

pdist的主要作用是:得到各个点之间的距离; 这样得到的距离并不能明显的看出各个点之间的区别,所以需要squareform函数;

squareform:这个函数可以把之前pdist得到的距离矩阵化,得到冗余矩阵,例如把

array([ 2, 3, 4, 7, 8, 12])

变化成

array([[ 0, 2, 3, 4], [ 2, 0, 7, 8], [ 3, 7, 0, 12], [ 4, 8, 12, 0]])

这样我们就得到了各个点之间的距离,距离越大相似度就越小;

3、通过主成分分析画散点图

通过距离的数字有时候并不能明显的看出各个点之间的相似关系,所以我们还可以把所有的点画成散点图。散点图只有两个维度,而我们的数据源却有多个维度,所以,第一步就是降维,使用到的包是:

from sklearn import decomposition as skldec

这个包可以帮我们筛选出来两个主要的维度,得到结果之后画散点图:

#根据两个最大的主成分进行绘图pca = skldec.PCA(n_components = 0.95) pca.fit(df) # 主成份分析时每一行是一个输入数据result = pca.transform(df) #计算结果plt.rcParams["font.sans-serif"] =["SimHei"]plt.rcParams["axes.unicode_minus"] = Falseplt.figure() #新建一张图进行绘制plt.scatter(result[:, 0], result[:, 1], c=label, edgecolor='k') #绘制两个主成分组成坐标的散点图for i in range(result[:,0].size): plt.text(result[i,0],result[i,1],df.index[i]) #在每个点边上绘制数据名称x_label = 'PC1(%s%%)' % round((pca.explained_variance_ratio_[0]*100.0),2) #x轴标签字符串y_label = 'PC1(%s%%)' % round((pca.explained_variance_ratio_[1]*100.0),2) #y轴标签字符串plt.xlabel(x_label) #绘制x轴标签plt.ylabel(y_label) #绘制y轴标签plt.show()

使用PCA降维之后还可以查看降维的效果:

>>> pca.n_components1>>> pca.explained_variance_ratio_array([ 0.99910873])>>> pca.explained_variance_array([ 2.55427003])>>> pca.get_params

以上面的数据为例,我们所训练的pca对象的n_components值为1,即保留1个特征,该特征的方差为2.55427003,占所有特征的方差百分比为0.99910873,意味着几乎保留了所有的信息。get_params返回各个参数的值。

最终产出的效果图表:

从图中距离的远近我们就可以看出各个人群的相似关系,以便于我们在人群精细化运行的过程中提供参考。

python 文件相似度分析_使用Python做人群相似度分析相关推荐

  1. python 文件批量转换格式_使用python批量化音乐文件格式转换的实例

    使用python批量化音乐文件格式转换的实例 最近在做声音文件数据处理,写了一个自动将m4a文件转化为wav的脚本. import os m4a_path = "/Users/Downloa ...

  2. python 文件编码的识别_【python】python编码方式,chardet编码识别库

    环境: python3.6 需求: 针对于打开一个文件,可以读取到文本的编码方式,根据默认的文件编码方式来获取文件,就不会出现乱码. 针对这种需求,python中有这个方式可以很好的解决: 解决策略: ...

  3. python文件内容去重优化_关于python在seo中的运用

    随着前两年云计算和大数据的到来,python 已经火了一遍,目前更是火的一塌糊涂.IEEE Spectrum 研究报告显示,python语言目前已经排名第一,它被成为全能语言,web站开发,爬虫数据采 ...

  4. seek是python文件操作方法吗,seek引发的python文件读写的问题

    我的需求很简单,就是统计一下我的安装脚本执行的次数和时间,格式是这样的 install_times:1|install_times:2018-09-03 15:58:46 install_times: ...

  5. Linux的Python文件的开头/usr/bin/env python与/usr/bin/python

    Linux的Python文件的开头/usr/bin/env python与/usr/bin/python还是有点区别的 开头为#!/usr/bin/env python 例如 dstat命令,当/us ...

  6. 用python进行营销分析_用python进行covid 19分析

    用python进行营销分析 Python is a highly powerful general purpose programming language which can be easily l ...

  7. python3 上传文件到目标机器_再见Python 2.7,你好Python 3.7

    安装python3 直接下载安装 1.下载地址如下:python 3.7 2.点击下载好的pkg文件进行安装 3.安装完成之后,python 3.70的默认安装路径如下: /Library/Frame ...

  8. python二进制文件 删除尾部数据_在Python中读取和切片二进制数据文件的最快方法...

    我有一个处理脚本,用于提取"uint16"类型的二进制数据文件,并一次以6400块的形式进行各种处理.该代码最初是用Matlab编写的,但由于分析代码是用 Python编写的,我们 ...

  9. python数字识别kaggle论文_基于Python语言Kaggle的数据集分析

    界 基于 Python 语言 Kaggle 的数 据集 分析 段 聪 聪 柴 世 一 * 渊 河 南 大 学 计 算 机 与 信 息 工 程 学 院 袁 河 南 开 封 475004 冤 揖 摘 要 ...

最新文章

  1. SAP PM 入门系列6 - PM常用表
  2. centos 网卡配置(入门级)
  3. 【深度学习】卷积神经网络速成
  4. python pywin32 微信_Pywin32错误地安装进Anaconda的Python里了
  5. elasticsearch-1.3.0 之索引代码粗略梳理
  6. EasyUI:导出datagrid数据到桌面
  7. CCNA培训视频教程下载
  8. 西威变频器avo下载调试资料_免费下载 |《西门子全集成自动化技术》,很全很详细...
  9. 我的世界java版怎么打开游戏菜单_我的世界游戏界面设置方法
  10. log以2为底的对数
  11. 有哪些建议给应届毕业生(转载知乎某大佬)
  12. [颜色知识] 潘通色卡、CMYK、RGB、 ARGB...
  13. 短线王的盯盘宝怎么样_股票盯盘系统app怎么样
  14. 西安交大软件学院推免远程面试夏令营分享
  15. 构建完整的API构架与Buddy API使用示例
  16. FNN模糊神经网络——信息系统客户服务感知评价
  17. 优秀的程序员!=爱写博客的程序员
  18. LVM逻辑卷 与 磁盘配额
  19. html常见模板语法,模板语法
  20. 用捷易拍文件拍摄仪搭建数字图书馆

热门文章

  1. Upload-Labs(16)
  2. docker前后端分离_Docker分离模式介绍
  3. freecodecamp_关于freeCodeCamp-常见问题
  4. 学习ReasonML编程语言
  5. 数据结构链表代码_代码简介:链表数据结构如何工作
  6. 第一部linux手机,手机界再掀风波,英特尔力争在下一部手机中抢得一席之地
  7. ddt python_python-ddt实践
  8. 自然语言处理实践Task3
  9. 安装ubuntu18.04虚拟机太慢
  10. matlab的m函数入门2