PCA размерность сокращения участка - PullRequest
0 голосов
/ 27 февраля 2019

Я пытаюсь кластеризовать, используя технику PCA.

В моем случае у меня есть обзор, сделанный пользователем n фильмов.Я создаю таблицу user x movie следующим образом:

User    Movie
        0 1 2 3 4 
      0 2 0 5 0 0
      1 0 1 1 0 0
      2 0 5 5 5 0

, где 0, если пользователь не просматривает фильм, и 1-5, если он просматривает от 1 до 5 звезд.и форма (6040, 3706)

Я нормализую данные, и после того, как я использую этот код для PCA (из sklearn)

pca = PCA(0.7)
pca_result = pca.fit_transform(X_std)

a = pca_result[:,0]
b = pca_result[:,1] 

, я использую 0,7 для кластера, потому что моя совокупная объясненная дисперсияenter image description here

так что для меня это очень приблизительное значение 0,7, а моя новая форма (6040, 650)

После того, как я увижу, измерение будет построено таким образом(но я не думаю, что это очень важно)

fig = plt.figure(figsize = (20,16))
ax = fig.add_subplot(111)


ax.scatter(a,b, alpha = 1)
plt.title('Method: PCA')
plt.show()

Но таким образом я поместил A на ось X и B на ось Y, так что я думаю, используя только два измерения (потому что я видел все примерыс двумя измерениями).

enter image description here

Итак, мой вопрос, я не черчу все измерения?(В моем случае осталось 650 измерений?) Что я делаю не так?

Возможно, мой вопрос может быть глупым, но я пытаюсь понять эту тему.

1 Ответ

0 голосов
/ 28 марта 2019

Не используйте 0 для кодирования пропущенных значений (в частности, не с PCA).

Это максимальная разница с 5, так что по сути вы прямо сейчас предполагаете, что пользователи ненавидят все фильмы, которые они не оценивали.

Я не знаю, есть ли какой-нибудь вариант PCA, который работает с отсутствующими данными.Обычно кажется, что у вас есть все значения.Поэтому вам, вероятно, нужно выбрать другие алгоритмы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...