程世東老師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)