Применение SVD в разреженных матрицах - PullRequest
0 голосов
/ 14 сентября 2018

Какие факторы следует учитывать при выполнении разложения по сингулярным числам (svd) на разреженные матрицы?

это очень разреженная матрица. Я пропустил вменение, используя 0. Нужна ли какая-то другая техника? Код указан ниже.

import pandas as pd
import numpy as np
from sklearn.decomposition import TruncatedSVD
from sklearn.preprocessing  import Normalizer
from sklearn.metrics.pairwise import cosine_similarity

r_cols = ['user_id', 'movie_id', 'rating','xcx']
data = pd.read_csv('ml-100k/ua.test', sep='\t', names=r_cols, usecols=['user_id', 'movie_id', 'rating'], encoding='latin-1')
dtm = data.pivot(index='movie_id', columns='user_id', values='rating').fillna(0)
np.savetxt("pivot.csv", dtm, delimiter=",")

#without matrix factoriztion
cosine_sim = cosine_similarity(dtm, dtm)
np.savetxt("foo13.csv", cosine_sim, delimiter=",")

#with matrix factoriztion
lsa = TruncatedSVD(200, algorithm = 'arpack')
dtm_lsa = lsa.fit_transform(dtm)
dtm_lsa = Normalizer(copy = False).fit_transform(dtm_lsa)
similarity = np.asarray(np.asmatrix(dtm_lsa)*np.asmatrix(dtm_lsa).T)
np.savetxt("foo12.csv", similarity, delimiter=",")

Не стесняйтесь указывать, если я пропустил какие-либо вопросы.

...