帮我用python写一个读取excle中的数据、插值然后求均方根误差和绘制误差图,以函数的方式
时间: 2024-03-23 13:40:47 浏览: 73
均值、方差、标准差的python代码
5星 · 资源好评率100%
好的,以下是一个示例代码,包含了读取excel、插值、计算均方根误差和绘制误差图的函数:
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy.interpolate import interp1d
def read_excel(file_path):
"""
读取excel文件并返回数据
:param file_path: excel文件路径
:return: 数据列表
"""
df = pd.read_excel(file_path)
x = df['x'].values
y = df['y'].values
return x, y
def interpolate(x, y, x_new):
"""
对数据进行插值
:param x: 原始数据的x值
:param y: 原始数据的y值
:param x_new: 新的x值
:return: 插值后的y值
"""
f = interp1d(x, y, kind='cubic')
y_new = f(x_new)
return y_new
def calc_rmse(y_true, y_pred):
"""
计算均方根误差
:param y_true: 真实值
:param y_pred: 预测值
:return: 均方根误差
"""
mse = np.mean((y_true - y_pred) ** 2)
rmse = np.sqrt(mse)
return rmse
def plot_error(x, y_true, y_pred):
"""
绘制误差图
:param x: x值
:param y_true: 真实值
:param y_pred: 预测值
"""
plt.plot(x, y_true, label='True')
plt.plot(x, y_pred, label='Pred')
plt.fill_between(x, y_true, y_pred, where=y_true >= y_pred, facecolor='green', alpha=0.1)
plt.fill_between(x, y_true, y_pred, where=y_true <= y_pred, facecolor='red', alpha=0.1)
plt.legend()
plt.show()
```
你可以将这个代码保存成一个.py文件,在需要使用的时候直接调用以上函数即可。其中,read_excel函数用于读取excel文件,interpolate函数用于对数据进行插值,calc_rmse函数用于计算均方根误差,plot_error函数用于绘制误差图。
阅读全文