zoukankan      html  css  js  c++  java
  • 人工智能必备数学知识学习笔记16:对称矩阵与矩阵的SVD分解

    • 完美的对称矩 

     

     



    • 正交对角化

     

     

     

     

     

     

     

     

     

     

     



    • 什么是奇异值

     

     

     

     



    • 奇异值的几何意

     

     

     

     

     

     



    • 矩阵的SVD分解

     

     

     

     

     

     

     

     代码实现:

     1.文件 main_svd.py 编写代码:

     1 #矩阵的svd分解
     2 import numpy as np
     3 from scipy.linalg import svd
     4 
     5 if __name__ == "__main__":
     6 
     7     A = np.array([[1, 2],
     8                   [3, 4],
     9                   [5, 6]])
    10 
    11     U, s, VT = svd(A) #svd分解
    12     print(U)
    13     print(s)
    14     print(VT)
    15     print()
    16 
    17     Sigma = np.zeros(A.shape)#Sigma矩阵
    18     for i in range(len(s)):
    19         Sigma[i][i] = s[i]
    20     print(Sigma)
    21     print(U.dot(Sigma).dot(VT))#验证svd(奇异值)分解

    2.文件 main_svd.py 运行结果:

     1 /Users/liuxiaoming/PycharmProjects/LinearAlgebra/venv/bin/python /Applications/PyCharm.app/Contents/plugins/python/helpers/pydev/pydevconsole.py --mode=client --port=49318
     2 import sys; print('Python %s on %s' % (sys.version, sys.platform))
     3 sys.path.extend(['/Users/liuxiaoming/PycharmProjects/LinearAlgebra'])
     4 PyDev console: starting.
     5 Python 3.8.2 (v3.8.2:7b3ab5921f, Feb 24 2020, 17:52:18) 
     6 [Clang 6.0 (clang-600.0.57)] on darwin
     7 >>> runfile('/Users/liuxiaoming/PycharmProjects/LinearAlgebra/main_svd.py', wdir='/Users/liuxiaoming/PycharmProjects/LinearAlgebra')
     8 [[-0.2298477   0.88346102  0.40824829]
     9  [-0.52474482  0.24078249 -0.81649658]
    10  [-0.81964194 -0.40189603  0.40824829]]
    11 [9.52551809 0.51430058]
    12 [[-0.61962948 -0.78489445]
    13  [-0.78489445  0.61962948]]
    14 [[9.52551809 0.        ]
    15  [0.         0.51430058]
    16  [0.         0.        ]]
    17 [[1. 2.]
    18  [3. 4.]
    19  [5. 6.]]
    20 Process finished with exit code 0


    • SVD分解的应用

     

     

     

  • 相关阅读:
    C# 计算结果四舍五入
    同时执行多条SQL语句
    将一个datatable的值赋给另一个dt的三种方法转
    Oracle中增加、删除、修改字段
    Oracle 某列转为行
    DataList中链接跳转页面传参数
    修改数据库中多个表中的同一个字段的长度(可参照修改成同一字段的列名、注释等)
    克隆表结构
    博客专题
    Rational Rose2003 安装教程
  • 原文地址:https://www.cnblogs.com/liuxiaoming123/p/13617659.html
Copyright © 2011-2022 走看看