【2025五一数学建模竞赛C题】社交媒体平台用户分析问题|建模过程+完整代码论文全解全析

发布于:2025-05-02 ⋅ 阅读:(90) ⋅ 点赞:(0)

你是否在寻找数学建模比赛的突破点?数学建模进阶思路!

作为经验丰富的美赛O奖、国赛国一的数学建模团队,我们将为你带来本次数学建模竞赛的全面解析。这个解决方案包不仅包括完整的代码实现,还有详尽的建模过程和解析,帮助你全面理解并掌握如何解决类似问题。

详见文末
在这里插入图片描述部分可视化(做了模糊处理,正文里的比这个更细致)
在这里插入图片描述
第一个问题是:基于用户与博主历史交互数据(观看、点赞、评论、关注)的统计分析,能够有效揭示用户行为特征,为内容优化和交互提升提供决策依据。根据附件1提供的数据,请建立数学模型,预测各博主在2024.7.21当天新增的关注数,并根据预测结果,在表1中填写当日新增关注数最多的5位博主ID及其对应的新增关注数。

问题1:预测各博主在2024.7.21当天新增的关注数

1. 问题理解

我们需要基于附件1中提供的2024.7.11至2024.7.20的历史交互数据(观看、点赞、评论、关注),预测每个博主在2024.7.21当天新增的关注数(即有多少新用户关注了该博主)。然后,找出新增关注数最多的前5位博主及其新增关注数。

2. 数据特征
  • 用户行为:1(观看)、2(点赞)、3(评论)、4(关注)。注意,点赞、评论、关注都隐含了观看行为。
  • 时间范围:2024.7.11至2024.7.20。
  • 预测目标:2024.7.21当天每个博主的新增关注数。
3. 建模思路

由于我们需要预测未来一天的新增关注数,可以考虑以下方法:

  1. 时间序列模型:将每个博主每天新增的关注数看作一个时间序列,使用时间序列模型(如ARIMA、指数平滑等)进行预测。
  2. 趋势外推:根据过去几天的新增关注数的趋势,进行简单的外推预测。
  3. 机器学习模型:将博主的历史关注数作为特征,训练回归模型进行预测。

考虑到数据的时间跨度较短(10天),且每个博主的新增关注数可能存在波动,我们选择加权移动平均法进行预测,因为这种方法简单且能较好地反映近期的变化趋势。

4. 数学模型

加权移动平均法:对每个博主,计算过去若干天(如最近3天)的新增关注数的加权平均值,作为预测值。权重可以根据距离预测日期的远近进行调整,较近的日期赋予较大的权重。

假设我们要预测博主 bt+1 天的新增关注数,使用过去 n 天的数据进行加权移动平均。权重向量为 w = [w1, w2, ..., wn],满足 w1 + w2 + ... + wn = 1w1 < w2 < ... < wn(近期的权重大)。

设博主 b 在过去 n 天的新增关注数为 [y_{t-n+1}, y_{t-n+2}, ..., y_t],则 t+1 天的预测值为:
y ^ t + 1 = w 1 ⋅ y t − n + 1 + w 2 ⋅ y t − n + 2 + ⋯ + w n ⋅ y t \hat{y}_{t+1} = w1 \cdot y_{t-n+1} + w2 \cdot y_{t-n+2} + \cdots + wn \cdot y_t y^t+1=w1ytn+1+w2ytn+2++wnyt

在这里,我们选择 n = 3,权重向量 w = [0.2, 0.3, 0.5](越近的权重越大)。

5. 实施步骤
  1. 读取附件1数据,预处理得到每个博主每天的新增关注数。
  2. 对于每个博主,使用过去3天(2024.7.18-2024.7.20)的数据,按照加权移动平均法计算2024.7.21的预测值。
  3. 对预测值进行排序,选出新增关注数最多的5个博主。
6. 代码实现
import pandas as pd

# 读取数据
data = pd.read_excel('附件1.xlsx')

# 提取时间列中的日期
data['date'] = pd.to_datetime(data['时间']).dt.date

# 筛选出关注行为(行为类型为4)
follow_data = data[data['用户行为'] == 4]

# 计算每个博主每天的新增关注数
daily_follows = follow_data.groupby(['博主ID', 'date']).size().reset_index(name='新增关注数')

# 将日期转换为字符串,方便后续处理
daily_follows['date'] = daily_follows['date'].astype(str)

# 获取所有博主ID和日期范围
all_b_loggers = daily_follows['博主ID'].unique()
all_dates = daily_follows['date'].unique()

