def get_covariance_matrix(data): avg=get_average(data) avg=[n[0] for n in avg] centralized_matrix=[0]*len(data) for i,item in enumerate(data): centralized_matrix[i]=Vector.minus(item,avg) res=Matrix.multiply(Matrix.transpose(centralized_matrix),centralized_matrix) N=len(data)-1 return Matrix.multiply_integer(res, 1/N)
def determinant(A): if not A or len(A) != len(A[0]): raise Exception("Invalid input") new_A = [[0] * len(A[0]) for _ in range(len(A))] for i in range(len(A)): for j in range(len(A)): new_A[i][j] = A[i][j] for i in range(len(A)): for j in range(i + 1, len(A)): new_A[j] = Vector.minus(new_A[j], Vector.multiply_integer(new_A[i], new_A[j][i] / new_A[i][i])) res = 1 for i in range(len(A)): res *= new_A[i][i] return res
def inverse(A): if not A or len(A) != len(A[0]): raise Exception("Invalid input") length = len(A) res = append(A, eye(length)) for i in range(length): res[i] = Vector.multiply_integer(res[i], 1 / res[i][i]) for j in range(length): if i == j: continue res[j] = Vector.minus(res[j], Vector.multiply_integer(res[i], res[j][i])) for i in range(length): res[i] = res[i][length:] return res