代码拉取完成,页面将自动刷新
import numpy as np
import pandas as pd
from fractions import Fraction
# 这里定义一个单位矩阵,作为结果判断依据
temp = np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]])
A = np.array([[-1, 3, 2],
[5, 7, -2],
[-3, 0, 1]])
B = np.array([[8, 2, -1],
[6, 4, 0],
[-2, 3, 5]])
# 两个矩阵的叉乘
AXB = np.cross(A, B)
print(AXB)
# 两个矩阵的点乘
AB = np.dot(A, B)
print(AB)
# np.linalg.inv求矩阵的逆矩阵
C = np.linalg.inv(AB)
# np.linalg.det求矩阵的行列式
CH = np.linalg.det(AB)
# print(np.array(C.dot(AB), dtype=int))
# 设置矩阵元素输出用分数表示
np.set_printoptions(formatter={'all': lambda x: str(Fraction(x).limit_denominator())})
# 这里如果不设置header=None默认就将数据第一行当作数据头
df = pd.read_csv("F:/成信大/多元统计分析/test1-2.csv", header=None)
# 转置矩阵
G = np.mat(df.T)
# 平均值
mean = df.mean()
# 标准差
std = df.std()
# 协方差
F = np.mat(df.cov())
# 相关系数
# E = np.mat(F/np.mat(std))
E = np.corrcoef(G)
# 特征值和特征向量
# a, b = np.linalg.eig(F)
# 矩阵E的迹
traceE = np.trace(E)
# 矩阵E的特征值a
a, b = np.linalg.eig(E)
# 矩阵E的特征值之和sumE
sumE = round(sum(a), 8)
# print(sumE == traceE)
'''
验证矩阵E的特征向量间的正交性
https://www.cnpython.com/qa/139953
'''
# print(b.dot(b.T))
'''
对矩阵D的做奇异值分解,输出左奇异矩阵、奇异值和右奇异矩阵,并查看左奇异矩阵和右奇异矩阵是否为正交矩阵。
https://jingyan.baidu.com/article/e75057f2385f34ebc81a8944.html
'''
# u - ;v - 奇异值;w -
u, v, w = np.linalg.svd(df)
print(u)
# 左奇异矩阵
# print(u)
# 奇异值
# print(v)
# 右奇异矩阵
# print(w)
# 将v转化为对角矩阵
v = np.diag(v)
# print(u)
# 查看左奇异矩阵和右奇异矩阵是否为正交矩阵。
u = u.dot(u.T)
w = w.dot(w.T)
print(u)
'''
将矩阵与单位矩阵比较np.allclose(w, np.eye(4))
np.eye()中的参数按照生成的矩阵的格式
https://www.cnpython.com/qa/164423
'''
print(np.allclose(u, np.eye(25)))
print(np.allclose(w, np.eye(4)))
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。