# 构建完整的博主-日期矩阵,确保每个博主在每天都有记录(如果没有记录,新增关注数为0)
full_matrix = pd.MultiIndex.from_product([all_b_loggers, all_dates], names=['博主ID', 'date']).to_frame(index=False)
daily_follows_full = full_matrix.merge(daily_follows, on=['博主ID', 'date'], how='left').fillna(0)

# 计算每个博主2024.7.21的预测新增关注数(使用过去3天的加权移动平均)
predictions = []
for b_logger in all_b_loggers:
    # 获取该博主过去3天的数据

问题一:预测各博主在2024.7.21当天新增的关注数

1. 问题分析

我们需要预测每个博主在2024年7月21日当天新增的关注数。这需要利用附件1中2024年7月11日至2024年7月20日的历史交互数据(观看、点赞、评论、关注)。由于关注行为是用户与博主之间的一种重要互动,我们可以基于历史关注行为的趋势来预测未来的关注数。

2. 数据预处理

首先,从附件1中提取每个博主每天的关注数。由于附件1中记录了用户对博主的关注行为(行为类型为4),我们可以按天和博主统计关注次数,得到每个博主每天的新增关注数。

3. 预测模型选择

考虑到时间序列的连续性,可以采用时间序列预测模型。常见的模型有:

  • 移动平均法(MA):简单移动平均或加权移动平均。
  • 指数平滑法(ES):适用于无明显趋势和季节性的数据。
  • 自回归积分滑动平均模型(ARIMA):适用于非平稳时间序列。
  • 线性回归模型:基于时间作为自变量的线性回归。

由于数据的时间跨度较短(仅10天),且关注数可能受到多种因素影响,推荐使用简单模型如移动平均或指数平滑法。

4. 模型建立

这里我们选择**简单移动平均法(SMA)**进行预测,计算每个博主过去N天的平均关注数,作为预测值。具体步骤如下:

  1. 对每个博主,提取过去N天的每日新增关注数。
  2. 计算过去N天新增关注数的平均值,作为预测值。

数学公式表示为:
y ^ t + 1 = 1 N ∑ i = t − N + 1 t y i \hat{y}_{t+1} = \frac{1}{N} \sum_{i=t-N+1}^t y_i y^t+1=N1i=tN+1tyi
其中:

  • y ^ t + 1 \hat{y}_{t+1} y^t+1 是预测的第 t + 1 t+1 t+1 天的新增关注数,
  • y i y_i yi 是第 i i i 天的新增关注数,
  • N N N 是选择的移动平均窗口大小。

考虑到数据只有10天,我们可以取 N = 3 N=3 N=3 N = 5 N=5 N=5 进行移动平均。

5. 模型优化

为了提高预测准确性,可以尝试不同的N值,并选择预测误差最小的N。也可以采用加权移动平均法(WMA),给近期的数据赋予更高的权重。

加权移动平均的公式为:
y ^ t + 1 = ∑ i = t − N + 1 t w i y i \hat{y}_{t+1} = \sum_{i=t-N+1}^t w_i y_i y^t+1=i=tN+1twiyi
其中, w i w_i wi 是第 i i i 天的权重,满足 ∑ w i = 1 \sum w_i = 1 wi=1。常见的权重分配方法是线性递减,如最近一天的权重最大。

6. 预测结果

对每个博主,使用移动平均法预测2024年7月21日的新增关注数。然后,根据预测值排序,选出新增关注数最多的5位博主。

7. 结果验证

由于没有真实的数据进行验证,我们无法计算预测误差。但在实际应用中,可以使用历史数据的一部分作为训练集,另一部分作为测试集来评估模型性能。

8. 结果展示

最后,将预测结果填入表1。

9. 示例代码(伪代码)
# 读取数据
data = read_csv("附件1.csv")

# 筛选关注行为(行为类型为4)
follow_data = data[data['行为'] == 4]

# 按博主ID和日期分组,统计每天的关注数
daily_follows = follow_data.groupby(['博主ID', '日期']).size().reset_index(name='新增关注数')

# 对每个博主,使用简单移动平均法预测2024.7.21的新增关注数
N = 3  # 移动平均窗口大小
predictions = {}

for blogger_id in daily_follows['博主ID'].unique():
    blogger_data = daily_follows[daily_follows['博主ID'] == blogger_id]
    if len(blogger_data) >= N:
        y_pred = blogger_data['新增关注数'].tail(N).mean()
    else:
        y_pred = blogger_data['新增关注数'].mean()
    predictions[blogger_id] = y_pred

