1. 程式人生 > >程世東老師TensorFlow實戰——個性化推薦,程式碼學習筆記之資料匯入&資料預處理(下)

程世東老師TensorFlow實戰——個性化推薦,程式碼學習筆記之資料匯入&資料預處理(下)

這篇主要是進行程式碼中的一些數值視覺化,幫助理解

程式碼來自於知乎:https://zhuanlan.zhihu.com/p/32078473

/程式碼地址https://github.com/chengstone/movie_recommender/blob/master/movie_recommender.ipynb

資料預處理過程中的預覽:(可以跳過看圖片結果)

1.1、Users的初始讀取顯示

1、Pandas中可以用dataframe.head()和dataframe.tail()檢視資料的頭五行和尾五行,若需要改變行數,可在括號內指定

pandas主要的兩個資料結構是Series和DataFrame

Series可以簡單地被認為是一維的陣列Series和一維陣列最主要的區別在於Series型別具有索引(index)

DataFrame是將數個Series按列合併而成的二維資料結構,每一列單獨取出來是一個Series

dataframe.values則以陣列的形式返回DataFrame的元素:所以注意對於users.value的顯示不能用head

2、users.value返回的是一個numpy.ndarray型別

如果沒有numpy,Python內部只能用list或array來表示矩陣。

假如用list來表示[1,2,3],由於list的元素可以是任何物件,因此list中所儲存的是物件的指標,這樣就需要有3個指標和三個整數物件,比較浪費記憶體和CPU計算時間。

Python的array和list不同,它直接儲存數值,和C語言的一維陣列比較類似,但是不支援多維,表達形式很簡陋,寫科學計算的演算法很難受。

numpy彌補了這些不足,核心貢獻就是提供了ndarray這個儲存單一資料型別的多維陣列結構

3、ndarray介紹

ndarray可以用np.array這個函式來建立

關於陣列的描述資訊儲存在一個數據結構中,這個結構引用兩個物件,一塊用於儲存資料的儲存區域和一個用於描述元素型別的dtype物件。

資料儲存區域儲存著陣列中所有元素的二進位制資料,dtype物件則知道如何將元素的二進位制資料轉換為可用的值。陣列的維數、大小等資訊都儲存在ndarray陣列物件的資料結構中。

 

 

 

1.2、users表預處理後的顯示

2.1、movie資料的初始讀取

 

2.2、movies去掉年份

For ii,val in enumerate(set(movies['Title'])) 列印ii,val顯示:

2.3、movie title轉數字字典

For 迴圈後的title_set如下,加入的是一個單詞

Title2int

2.4電影Title轉成等長數字列表,長度是15

2.5 電影genres轉數字字典      

 

 

3 ratings讀取

4、合併三個表

data = pd.merge(pd.merge(ratings, users), movies)

5、輸入x和目標y

6、features_pd.values 和 targets_pd.values