Treść książki
Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
ZastosowaniedekompozycjiSVDwregresjiliniowej
17
wych.FunkcjadokonującadekompozycjiSVDmacierzyXwMatlabieiPythonie
nosinazwęsvd,ajejpełnewywołanieprzyjmujepostać
MATLAB
[U,S,V]=svd(X)
Python
[U,S,V]=np.linalg.svd(X)
Wartościosobliwemająścisłyzwiązekznormąeuklidesowąmacierzy,która
jestrównanajwiększejwartościosobliwejs
max(zdefinicjijesttos
1).Wartości
osobliweokreślająrównieżwskaźnikuwarunkowaniamacierzyX(ang.con-
ditionalnumber-cond).Jestonrównystosunkowinajwiększejdonajmniejszej
wartościosobliwej.Przykładowo,wykonującdekompozycjęSVDmacierzyprzy
użyciuodpowiednichkomend,otrzymujesię
MATLAB
X=[123;456;788]
[U,S,V]=svd(X)
U=
S=
V=
-0.2200-0.7780-0.5884
-0.5368-0.40710.7390
-0.81450.4784-0.3281
16.313700
01.35840
000.1354
-0.49460.69370.5236
-0.59090.1734-0.7879
-0.6373-0.69910.3242
Python
fromnumpy.linalgimportsvd
X=np.array([1,2,3,4,5,6,7,
8,8]).reshape(3,3)
U,S,V=svd(X)
print(f’U={U}’)
print(f’S={S}’)
print(f’V={V.T}’)
U=[[-0.22-0.778-0.5884]
S=[16.31371.35840.1354]
V=[[-0.49460.69370.5236]
[-0.5368-0.40710.739]
[-0.81450.4784-0.3281]]
[-0.59090.1734-0.7879]
[-0.6373-0.69910.3242]]
Łatwosprawdzić,żenormaeuklidesowamacierzyXjestrównaS(1,1)
MATLAB
norm(X)
=16.3137
Python
np.linalg.norm(X,2)
=16.3137
Podobniemożnasprawdzić,żewspółczynnikuwarunkowaniamacierzy
cond(X)jestrównystosunkowinajwiększejdonajmniejszejwartościosobli-
wej,czyliS(1,1)/S(3,3)
MATLAB
cond(X)
=120.5066
Python
np.linalg.cond(X)
=120.5066