Продолжаем с того места, где мы уехали ...
Так что я могу использовать linalg.eig или linalg.svd для вычисления PCA.Каждый из них возвращает разные главные компоненты / собственные векторы и собственные значения, когда им подают одни и те же данные (в настоящее время я использую набор данных Iris).
Просмотр здесь или любое другое руководство с PCAПрименительно к набору данных Iris я обнаружу, что собственные значения равны [2.9108 0.9212 0.1474 0.0206]
.Метод eig
дает мне другой набор собственных значений / векторов для работы, с которыми я не возражаю, за исключением того, что эти собственные значения, будучи суммированными, равны количеству измерений (4) и могут использоваться для определения того, сколько каждый компонентвносит вклад в общую дисперсию.
Принимая собственные значения, возвращаемые linalg.eig
Я не могу этого сделать.Например, возвращаемые значения [9206.53059607 314.10307292 12.03601935 3.53031167]
.Доля дисперсии в этом случае будет [0.96542969 0.03293797 0.00126214 0.0003702]
. На этой другой странице говорится, что ("доля вариации, объясняемой компонентом, является просто его собственным значением, деленным на сумму собственных значений.")
Поскольку дисперсия, объясняемая каждым измерением, должнабыть постоянным (я думаю), эти пропорции неверны.Итак, если я использую значения, возвращаемые svd()
, которые являются значениями, используемыми во всех руководствах, я могу получить правильный процент отклонения от каждого измерения, но мне интересно, почему значения, возвращаемые eig
, не могутиспользоваться таким образом.
Я полагаю, что возвращенные результаты все еще являются допустимым способом проецирования переменных, так есть ли способ преобразовать их, чтобы я мог получить правильную пропорцию дисперсии, объясняемую каждой переменной?Другими словами, могу ли я использовать метод eig
и при этом иметь дисперсионную долю для каждой переменной?Кроме того, можно ли сделать это отображение только по собственным значениям, чтобы я мог иметь как действительные, так и нормализованные значения?
Извините за длинную запись между прочим.Вот (::)
за то, что зашли так далеко.Предполагая, что вы не просто прочитали эту строку.