ML.chang 2020. 7. 23. 15:11

pid는 pids[0]으로 124803이다. 

pids = test.index
pid = pids[0]
p = np.zeros((n_songs,1))
p[test.loc[pid,'songs_id']] = 1 
val = train_songs_A.dot(p).reshape(-1)

val은 다음과 같다. 최대값이 3이 나오는게 참 이상하다. 

 

p의 plot을 보면

다음과 같다. 세보니까 총 19개의 곡이 들어있다. 따라서 val의 값도  최대 19가 되어야한다고 생각했다. 

 

--> 착각이였다. test셋에 있는 하나의 플레이리스트(pid = 12,4803)과 train셋에 있는 115071개와의 유사도를 구해논 것이기 때문이다. 

cand_song은 다음과 같다. 해당 플레이리스트(124803)에 곡이 포함 되어있을 정도가 80이나 되는 것도 있다는 뜻이다. 

 

argsort는 뭣이냐?

다음과 같은 결과를 내는데.. 이게 뭐지?

argsort : 작은값부터 순서대로 데이터의 위치를 반환해줌.

cand_song_idx = cand_song.reshape(-1).argsort()[-150:][::-1]

역순으로 재배열함--> 이유는 큰 값을 첫번째로 두기 위해(내림차순 정렬)