数据仓库笔试题-pdd

题目:商品活动表 goods_activity,字段id主键、goods_id 商品id,act_id 活动id,create_time  活动创建时间 、status 上线状态
2 上线 ,3 下线 

问题一、每个活动的每个商品 的开始时间和结束时间?

问题二、假设数据中有脏数据,同一个活动可能 两次上线,也可能两次结束,需要把活动上线重复的状态按照时间取第一条,结束上线状态重复的按时间取最后一条。

-- 第一题:
-- id,goods_id,act_id,create_time
-- asdf345,123,bybt123,2020-05-01,2
-- asdf346,123,bybt123,2020-05-10,3
-- asdf347,123,bybt123,2020-06-15,2  
-- asdf348,123,bybt123,2020-06-20,3

-- ->
-- goods_id,act_id,online_dt,offline_dt
-- 123,bybt123,2020-05-01,2020-05-10
-- 123,bybt123,2020-06-15,2020-06-20

select
goods_id,act_id,online_dt,offline_dt
from 
(
    select goods_id,act_id,create_time as online_dt
    ,lead(create_time,1,'9999-12-31')  over(partition by goods_id,act_id order by create_time) as offline_dt
    ,status
    from goods_activity
) a
where status=2


-- 第二题:
-- id,goods_id,act_id,create_time    lag  lead
-- asdf341,123,bybt123,2020-05-01,2   0   2 
-- asdf343,123,bybt123,2020-05-02,2   2   3 
-- asdf34q,123,bybt123,2020-05-10,3   2   2 
-- asdf346,123,bybt123,2020-06-15,2   3   3 
-- asdf348,123,bybt123,2020-06-20,3   2   3 
-- asdf350,123,bybt123,2020-06-21,3   3   0 

-- ->
-- goods_id,act_id,online_dt,offline_dt
-- 123,bybt123,2020-05-01,2020-05-10
-- 123,bybt123,2020-06-15,2020-06-21

select
  goods_id,act_id,online_dt,offline_dt
from 
(
  select goods_id,act_id,create_time as online_dt
      ,lead(create_time,1,'9999-12-31')  over(partition by goods_id,act_id order by create_time) as offline_dt
      ,status
  from 
  (
    select
      goods_id,act_id,create_time,status,last_status,lag_status
    from 
    (
      select 
        goods_id,act_id,create_time,status,
        lead(status,1,0)  over(partition by goods_id,act_id order by create_time) as last_status,
        -- row_number() over(partition by goods_id,act_id,status order by create_time)  as 
        lag(status,1,0)   over(partition by goods_id,act_id order by create_time) as lag_status
      from (
        select 'asdf341' as id ,123 as goods_id,'bybt123' as act_id, '2020-05-01' as create_time, 2 as status UNiOn all
        select 'asdf343' as id ,123 as goods_id,'bybt123' as act_id, '2020-05-02' as create_time, 2 as status UNiOn all
        select 'asdf34q' as id ,123 as goods_id,'bybt123' as act_id, '2020-05-10' as create_time, 3 as status UNiOn all
        select 'asdf346' as id ,123 as goods_id,'bybt123' as act_id, '2020-06-15' as create_time, 2 as status UNiOn all
        select 'asdf348' as id ,123 as goods_id,'bybt123' as act_id, '2020-06-20' as create_time, 3 as status UNiOn all
        select 'asdf350' as id ,123 as goods_id,'bybt123' as act_id, '2020-06-21' as create_time, 3 as status 
        )goods_activity
    ) a
    where case when status=2 and status-lag_status <>0  then true 
               when status=3 and status-last_status <>0  then true end 
  ) a
) a
where status=2

 

### UAV-PDD2023 数据集的划分方法 在机器学习项目中,数据集通常被划分为三个部分:训练集、验证集和测试集。这种划分有助于评估模型的泛化能力并防止过拟合。对于 UAV-PDD2023 数据集,其包含 2440 张三通道 JPG 格式的图像及其对应的 VOC 格式标注文件[^2]。 #### 常见的数据集划分比例 一种常见的做法是按照以下比例分配数据集: - **训练集 (Training Set)**: 占总数据量的约 70%-80%。这部分数据用于训练模型。 - **验证集 (Validation Set)**: 占总数据量的约 10%-15%。此集合用于调整超参数和监控模型性能。 - **测试集 (Test Set)**: 占总数据量的约 10%-15%。这一部分用来最终评估模型的表现。 具体到 UAV-PDD2023 数据集,可以采用如下方式实现划分: 假设我们决定按 70%/15%/15% 的比例分割,则计算得出: - 训练集数量约为 \(2440 \times 0.7 = 1708\) 张图片; - 验证集数量约为 \(2440 \times 0.15 = 366\) 张图片; - 测试集数量同样为 \(2440 \times 0.15 = 366\) 张图片。 #### 实现代码示例 以下是 Python 中利用 `train_test_split` 函数完成上述操作的一个简单例子: ```python from sklearn.model_selection import train_test_split import os # 获取所有图片路径列表 image_paths = [os.path.join('path_to_dataset', img) for img in os.listdir('path_to_dataset')] # 初步拆分成训练+验证 和 测试两组 train_val, test = train_test_split(image_paths, test_size=0.15, random_state=42) # 进一步将训练+验证拆分成训练和验证 train, val = train_test_split(train_val, test_size=0.1765, random_state=42) # 0.1765 是为了达到整体 15% print(f"Train set size: {len(train)}") print(f"Validation set size: {len(val)}") print(f"Test set size: {len(test)}") ``` 以上脚本通过两次调用 `train_test_split` 方法实现了所需的三层划分逻辑,并设置了随机种子以保证结果可重复性。 #### 注意事项 当处理像 UAV-PDD2023 这样标记有多种类别的数据集时,还需要考虑类别分布平衡问题。如果某些类别样本较少,在不均衡的情况下可能导致模型偏向多数类别预测错误少数类别。因此建议使用 stratified sampling(分层抽样),即保持各类别间的比例一致来执行划分过程。 此外,由于 UAV-PDD2023 提供的是高分辨率图像(尺寸为 2592×1944),可能需要额外预处理步骤如裁剪或缩放以便适应目标检测算法输入需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值