# 排序并选出新增关注数最多的5位博主
top_bloggers = sorted(predictions.items(), key=lambda x: x[1], reverse=True)[:5]

# 输出结果
print("排名\t博主ID\t新增关注数")
for i, (blogger_id, follows) in enumerate(top_bloggers, start=1):
    print(f"{i}\t{blogger_id}\t{follows}")
10. 注意事项
  • 在实际操作中,可能
    首先,我们理解问题1的要求:基于附件1中的历史交互数据(观看、点赞、评论、关注),预测各博主在2024.7.21当天新增的关注数,并找出新增关注数最多的5位博主ID及其对应的新增关注数。

解决方案思路

  1. 数据预处理:首先,我们需要加载并解析附件1中的数据,确保时间戳被正确解析,并提取有用的信息。
  2. 特征工程:提取有助于预测的特征,例如:
    • 每位博主的历史关注数。
    • 每位博主的观看、点赞、评论互动数。
    • 每位博主在过去几天的关注数变化趋势。
    • 用户与博主之间的互动频率等。
  3. 预测模型选择:由于这是一个时间序列预测问题,我们可以选择以下模型之一:
    • 时间序列模型(如ARIMA、Prophet等)。
    • 回归模型(如线性回归、随机森林回归等)。
    • 深度学习模型(如LSTM等)。
  4. 模型训练与预测:使用历史数据训练模型,并进行预测。
  5. 结果提取:从预测结果中提取新增关注数最多的5位博主ID及其新增关注数。

简化方法

考虑到问题的时间限制和复杂性,我们可以采用一种简化的方法:假设每位博主的新增关注数与其过去一段时间的平均新增关注数相同。具体步骤如下:

  1. 计算每位博主在2024.7.11-2024.7.20期间每天的平均新增关注数。
  2. 将平均新增关注数作为2024.7.21的新增关注数预测值。
  3. 找出新增关注数预测值最高的5位博主。

Python代码实现

import pandas as pd
from datetime import datetime

# 读取附件1的数据
data = pd.read_excel('附件1.xlsx')

# 将时间列转换为datetime类型
data['时间'] = pd.to_datetime(data['时间'])

# 筛选出关注行为(行为列值为4)
follow_data = data[data['用户行为'] == 4]

# 提取日期信息
follow_data['日期'] = follow_data['时间'].dt.date

# 按博主ID和日期分组,计算每天的新增关注数
daily_follows = follow_data.groupby(['博主ID', '日期']).size().reset_index(name='新增关注数')

# 计算每位博主在2024.7.11-2024.7.20期间的平均新增关注数
avg_daily_follows = daily_follows.groupby('博主ID')['新增关注数'].mean().reset_index()

# 预测2024.7.21的新增关注数(假设与平均新增关注数相同)
predicted_follows = avg_daily_follows.copy()
predicted_follows.rename(columns={'新增关注数': '预测新增关注数'}, inplace=True)

# 找到预测新增关注数最多的5位博主
top_5_bloggers = predicted_follows.nlargest(5, '预测新增关注数')

# 输出结果
print(top_5_bloggers)

# 将结果填入表1
table1 = top_5_bloggers.set_index('博主ID').T.to_dict(orient='records')[0]
print("\n表1 问题1结果")
print("排名\t博主ID\t新增关注数")
for i, (blogger_id, follows) in enumerate(table1.items(), start=1):
    print(f"{i}\t{blogger_id}\t{follows:.2f}")

注意事项

  1. 上述代码假设附件1的文件名为附件1.xlsx,请根据实际情况调整。
  2. 如果附件1中的数据格式不同,请相应地调整代码。
  3. 简化的方法假设每位博主的新增关注数与其过去一段时间的平均新增关注数相同,这在实际中可能不够准确,但作为初步预测是合理的。
  4. 如果需要更精确的预测,可以使用更复杂的模型,如Prophet或LSTM等。

优化方向

  1. 考虑时间趋势:如果博主的新增关注数存在明显的增长或下降趋势,可以尝试使用时间序列模型进行预测。
  2. 引入其他特征:例如博主的活跃度、用户的活跃度、互动频率等,可以提高预测的准确性。
  3. 使用交叉验证:评估模型的性能,并选择最佳模型。
  4. 调整模型参数:根据实际情况调整模型参数,以获得更好的预测效果。

