如何基于字典值创建循环函数计算各文件均方误差?
提取字典中文件数据的均方误差解决方案
当然可以实现这个需求!我来给你具体的实现方案,完全符合你的要求:
核心思路
- 遍历字典的键值对(文件名 + 对应的数据表)
- 对每个文件提取
Total列的数据 - 计算该列的均方误差(MSE),并按指定格式打印文件名与结果
实现代码
假设你是用pandas读取的文件(从你给出的表格格式来看大概率是这样),下面是完整的可运行代码:
首先导入依赖库:
import pandas as pd import numpy as np
然后定义循环计算的函数:
def compute_file_mse(file_data_dict, true_values=None): """ 遍历字典中的每个文件数据,计算Total列的均方误差并打印结果 :param file_data_dict: 存储文件数据的字典,键为文件名,值为包含Total列的DataFrame :param true_values: 可选,真实值数组,用于计算预测值与真实值的MSE;若不传则计算相对于均值的MSE(即方差) """ # 遍历字典的每个键值对 for file_name, df in file_data_dict.items(): # 提取Total列的数值 total_column = df['Total'].values # 计算均方误差 if true_values is not None: # 有真实值时,计算预测值与真实值的MSE mse = np.mean((total_column - true_values) ** 2) else: # 无真实值时,计算该列相对于自身均值的MSE(等同于方差) mean_total = np.mean(total_column) mse = np.mean((total_column - mean_total) ** 2) # 按要求格式打印结果,保留一位小数(可根据需求调整) print(f"{file_name} - Mean Square error is {mse:.1f}")
最后调用函数即可:
# 假设你的文件字典名为d,直接传入函数 compute_file_mse(d) # 如果你有对应真实值(比如每个日期的预期Total),可以传入真实值数组 # example_true_values = [500, 450, 380, 200] # compute_file_mse(d, example_true_values)
适配非pandas数据的情况
如果你的数据不是pandas DataFrame(比如是纯列表格式),只需要调整提取Total列的逻辑即可:
# 假设每个字典值是列表,第一行是表头,后续行是数据 total_column = [float(row[1]) for row in data[1:]]
内容的提问来源于stack exchange,提问作者R Sem
相关产品推荐
相关产品推荐

