首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用Python度量RMSE?

如何用Python度量RMSE?
EN

Stack Overflow用户
提问于 2018-12-29 14:47:07
回答 2查看 3.1K关注 0票数 1

我正在用卡尔曼滤波器做一个实验。我已经创建了一个非常小的时间序列数据,可以按照下面的格式设置三列。由于无法在堆栈溢出上附加文件,因此这里附加了完整的数据集以提高可再现性:

csv文件

代码语言:javascript
复制
  time        X      Y
 0.040662  1.041667  1
 0.139757  1.760417  2
 0.144357  1.190104  1
 0.145341  1.047526  1
 0.145401  1.011882  1
 0.148465  1.002970  1
 ....      .....     .

我读过记述Kalman Filter,并成功地做了一个简单的线性预测,下面是我的代码

代码语言:javascript
复制
import matplotlib.pyplot as plt 
from pykalman import KalmanFilter 
import numpy as np
import pandas as pd



df = pd.read_csv('testdata.csv')
print(df)
pd.set_option('use_inf_as_null', True)

df.dropna(inplace=True)


X = df.drop('Y', axis=1)
y = df['Y']



estimated_value= np.array(X)
real_value = np.array(y)

measurements = np.asarray(estimated_value)



kf = KalmanFilter(n_dim_obs=1, n_dim_state=1, 
                  transition_matrices=[1],
                  observation_matrices=[1],
                  initial_state_mean=measurements[0,1], 
                  initial_state_covariance=1,
                  observation_covariance=5,
                  transition_covariance=1)

state_means, state_covariances = kf.filter(measurements[:,1]) 
state_std = np.sqrt(state_covariances[:,0])
print (state_std)
print (state_means)
print (state_covariances)


fig, ax = plt.subplots()
ax.margins(x=0, y=0.05)

plt.plot(measurements[:,0], measurements[:,1], '-r', label='Real Value Input') 
plt.plot(measurements[:,0], state_means, '-b', label='Kalman-Filter') 
plt.legend(loc='best')
ax.set_xlabel("Time")
ax.set_ylabel("Value")
plt.show()

,它将下面的图作为输出提供

正如我们在情节中所看到的,这一模式似乎被相当好地捕捉到了。如何统计测量均方根误差(RMSE) (上图中的红线和蓝线之间的误差距离)?任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-29 16:55:21

尝尝这个!

代码语言:javascript
复制
from sklearn.metrics import mean_squared_error

mean_squared_error( measurements[:,1], state_means)
票数 0
EN

Stack Overflow用户

发布于 2020-11-19 10:19:42

科学知识-学习 0.22.0中,您可以传递mean_squared_error()参数squared=False来返回RMSE。

代码语言:javascript
复制
from sklearn.metrics import mean_squared_error
mean_squared_error(y_actual, y_predicted, squared=False)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53970553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档