Значение Error eps = 0.100000, поскольку я пытаюсь уменьшить размерность данных. Что может быть причиной этого? - PullRequest
0 голосов
/ 03 ноября 2018

Я пытаюсь использовать scikit GaussianRandomProjection с моим набором данных, который имеет форму 1599 x 11 следующим образом:

transformer = random_projection.GaussianRandomProjection()
X_new = transformer.fit_transform(wine_data.values[:, :11])

При этом я получаю сообщение об ошибке:

ValueError: eps=0.100000 and n_samples=1599 lead to a
target dimension of 6323 which is larger than the original 
space with n_features=1

Я не понимаю ошибки. Что именно это значит? Как я могу использовать GaussianRandomProjection для уменьшения размерности данных?

1 Ответ

0 голосов
/ 03 ноября 2018

Вот прямая цитата из официального документа Scikit-Learn для GaussianRandomProjection в его параметре n_components:

Размерность целевого проекционного пространства.

n_components могут быть автоматически настроены в зависимости от количества образцы в наборе данных и границы, заданной Лемма Джонсона-Линденштраусса. В этом случае качество вложения контролируется параметром eps.

Следует отметить, что лемма Джонсона-Линденштраусса может дать очень консервативная оценка необходимого количества компонентов, так как не делает никаких предположений о структуре набора данных.

Похоже, что в вашем случае оценщик имеет тенденцию давать 6323-мерную прогнозируемую цель после "уменьшения" размерности. Это, очевидно, неожиданно, потому что вы хотели уменьшить измерение, а не увеличивать его. Я предлагаю вам сначала предположить размерность (т. Е. 8) желаемого результата, а затем проверить, работает ли модель ожидаемым образом.

transformer = GaussianRandomProjection(n_components=8) #Set your desired dimension of the output
X_new = transformer.fit_transform(wine_data.values[:, :11])

Удачи

...