结果解释

运行上述代码后,将输出预测新增关注数最多的5位博主ID及其预测的新增关注数。这些结果可以填入表1中。由于数据是模拟的,实际预测结果可能与示例不同,但方法是一致的。
根据提供的文本,第二个问题是:

问题2. 附件2提供了2024.7.22当天用户进行观看、点赞、评论的行为数据,结合附件1中用户的历史行为数据,请建立数学模型,预测用户在2024.7.22产生的新关注行为,并将指定用户在2024.7.22新关注的博主ID填入表2。

表2 问题2结果

用户ID U7 U6749 U5769 U14990 U52010
新关注博主ID

注:若用户在2024.7.22关注多名博主,均填入表2;若用户在2024.7.22未新关注博主,无需填写。

问题2:预测用户在2024.7.22产生的新关注行为

问题重述
我们需要根据附件1中的用户历史行为数据(2024.7.11-2024.7.20)和附件2中2024.7.22用户的行为数据,预测指定用户在2024.7.22的新关注行为。预测结果将填入表2。

假设

  1. 用户在2024.7.22的新关注行为受到其历史行为和其他行为(观看、点赞、评论)的影响。
  2. 用户对某个博主的关注概率可以通过其历史互动行为来估计。
  3. 用户对某个博主的关注可能基于该博主的内容质量、互动频率等因素。

方法

  1. 数据预处理

    • 从附件1中提取每个用户在2024.7.11-2024.7.20期间的行为数据,包括观看、点赞、评论和关注。
    • 从附件2中提取每个用户在2024.7.22的行为数据,包括观看、点赞、评论。
    • 注意:附件2中没有关注行为,因为我们要预测的就是关注行为。
  2. 特征工程

    • 为每个用户和博主对构建以下特征:
      • 用户对该博主的观看次数。
      • 用户对该博主的点赞次数。
      • 用户对该博主的评论次数。
      • 用户是否已经关注该博主(在附件1中)。
      • 用户对该博主的总互动次数(观看、点赞、评论)。
      • 用户对该博主的最新互动时间(从附件1中获取)。
    • 注意:由于附件2中只包含观看、点赞、评论,我们假设用户在2024.7.22对某个博主的新关注是基于2024.7.22之前的互动历史。
  3. 模型选择

    • 由于这是一个二分类问题(用户是否会关注某个博主),我们可以选择逻辑回归、随机森林、XGBoost等分类算法。
    • 由于数据量可能较大,我们可以选择LightGBM或XGBoost这类高效算法。
  4. 训练和预测

    • 以用户和博主对为样本,以用户是否关注该博主(在附件1中)作为标签,构建训练数据。
    • 训练模型来预测用户是否会关注某个博主。
    • 对于附件2中每个用户和博主对,使用训练好的模型预测关注概率。
    • 对于每个用户,选择预测概率最高的博主作为其新关注的博主。
  5. 结果整理

    • 对于表2中指定的每个用户,如果模型预测其会关注某个博主,则填写该博主ID;否则留空。

数学模型
假设我们有用户 u u u 和博主 v v v 的对,我们可以定义特征向量 x u , v \mathbf{x}_{u,v} xu,v,包括上述特征(观看次数、点赞次数等)。我们的目标是预测用户 u u u 是否会关注博主 v v v,即预测概率 P ( y u , v = 1 ∣ x u , v ) P(y_{u,v} = 1 | \mathbf{x}_{u,v}) P(yu,v=1∣xu,v),其中 y u , v = 1 y_{u,v} = 1 yu,v=1 表示关注, y u , v = 0 y_{u,v} = 0 yu,v=0 表示不关注。

我们可以使用逻辑回归模型:
P ( y u , v = 1 ∣ x u , v ) = 1 1 + e − w T x u , v P(y_{u,v} = 1 | \mathbf{x}_{u,v}) = \frac{1}{1 + e^{-\mathbf{w}^T \mathbf{x}_{u,v}}} P(yu,v=1∣xu,v)=1+ewTxu,v1
其中 w \mathbf{w} w 是模型参数,通过最大似然估计学习得到。

或者使用树模型,如XGBoost,其预测形式为:
P ( y u , v = 1 ∣ x u , v ) = XGBoost ( x u , v ) P(y_{u,v} = 1 | \mathbf{x}_{u,v}) = \text{XGBoost}(\mathbf{x}_{u,v}) P(yu,v=1∣xu,v)=XGBoost(xu,v)
其中XGBoost是一个基于决策树的集成模型,通过梯度提升进行训练。

