R语言实现青少年市场细分(数据科学导引)

【1】案例背景

随着推特和微信等社交网络平台的流行,越来越多的青少年用户会在这些平台发布信息。这些数据能够反映青少年的行为兴趣,结合平台上用户的性别、年龄等信息,对于挖掘青少年细分市场具有很大价值。

【2】方法陈述

K-Means是一种基于欧式距离的聚类算法,它的基本思想是,通过迭代寻找K个簇(Cluster)的一种划分方案,使得聚类结果对应的损失函数最小。它的优点是:高效可伸缩,计算复杂度为接近于线性(N是数据量,K是聚类总数,t是迭代轮数);收敛速度快,原理相对通俗易懂,可解释性强。在此,采用K-means聚类实现青少年市场细分。

【3】实验代码

  1. 步骤一

#读取数据查看数据特征

teenager_sns <- read.csv("C:/Users/17909/Desktop/teenager_sns.csv")

summary(teenager_sns)

sum(is.na(teenager_sns$gender))

sum(is.na(teenager_sns$age))

  1. 步骤二

#数据预处理

#处理异常值和缺失值

teenager_sns$age <- ifelse(teenager_sns$age >= 13 & teenager_sns$age < 20,

teenager_sns$age, NA)

summary(teenager_sns$age)

#进行虚拟编码

teenager_sns$female <- ifelse(teenager_sns$gender == "F" &

!is.na(teenager_sns$gender), 1, 0)

teenager_sns$no_gender <- ifelse(is.na(teenager_sns$gender), 1, 0)

table(teenager_sns$gender, useNA = "ifany")

table(teenager_sns$female, useNA = "ifany")

table(teenager_sns$no_gender, useNA = "ifany")

#均值插补

mean(teenager_sns$age, na.rm = TRUE) # works

aggregate(data = teenager_sns, age ~ gradyear, mean, na.rm = TRUE)

ave_age <- ave(teenager_sns$age, teenager_sns$gradyear,

FUN = function(x) mean(x, na.rm = TRUE))

teenager_sns$age <- ifelse(is.na(teenager_sns$age), ave_age, teenager_sns$age)

summary(teenager_sns$age)

  1. 步骤三

#训练模型

interests <- teenager_sns[3:40]

interests_z <- as.data.frame(lapply(interests, scale))

set.seed(2345)

teen_clusters <- kmeans(interests_z, 5)

teen_clusters$size

  1. 步骤四

#结果分析

teen_clusters$centers

hist(teen_clusters$centers)

【4】结果分析

读取数据查看数据特征,发现age和gender有缺失值,如图1所示,查看缺失值个数,发现gender缺失2724个,age缺失5086个。

图1 数据特征

同时发现age最小值为3.086,最大值为106..927,显然不符合实际,因此将age>20或age<13的值视为异常值,将异常值赋值为NA。接着对age使用均值插补,age新的特征结果如图2所示。

图2 均值插补后age的数据特征

由于gender数据类型为character,所以对其进行虚拟编码,如图3所示。

图3 对gender进行虚拟编码

对数据预处理结束后,进行模型的训练,在此,将细分市场的个数设置为5,每一个类中样本的数目如图4所示。

图4 K-means中每一类样本的数目

观察每一类的聚类中心,如图5所示, 如果聚类中心在某一个变量取值大于0,代表该聚类所代表的群体在该变量取值大于群体平均水平,由此,可分析聚类所代表的群体。

图5 每一类的聚类中心

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值