1. 程式人生 > >節目--標籤 0 , 1矩陣的建立(0代表節目有這個標籤,1代表沒有這個標籤)

節目--標籤 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