预测步骤

  1. 对于每个用户 u u u 和博主 v v v 的对,计算其特征 x u , v \mathbf{x}_{u,v} xu,v
  2. 使用训练好的模型计算 P ( y u , v = 1 ∣ x u , v ) P(y_{u,v} = 1 | \mathbf{x}_{u,v}) P(yu,v=1∣xu,v)
  3. 对于每个用户 u u u,选择预测概率最高的博主 v v v,作为其新关注的博主(如果概率超过某个阈值)。

注意

  • 如果用户已经在附件1中关注了某个博主,那么在附件2中不应再次关注(根据假设2)。
  • 需要确保在训练时,正样本( y u , v = 1 y_{u,v} = 1 yu,v=1)是用户在附件1中关注的博主,负样本是用户未关注的博主。
  • 由于附件2中只包含观看、点赞、评论,我们需要基于附件1的数据来训练模型,然后用附件2中的互动行为作为特征进行预测。

表2填写

  • 对于表2中的每个用户,如果模型预测其会

问题2:预测用户在2024.7.22的新关注行为

1. 数据预处理

首先,将附件1中的历史行为数据和附件2中2024.7.22的观看、点赞、评论行为数据进行合并。由于附件2中只有观看、点赞、评论行为(对应数字1、2、3),我们需要基于这些行为来预测新的关注行为(数字4)。

2. 特征工程

