推荐系统_数据分割train_valid_test

该博客详细介绍了推荐系统的数据划分方法,包括BPR、xDeepFM、RippleNet、GRU4RecF、BERT4Rec和LightGCN等模型。数据按User ID聚合后,以8:1:1比例划分为训练、验证和测试集。同时讨论了数据增强策略,如序列预测任务,用于提升推荐系统的性能。

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

1:BPR推荐
用到inter数据文件。
[‘user_id’, ‘item_id’, ‘rating’, ‘timestamp’]
首先将数据self.shuffle()随机打乱。根据User的ID将数据聚合在一起。一个聚合了943个用户list。这每个list里面包含用户所购买的商品信息。对于每个list我们按照8:1:1的比例分割成train_data, valid_data ,test_data。

def _grouped_index(self, group_by_list):
        index = {
   }
        for i, key in enumerate(group_by_list):
            if key not in index:
                index[key] = [i]
            else:
                index[key].append(i)
        return index.values()
        #实现了将item聚合到不同的list。

2:xDeepFM推荐
用到inter数据文件,item数据文件, user数据文件。
[‘user_id’, ‘item_id’, ‘timestamp’, ‘age’, ‘gender’, ‘occupation’, ‘release_year’, ‘class’, ‘label’]
label标签的值根据设置的阈值来确定。
首先将数据self.shuffle()随机打乱。根据User的ID将数据聚合在一起。一个聚合了943个用户list。这每个list里面包含用户所购买的商品信息。对于每个list我们按照8:1:1的比例分割成train_data, valid_data ,test_data。

def _grouped_index(self, group_by_list):
        index = {
   
``` import os import pandas as pd import numpy as np from sklearn.model_selection import train_test_split # 加载函数保持不变 def processTarget(): main_folder = 'C:/Users/Lenovo/Desktop/crcw不同端12k在0负载下/风扇端' data_list = [] label_list = [] for folder_name in sorted(os.listdir(main_folder)): folder_path = os.path.join(main_folder, folder_name) if os.path.isdir(folder_path): csv_files = [f for f in os.listdir(folder_path) if f.endswith('.csv')] print(f"Processing folder: {folder_name}, found {len(csv_files)} CSV files.") for filename in sorted(csv_files): file_path = os.path.join(folder_path, filename) csv_data = pd.read_csv(file_path, header=None) if csv_data.shape[1] >= 4: csv_data = csv_data.iloc[:, [0, 1, 2]].values else: print(f"Skipping file {filename}, unexpected shape: {csv_data.shape}") continue data_list.append(csv_data) if '内圈故障' in folder_name: class_label = 0 elif '球故障' in folder_name: class_label = 1 else: continue label_list.append(class_label) if data_list and label_list: data = np.array(data_list) # Shape: (num_samples, seq_length, num_features) labels = np.array(label_list) # Shape: (num_samples,) return data, labels else: raise ValueError("No valid data available to process.") # 划分数据集 def split_datasets(X, y, test_size=0.2, val_size=0.25): """ :param X: 特征数据数组 :param y: 标签数组 :param test_size: 测试集占比,默认值为 0.2(即 80% 训练 + 验证) :param val_size: 验证集占剩余训练数据的比例,默认值为 0.25 """ X_train_val, X_test, y_train_val, y_test = train_test_split( X, y, test_size=test_size, stratify=y, random_state=42 ) # 继续从剩下的数据中切出 validation set X_train, X_val, y_train, y_val = train_test_split( X_train_val, y_train_val, test_size=val_size, stratify=y_train_val, random_state=42 ) return X_train, X_val, X_test, y_train, y_val, y_test if __name__ == "__main__": try: data0, label0 = processTarget() # 分割成训练集、验证集和测试集 X_train, X_val, X_test, y_train, y_val, y_test = split_datasets(data0, label0) print("Training Set:", X_train.shape, y_train.shape) print("Validation Set:", X_val.shape, y_val.shape) print("Testing Set:", X_test.shape, y_test.shape) # 存储结果以便后续步骤使用 np.savez('datasets.npz', X_train=X_train, y_train=y_train, X_val=X_val, y_val=y_val, X_test=X_test, y_test=y_test) except ValueError as e: print(e)```这是我将数据集划分训练集,测试集,验证集的代码,现在,我要在这个代码的基础上对该数据集运用DEEP DOMAIN CONFUSION进行处理,可以给出完整的代码吗?要求:划分数据集和DEEP DOMAIN CONFUSION分为两个不同的文件
最新发布
03-31
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值