python适合什么样的人群_使用Python做人群相似度分析

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

1、数据准备

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

b58f8c5494eef01fc28d11e8586a3020bd317d98.png?token=9a2c7a7d207f4ef96351bdadd9215024&s=4A0A5F28554E4CE81ED5A1DA0000C0B1

实际数据如下:

72f082025aafa40fb70f6be017f0aa4a79f01958.png?token=855b3be588187e97e245d26efbbe64f7&s=3EAC70239F2959011AF480DA000080B1

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返回各个参数的值。

最终产出的效果图表:

d833c895d143ad4b203ae8013596f3aaa50f0671.png?token=be1d23068b5eadbba910981441ac0811&s=5AA83462199F40C84E7460DF0300E0B1

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值