# 使用with语句打开csv文件,这样可以确保文件在使用完之后会被正确关闭 with open('your_file.csv', 'r') as f: # 创建一个csv阅读器 reader = csv.reader(f) # 遍历csv文件中的每一行 for row in reader: # 将每一行的数据转换为浮点数,并添加到数据列表中 data.append([float(x) for x in row])
# 使用with语句打开csv文件,这样可以确保文件在使用完之后会被正确关闭 withopen('your_file.csv', 'r') as f: # 创建一个csv阅读器 reader = csv.reader(f) # 跳过第一行(列名) next(reader) # 遍历csv文件中的每一行 for row in reader: # 将每一行的数据转换为浮点数,并添加到数据列表中 data.append([float(x) for x in row])
# 均值向量u的计算公式为:u = (1/N) * Σx_i,其中x_i是每个样本,N是样本总数。 # 协方差矩阵δ的计算公式为:δ = (1/N) * Σ(x_i - u)(x_i - u)^T,其中^T表示转置。 defMLE(data): # 数据数目 N = len(data) # 健壮性,防止没有数据 if N == 0: return0, 0 # 检查数据维度 ifisinstance(data[0], list): # 数据是多维的 N_features = len(data[0]) # 初始化 u = [0for i inrange(N_features)] theta = [[0for i inrange(N_features)] for j inrange(N_features)] # 计算均值向量 for x in data: for i inrange(N_features): u[i] += x[i] for i inrange(N_features): u[i] /= N # 计算协方差矩阵 for x in data: for i inrange(N_features): for j inrange(N_features): theta[i][j] += (x[i] - u[i]) * (x[j] - u[j]) for i inrange(N_features): for j inrange(N_features): theta[i][j] /= N else: # 数据是一维的 N_features = 1 # 初始化 u = [0] theta = [[0]] # 计算均值 for x in data: u[0] += x u[0] /= N # 计算方差 for x in data: theta[0][0] += (x - u[0]) ** 2 theta[0][0] /= N return u, theta