Назад к вопросам
JuniorТеорияЧасто
Что выведет эта программа?
import numpy as np
X = np.array([[-2, 0], [0, 1], [2, 0], [0, -1]])
Xc = X - X.mean(axis=0)
_, s, Vt = np.linalg.svd(Xc)
print(round(s[0] ** 2 / (s ** 2).sum(), 2))0.8
- Ждать
0.67, то естьs[0] / s.sum(): дисперсия растёт как квадратs, квадраты равны8и2, и доля равна8 / 10 = 0.8. - Ждать
0.2:svdвозвращаетsпо убыванию, поэтомуs[0]относится к компоненте с наибольшей дисперсией.
- Какую долю дисперсии несёт здесь вторая компонента?
- Почему данные нужно центрировать до вызова
np.linalg.svd?