通过移动设备行为数据预测使用者的性别和年龄

该项目旨在通过用户行为数据预测人口属性,涉及多表连接、数据处理、OneHot编码和特征选择。数据集包含约20万用户,涵盖设备ID、性别、年龄、事件ID和用户分组等信息。特征工程中,对手机品牌和型号进行编码,处理安装APP的次数和种类,并进行特征归一化、选择和PCA降维。最终,使用逻辑回归和SVM模型进行训练,得到最佳参数并评估模型性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

资源下载地址:https://download.csdn.net/download/sheziqiong/85657041
资源下载地址:https://download.csdn.net/download/sheziqiong/85657041
此项目为入门项目,用来了解:

  1. 多表连接,数据处理;

  2. OneHot编码

  3. 特征选择;

  4. 交叉验证选择参数

项目介绍:

  1. 通过行为习惯对移动用户人口属性(年龄+性别)进行预测

  2. 数据及包含~20万用户数据,分成12组,同时提供了用户行为属性,如:手机品牌、型号、 APP的类型等

步骤:

  • 解读数据
  • 特征工程
  • 模型调参
  1. 数据集结构

在这里插入图片描述

  1. 数据集说明:

每个用户用一个ID表示,一个用户的行为是在一系列的Events里面,每个Event里面的信息包括该ID行为发生的时间、地理坐标信息,安装的APP类型、手机型号类别等

数据集基本信息

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 74645 entries, 0 to 74644
Data columns (total 4 columns):
#   Column     Non-Null Count  Dtype 
---  ------     --------------  ----- 
device_id  74645 non-null  int64 
gender     74645 non-null  object
age        74645 non-null  int64 
group      74645 non-null  object
dtypes: int64(2), object(2)
memory usage: 2.3+ MB

特征内容:

  • device_id: 设备id (主键)

  • gender:用户性别

  • age:用户年龄

  • event_id:事件id标识

  • group:用户分组

  • phone_brand: 手机品牌

  • device_model: 设备型号

  • timestamp: 事件发生时间

  • ……

项目流程:

  1. 分割数据集

将原数据划分为训练集和测试集,用来验证训练出的模型准确率

  1. 加载数据
index_col='device_id';index_col='event_id'

加载时,设定各表之间的关联键,实现表的连接

  1. 特征工程

3.1 手机品牌特征

  • 使用LabelEncoder将类别转换为数字,
  • 使用OneHotEncoder将数字转换为OneHot码,稀疏矩阵

3.2 手机型号特征

  • 合并手机品牌与型号字符串产生新的特征继续使用OneHotEncoder编码

3.3 安装app特征

  • 将表“event”和“app_events“进行连接,获取运行app的总次数和运行app的个数
n_run_s=device_app['app_id'].groupby(device_app['device_id']).size()
n_app_s=device_app['app_id'].groupby(device_app['device_id']).nunique()
  • 填充缺失数据,没有的数据简单粗暴,直接填0

3.4 合并所有特征

tr_feat=np.hstack((tr_brand_feat.toarray(),tr_model_feat.toarray(),tr_app_feat,tr_run_feat))  
te_feat = np.hstack((te_brand_feat.toarray(),te_model_feat.toarray(), te_app_feat, te_run_feat))   

合并后:每个样本特征维度: 1800

tr_app_feat.shape: (1866, 1800) te_app_feat.shape: (1866, 1800)

3.5 特征范围归一化,这里选用标准归一化

3.6 特征选择,通过标准差,方差初步筛除掉变化很小的特征

3.7 PCA降维操作,选取95%的重要性进行保留
pca=PCA(n_components=0.95)

​ 处理后每个样本特征维度: 439

  1. 为数据添加标签

对target特征‘group‘进行编码,标记为target

  1. 训练模型

5.1 逻辑回归模型

clf=GridSearchCV(lr_model,lr_param_grid,cv=5)    #网格搜索超参数

5.2 SVM模型

svm_param_grid=[{'C':[1e-2,1e-1,1,10,100],'gamma':[0.001,0.0001],'kernel':['rbf']}]
# 网格搜索超参数
best_svm_model=svm_grid.best_estimator_
best_svm_para = svm_grid.best_params_
  1. 预测结果 logloss

训练逻辑回归模型…

最好的回归模型参数是: {‘C’: 10}

训练SVM模型…

最好的svm模型参数是: {‘C’: 1, ‘gamma’: 0.001, ‘kernel’: ‘rbf’}

逻辑回归模型 logloss: 0.5017557850900733

SVM logloss: 0.846481034000951

资源下载地址:https://download.csdn.net/download/sheziqiong/85657041
资源下载地址:https://download.csdn.net/download/sheziqiong/85657041

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shejizuopin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值