使用历史数据预测用户明天是否会访问图书馆

数据挖掘 Python scikit-学习 预测建模 熊猫 训练
2022-02-22 14:47:51

我的数据框包含 7000 行,其中包含以下库登录详细信息:登录时间、库 ID(用户 ID)、登录日期、罚款/未。

该数据用于本地图书馆,我想创建一个模型来预测人们对图书馆的访问。比方说,有会员libraryid=1015明天去图书馆的机会。在过去的 2-3 年里,图书馆有很多常客。

我尝试了以下方法:

clf = RandomForestClassifier(n_estimators=30)
clf.fit(df_train[features], df_train['a'])

由于涉及日期,因此无法获得所需的结果。

       login_time id login_date 罚款
0 2016-02-29 23:28:58 1015 2016-02-29 1
1 2016-03-01 00:19:27 4890 2016-03-01 1
2 2016-03-01 04:40:17 1020 2016-03-01 0
3 2016-03-01 04:41:05 9134 2016-03-01 1
4 2016-03-01 05:00:27 7798 2016-03-01 1
5 2016-03-01 05:01:21 1325 2016-03-01 1
6 2016-03-01 05:02:22 5017 2016-03-01 1
7 2016-03-01 05:05:47 2730 2016-03-01 1
8 2016-03-01 05:09:57 8125 2016-03-01 1
9 2016-03-01 05:10:47 8604 2016-03-01 1
10 2016-03-01 05:16:26 9033 2016-03-01 1
11 2016-03-01 05:17:23 7096 2016-03-01 1
12 2016-03-01 05:18:02 1022 2016-03-01 1
13 2016-03-01 05:19:33 1015 2016-03-01 1
14 2016-03-01 05:19:48 3087 2016-03-01 1
15 2016-03-01 05:21:40 5641 2016-03-01 0
16 2016-03-01 05:28:25 5548 2016-03-01 1
17 2016-03-01 05:31:54 8970 2016-03-01 0
18 2016-03-01 05:58:52 7781 2016-03-01 1
19 2016-03-01 06:09:12 5859 2016-03-01 1
20 2016-03-01 06:13:28 1017 2016-03-01 1
21 2016-03-01 06:14:35 8138 2016-03-01 1
22 2016-03-01 06:15:41 1018 2016-03-01 1
23 2016-03-01 06:17:40 9355 2016-03-01 1
24 2016-03-01 06:18:10 10583 2016-03-01 1
25 2016-03-01 06:20:44 2394 2016-03-01 0
26 2016-03-01 06:29:17 10168 2016-03-01 1
27 2016-03-01 06:31:11 4235 2016-03-01 0

我使用了 ARIMA 模型,模型运行时间太长,请提供其他解决方案。

1个回答

首先,您需要将数据重新格式化为所谓的平衡面板结构。对于训练数据中的每一天,每个用户都应该拥有与他们是否访问过的指示变量相关联的当天记录。如果您的训练数据中的每条记录都对应于一次访问,那么您就没有给这些分类器提供太多的工作机会。您的模型需要知道用户在不访问的日子里的状态,以便能够区分他们将访问和不访问的日子。指示变量,表示“此用户今天访问过”,是您预测的目标。不是日期或时间列,如果那是您正在尝试的。

此外,您还需要进行一些特征工程这个过程包括花费在大多数数据科学项目上的大部分时间和创造力,你将投入的努力将决定你的项目成败。对于数据集中的每条记录,您应该计算以下内容:

  • 星期/月/年是星期几?
  • 在过去的 k 天里,用户在一周的这一天访问了多少次?
  • 在过去的 k 天里,用户在工作日/周末访问了多少次?
  • 自用户上次访问以来已经过了多少天?
  • 用户在过去 k 天内访问了图书馆多少次?
  • 在过去的 k 天内,用户访问图书馆并支付了多少次罚款?
  • 最近 k 天访问了多少用户?
  • 图书馆今天是否开放(例如可能是国定假日)?
  • 公立学校现在开课了吗?放假?在决赛?
  • 距离最近一个学期开始有多少天?
  • 距离学期结束还有多少天?

更好的是,如果您不限于向我们展示的内容...

  • 用户目前拥有多少本书?迟到了多少?
  • 如果用户今天访问,他们将欠多少罚款?
  • 他们在上次访问中查看了多少本书?
  • 在过去的 k 天里,他们检查了多少本书?
  • 此人成为图书馆会员多久了?
  • 他们的会员资格过期了吗?
  • 在过去的 k 年里,他们是否允许其会员资格到期?
  • 他们最近更新了地址吗?
  • 在过去的 k 年里,他们捐赠了多少?
  • 该用户在过去 5 年中签出的图书中有多少属于每个杜威十进制类别?

这些只是我脑海中的一些想法。不要让自己被我的建议所限制。

如果您真的只有向我们展示的数据,那么您可以尝试的一个更有可能给您带来良好结果的项目将是预测特定日期将访问图书馆的人数,而不是预测哪些人实际的人。如果这听起来对您有用,请查看泊松模型。