节目--标签 0 , 1矩阵的创建(0代表节目有这个标签,1代表没有这个标签)

原始的节目及所包含的标签类型对应的格式如下:


import pandas as pd
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)
sample = tv.head(100) #选择电视节目的前100条数据为实验的样本数据
movies = sample.filter(regex='program_title|genres_good')  #只提取出节目名称和标签类型这两列数据

(m , n) = movies.shape  #得到行数和列数

data_array = np.array(movies.iloc[0:m+1,:])
print(data_array)
print(type(data_array))

#按指定顺序排列所有的标签
all_labels = ['剧情', '西部', '家庭', '惊悚', '动画', 
        '爱情', '情色', '运动', '音乐', '灾难', 
        '悬疑', '儿童', '短片', '历史', '动作', 
        '科幻', '传记', '同性', '冒险', '歌舞',
        '脱口秀', '真人秀', '新闻', '恐怖', '奇幻',
        '犯罪', '喜剧', '纪录片', '战争', '古装', 
        '武侠', '综艺' ,'电视剧', '邵氏','电影']
labels_num = len(all_labels)

#按顺序提取所有节目的名称
all_items_name = np.array(movies.iloc[:m+1, 0])[0:]
print(all_items_name)

# 创建一个01矩阵,0表示该节目不属于该类型,1表示该节目属于该类型
data_to_be_written = []
for i in range(len(all_items_name)):
     #每个节目的01行向量
     vector = [0] * labels_num
     labels_names = str(data_array[i][1]).split(" / ")
     
     for j in range(len(labels_names)):
         location = all_labels.index(labels_names[j])
         vector[location] = 1
     data_to_be_written.append(vector)
     
# 将01矩阵写入“备选推荐节目集及所属类型01矩阵表”
movies_mat = pd.DataFrame(data_to_be_written, index=all_items_name, columns=all_labels)

最终得到下图所有的矩阵

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

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

猜你喜欢

转载自blog.csdn.net/qq_38281438/article/details/83583656
0