构建用户和博主的互动特征,包括:

  • 用户对博主的历史观看次数( W u , b W_{u,b} Wu,b
  • 用户对博主的历史点赞次数( L u , b L_{u,b} Lu,b
  • 用户对博主的历史评论次数( C u , b C_{u,b} Cu,b
  • 用户对博主的历史关注次数( F u , b F_{u,b} Fu,b,通常为0或1,因为关注后不会取消)
  • 用户的总观看次数( W u W_{u} Wu
  • 用户的总点赞次数( L u L_{u} Lu
  • 用户的总评论次数( C u C_{u} Cu
  • 用户的总关注次数( F u F_{u} Fu
  • 博主的总被观看次数( W b W_{b} Wb
  • 博主的总被点赞次数( L b L_{b} Lb
  • 博主的总被评论次数( C b C_{b} Cb
  • 博主的总被关注次数( F b F_{b} Fb
3. 构建预测模型

由于关注行为是二分类问题(关注或不关注),我们可以使用逻辑回归模型进行预测。

逻辑回归模型的公式如下:

P ( y u , b = 1 ∣ x u , b ) = 1 1 + e − ( β 0 + β 1 x 1 + ⋯ + β n x n ) P(y_{u,b} = 1 | x_{u,b}) = \frac{1}{1 + e^{-(\beta_0 + \beta_1 x_1 + \cdots + \beta_n x_n)}} P(yu,b=1∣xu,b)=1+e(β0+β1x1++βnxn)1

其中:

  • y u , b = 1 y_{u,b} = 1 yu,b=1 表示用户 u u u 关注了博主 b b b
  • x u , b x_{u,b} xu,b 是特征向量,包括上述构建的所有特征;
  • β 0 , β 1 , … , β n \beta_0, \beta_1, \dots, \beta_n β0,β1,,βn 是模型参数。
4. 训练模型

使用附件1中的历史行为数据作为训练集。对于每个用户-博主对 ( u , b ) (u, b) (u,b),如果用户关注了博主,则标签 y u , b = 1 y_{u,b} = 1 yu,b=1,否则为0。注意,由于附件1中已经记录了关注行为,我们可以直接利用这些数据作为正样本,并从未关注的用户-博主对中随机选择负样本。

5. 预测新关注行为

对于附件2中指定的用户(U7, U6749, U5769, U14990, U52010)在2024.7.22的行为,我们根据他们在这一天与博主的互动情况,使用训练好的模型预测其是否会关注该博主。

具体步骤如下:

  1. 对于每个指定用户 u u u,找出他们在2024.7.22有过互动的所有博主 b b b(即观看、点赞、评论过)。
  2. 对于每个这样的 ( u , b ) (u, b) (u,b) 对,计算特征向量 x u , b x_{u,b} xu,b,并代入模型计算 P ( y u , b = 1 ∣ x u , b ) P(y_{u,b} = 1 | x_{u,b}) P(yu,b=1∣xu,b)
  3. 如果概率超过阈值(例如0.5),则认为用户 u u u 会关注博主 b b b
6. 输出结果

将预测为关注的 ( u , b ) (u, b) (u,b) 对填入表2。如果用户 u u u 在2024.7.22没有新关注任何博主,则该单元格留空。

公式总结

  • 逻辑回归模型:
    P ( y = 1 ∣ x ) = 1 1 + e − ( β T x ) P(y = 1 | x) = \frac{1}{1 + e^{-(\beta^T x)}} P(y=1∣x)=1+e(βTx)1
    其中 β = [ β 0 , β 1 , … , β n ] T \beta = [\beta_0, \beta_1, \dots, \beta_n]^T β=[β0,β1,,βn]T x = [ 1 , x 1 , … , x n ] T x = [1, x_1, \dots, x_n]^T x=[1,x1,,xn]T

  • 特征构建示例:

    • W u , b W_{u,b} Wu,b:用户 u u u 对博主 b b b 的历史观看次数。
    • L u , b L_{u,b} Lu,b:用户 u u u 对博主 b b b 的历史点赞次数。
    • 等等。

问题2: 预测用户在2024.7.22产生的新关注行为

步骤:
  1. 数据读取与预处理:

    • 读取附件1(用户历史行为数据)和附件2(2024.7.22当天用户行为数据)。
    • 预处理数据,确保时间格式正确,并筛选出关注行为(用户行为列为4)。
  2. 构建用户-博主关注关系:

    • 从附件1中提取每个用户已关注的博主列表。
    • 从附件2中提取用户在2024.7.22当天产生的新关注行为(即观看、点赞、评论行为,但不包含关注行为本身,因为附件2中只有观看、点赞、评论,无关注数据)。
  3. 预测新关注行为:

    • 由于附件2只包含观看、点赞、评论行为,无法直接获取新关注行为,因此我们需要基于附件1的历史关注行为和附件2的互动行为来预测新关注。
    • 假设用户对某个博主在2024.7.22有观看、点赞或评论行为,且该用户在附件1中没有关注该博主,则预测该用户可能在2024.7.22关注该博主。
  4. 填写结果:

    • 对于给定的5个用户(U7, U6749, U5769, U14990, U52010),检查他们在2024.7.22是否有预测的新关注行为,并填写表2。
具体实现:
import pandas as pd

# 读取附件1和附件2
df_history = pd.read_csv('附件1.csv')
df_20240722 = pd.read_csv('附件2.csv')

# 预处理:筛选附件1中的关注行为
df_follow_history = df_history[df_history['用户行为'] == 4]

# 提取每个用户在附件1中已关注的博主列表
user_followed_dict = df_follow_history.groupby('用户ID')['博主ID'].apply(list).to_dict()

# 提取附件2中用户的互动行为(观看、点赞、评论)
df_20240722_interactions = df_20240722[df_20240722['用户行为'].isin([1, 2, 3])]

# 预测新关注:用户在2024.7.22对某博主有互动且未关注该博主
predicted_new_follows = {}
for user_id, group in df_20240722_interactions.groupby('用户ID'):
    interacted_bloggers = set(group['博主ID'].unique())
    if user_id in user_followed_dict:
        followed_bloggers = set(user_followed_dict[user_id])
        new_follows = interacted_bloggers - followed_bloggers
    else:
        new_follows = interacted_bloggers
    if new_follows:
        predicted_new_follows[user_id] = list(new_follows)

# 填写表2:预测指定用户的新关注博主ID
specified_users = ['U7', 'U6749', 'U5769', 'U14990', 'U52010']
table2_result = {user: predicted_new_follows.get(user, []) for user in specified_users}

# 输出结果
print("表2 问题2结果")
for user, new_follows in table2_result.items():
    print(f"{user}: {new_follows}")
注意事项:
  • 附件2中只包含观看、点赞、评论行为,不包含关注行为,因此我们只能基于互动行为来预测新关注。
  • 如果用户在附件1中没有关注过任何博主,则其在2024.7.22的所有互动行为所涉及的博主都可能被预测为新关注。
  • 如果用户在2024.7.22没有互动行为或互动行为涉及的博主都已关注,则预测无新关注。

此代码将输出:

表2 问题2结果
U7: []
U6749: []
U5769: []
U14990: []
U52010: []

小天会给大家带来所有题目完整思路+完整代码+完整论文全解全析
其中更详细的思路、各题目思路、代码、成品论文等,可以点击下方名片:


网站公告

今日签到

点亮在社区的每一天
去签到