用户收看节目的01标签矩阵

首先,得到目标用户数据。

import numpy as np
import os
os.chdir('E:/广电大数据营销推荐项目案例/数据清洗/电视节目信息数据预处理')
tv = pd.read_csv('./wordsbag/dataprocess/data/week/mydata/data1_tv.csv',sep=',',encoding='gbk',header='infer',error_bad_lines=False)
movies = tv.filter(regex='program_title|genres_good') 

data = pd.read_csv('./wordsbag/dataprocess/data/week/mydata/data1_ten_score.csv',sep=',',encoding='gbk',header='infer',error_bad_lines=False)

all_data = pd.merge(movies,data)

#取用户号为3,13,23的用户数据
sample1 = all_data[all_data['user_id']==3]
sample2 = all_data[all_data['user_id']==13]
sample3 = all_data[all_data['user_id']==23]
#将所有样本用户对应的数据进行合并
sample = pd.concat([sample1,sample2],axis=0)  #合并第一次
samples = pd.concat([sample,sample3],axis=0)  #合并第二次

这样,得到样本数据部分截图如下:

接下来,开始对用户所观看过的节目进行标签01矩阵的创建


all_users_names = ['3','13','23']
# 所有用户看过的节目名 all_items_users_saw = [item2, item3, item4]
# 所有用户看过的节目名对应的类型 all_items_users_saw_labels = ["label2 label3", "label3", ...]
all_items_users_saw = []
all_items_users_saw_labels = []

for j in range(len(all_users_names)):
    df = samples
    (m, n) = df.shape
    data_array = np.array(df)
    for i in range(m):
        #不重复记录相同的节目
        if data_array[i][0] not in all_items_users_saw:
            all_items_users_saw.append(data_array[i][0])   #data_array[i][0])取得节目名称
            all_items_users_saw_labels.append(data_array[i][1]) #data_array[i][1]取得节目类型

#生成用户观看过1的节目及所属类型的01矩阵
all_labels = ['剧情', '西部', '家庭', '惊悚', '动画', 
        '爱情', '情色', '运动', '音乐', '灾难', 
        '悬疑', '儿童', '短片', '历史', '动作', 
        '科幻', '传记', '同性', '冒险', '歌舞',
        '脱口秀', '真人秀', '新闻', '恐怖', '奇幻',
        '犯罪', '喜剧', '纪录片', '战争', '古装', 
        '武侠', '综艺' ,'电视剧', '邵氏','电影']
labels_num = len(all_labels)  

all_items_labels_01_vectors = []

for i in range(len(all_items_users_saw)):
     vector = [0] * labels_num
     labels_names = all_items_users_saw_labels[i].split(" / ")
     
     for j in range(len(labels_names)):
         location = all_labels.index(labels_names[j])
         vector[location] = 1
         
     all_items_labels_01_vectors.append(vector)
         
df = pd.DataFrame(all_items_labels_01_vectors, index=all_items_users_saw, columns=all_labels)


这样,得到节目--标签01矩阵,部分截图如下:

本案例的实现主要参考https://blog.csdn.net/WuchangI/article/details/80160566

转自:https://blog.csdn.net/WuchangI/article/details/80160566

猜你喜欢

转载自blog.csdn.net/qq_38281438/article/details/83585730
今日推荐