2008-04-06 22:39:45
行列の特異値分解をやってみた。RとPythonで。あ、結果が違うじゃないか。と思ったら、表示方法が違うのだった。道理で計算が合わないと思った。
・Rで特異値分解
> testmtx
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> svd(testmtx)
$d
[1] 9.5255181 0.5143006
$u
[,1] [,2]
[1,] -0.6196295 -0.7848945
[2,] -0.7848945 0.6196295
$v
[,1] [,2]
[1,] -0.2298477 0.8834610
[2,] -0.5247448 0.2407825
[3,] -0.8196419 -0.4018960
・pythonで特異値分解(ipython画面)
In : mtx
Out:
matrix([[1, 3, 5],
[2, 4, 6]])
In : svd(mtx)
Out:
(array([[-0.61962948, -0.78489445],
[-0.78489445, 0.61962948]]),
array([ 9.52551809, 0.51430058]),
array([[-0.2298477 , -0.52474482, -0.81964194],
[ 0.88346102, 0.24078249, -0.40189603],
[ 0.40824829, -0.81649658, 0.40824829]]))
ああ、大変な目に遭った。