# 构造数据集 share_characters = list( set(simple_feat.columns.tolist()) & set(week_feat.columns.tolist())) # 共有属性,包括id和一些基础特征,为每个特征块的交集 dataset = pd.concat([week_feat, simple_feat.drop(share_characters, axis=1)], axis=1)解释一下详细
时间: 2024-04-22 15:23:08 浏览: 58
这段代码的主要作用是将两个数据集 week_feat 和 simple_feat 合并成一个数据集 dataset。具体来说,首先通过 set 操作找到两个数据集中共同的特征(除了 id 和一些基础特征),存储在 share_characters 变量中。然后,将 week_feat 和 simple_feat 中除了 share_characters 外的特征合并,即将 simple_feat 中的 share_characters 特征删除后,再和 week_feat 进行合并。最终得到的数据集 dataset 包含了两个数据集中所有的特征,其中共同的特征只保留了一份。
相关问题
def get_dataset(history_field, middle_field, label_field): """构造数据集 Args: Returns: """ # 特征工程 week_feat = get_week_feature(label_field) # 日期特征 simple_feat = get_simple_feature(label_field) # 示例简单特征 # 构造数据集 share_characters = list( set(simple_feat.columns.tolist()) & set(week_feat.columns.tolist())) # 共有属性,包括id和一些基础特征,为每个特征块的交集 dataset = pd.concat([week_feat, simple_feat.drop(share_characters, axis=1)], axis=1) # 删除无用属性并将label置于最后一列 if 'Date' in dataset.columns.tolist(): # 表示训练集和验证集 dataset.drop(['Merchant_id', 'Discount_rate', 'Date', 'date_received', 'date'], axis=1, inplace=True) label = dataset['label'].tolist() dataset.drop(['label'], axis=1, inplace=True) dataset['label'] = label else: # 表示测试集 dataset.drop(['Merchant_id', 'Discount_rate', 'date_received'], axis=1, inplace=True) # 修正数据类型 dataset['User_id'] = dataset['User_id'].map(int) dataset['Coupon_id'] = dataset['Coupon_id'].map(int) dataset['Date_received'] = dataset['Date_received'].map(int) dataset['Distance'] = dataset['Distance'].map(int) if 'label' in dataset.columns.tolist(): dataset['label'] = dataset['label'].map(int) # 去重 dataset.drop_duplicates(keep='first', inplace=True) dataset.index = range(len(dataset)) # 返回 return dataset为什么
这是一个函数,用于构造数据集。该函数接受3个参数:history_field(历史数据集),middle_field(中间数据集),label_field(标签数据集)。函数的返回值为一个数据集。
在函数内部,首先对标签数据集进行特征工程,得到了包含日期特征的“week_feat”和示例简单特征的“simple_feat”两个数据集。然后,对这两个数据集进行合并,得到一个“dataset”数据集。在合并过程中,对于“simple_feat”中与“week_feat”中重复的属性,只保留一个,这些属性即为每个特征块的交集。通过“drop”函数删除无用属性,并将标签列移动到数据集最后一列。如果数据集中包含“Date”列,则表示为训练集和验证集,否则表示为测试集。
接着,对数据类型进行修正,包括将用户ID、优惠券ID、领取日期和距离转换为整数类型。如果数据集中包含标签列,则将标签列也转换为整数类型。
最后,通过“drop_duplicates”函数去重,并重新设置数据集的索引。最后返回构造好的数据集。
阅读全文