Сохранить метки CSV для LDA PCA - PullRequest
0 голосов
/ 07 декабря 2018

Я пытаюсь использовать 20 самых популярных данных частоты 2000 тем в https://github.com/wwbp/facebook_topics/tree/master/csv

Я хотел бы выполнить рандомизированный PCA для данных.Из документации X должен иметь форму массива, подобную форме (n_samples, n_features).

Я импортировал файл с LDA_topics = pd.read_csv(r'2000topics.top20freqs.keys.csv', header=None, index_col=0, error_bad_lines=False)

, однако это неправильный формат для следующегострока:

pca2 = sklearn.decomposition.RandomizedPCA(n_components=45)
pca2.fit(LDA_topics)

, в результате чего ошибка ValueError: не удалось преобразовать строку в число с плавающей точкой: 'sonic'

Есть ли способ выполнить PCA и сохранить метки элементов, а не только частоты после этого?

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

PCA не удаляет и не сохраняет функции, но результаты компонента также не отображаются на объекты.(Если заданы параметры x, y, z и n_components=2, то получающиеся два компонента не будут идеально сопоставлены ни с одним из xyz.) Если вы хотите сохранить имена объектов как часть уменьшения размерностиВозможно, вы захотите изучить другие подходы ( У sklearn есть целый раздел для этого ).

Чак Иван прав, что кодировщик или векторизатор вызывается до того, как вы сможете выполнить PCA.Мне нравится его предложение OrdinalEncoder, но вы также можете рассмотреть текстовые утилиты sklearn в этом списке: https://scikit -learn.org / stable / modules / classes.html # module-sklearn.feature_extraction.text

0 голосов
/ 07 декабря 2018

PCA работает путем решения задачи оптимизации, которая требует, чтобы ваши функции были числовыми.Этот код пытается выполнить PCA на нечисловых данных.Вам нужно будет разложить (кодировать) строки на числа. sklearn.preprocessing.OrdinalEncoder и sklearn.preprocessing.OneHotEncoder обрабатывают это.

Решение для извлечения признаков Чарльза Ландау выглядит очень актуально для вопроса.

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