我有一个巨大的数据集,包含679行和16列,缺失值为30%.所以我决定用包impute中的impute.knn函数来判断这个缺失的值,我得到了一个包含679行和16列但没有缺失值的数据集.
但现在我想使用RMSE检查准确性,我尝试了两个选项:
hydroGOF并应用该rmse功能sqrt(mean (obs-sim)^2), na.rm=TRUE)在两种情况下,我有错误: errors in sim .obs: non numeric argument to binary operator.
发生这种情况是因为原始数据集包含一个NA值(缺少某些值).
如果删除缺失值,如何计算RMSE?然后obs,sim将有不同的大小.
需要一个使用Pandas DataFrame计算RMSE的简单示例.提供有循环true和预测值返回的函数:
def fun (data):
...
return trueVal, predVal
for data in set:
fun(data)
Run Code Online (Sandbox Code Playgroud)
然后一些代码将这些结果放在下面的数据框中,其中x是一个实数值并且p是预测值:
In [20]: d
Out[20]: {'p': [1, 10, 4, 5, 5], 'x': [1, 2, 3, 4, 5]}
In [21]: df = pd.DataFrame(d)
In [22]: df
Out[22]:
p x
0 1 1
1 10 2
2 4 3
3 5 4
4 5 5
Run Code Online (Sandbox Code Playgroud)
问题:
1)如何fun在df数据框中输入函数的结果?
2)如何使用df数据框计算RMSE ?
我在尝试使用NumPy计算IPython中的均方根误差时遇到问题.我很确定该函数是正确的,但是当我尝试输入值时,它会给我以下TypeError消息:
TypeError: unsupported operand type(s) for -: 'tuple' and 'tuple'
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
import numpy as np
def rmse(predictions, targets):
return np.sqrt(((predictions - targets) ** 2).mean())
print rmse((2,2,3),(0,2,6))
Run Code Online (Sandbox Code Playgroud)
显然我的输入有问题.在我将数组放入rmse():生产线之前是否需要建立数组?
我V1通过V12对目标变量进行数字特征观察Wavelength.我想计算Vx列之间的RMSE .数据格式如下.
每个变量"Vx"以5分钟的间隔测量.我想计算所有Vx变量观测值之间的RMSE,我该怎么做?

这是我找到的链接,但我不确定如何获得y_pred:https://www.kaggle.com/wiki/RootMeanSquaredError
对于下面提供的链接,我认为我没有预测值:http: //heuristically.wordpress.com/2013/07/12/calculate-rmse-and-mae-in-r-and-sas/
我正在尝试制作函数来计算y(真值)和y_pred(预测值)的均方误差,而不是使用sklearn或其他实现.
我接下来会尝试:
def mserror(y, y_pred):
i=0
for i in range (len(y)):
i+=1
mse = ((y - y_pred) ** 2).mean(y)
return mse
Run Code Online (Sandbox Code Playgroud)
能否请您纠正我在计算中出错的原因以及可以修复的问题?
我有以下格式的数据集(在此链接中找到:https : //drive.google.com/open?id=0B2Iv8dfU4fTUY2ltNGVkMG05V00)。
time X Y
0.000543 0 10
0.000575 0 10
0.041324 1 10
0.041331 2 10
0.041336 3 10
0.04134 4 10
...
9.987735 55 239
9.987739 56 239
9.987744 57 239
9.987749 58 239
9.987938 59 239
Run Code Online (Sandbox Code Playgroud)
数据集中的第三列(Y)是我的真实值-这就是我想要预测(估计)的值。我想做一个预测Y(即Y根据的前100个滚动值来预测的当前值X。为此,我python使用编写以下脚本random forest regression model。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
@author: deshag
"""
import pandas as pd
import numpy as np
from io import StringIO
from …Run Code Online (Sandbox Code Playgroud) 我试图从熊猫数据帧计算均方根误差.我已经检查了堆叠溢出的先前链接,例如python中的均方根错误 和scikit学习文档http://scikit-learn.org/stable/modules/generated/sklearn.metrics.mean_squared_error.html我希望有人出来会对我的错误有所了解.这是数据集.这是我的代码.
import pandas as pd
import numpy as np
sales = pd.read_csv("home_data.csv")
from sklearn.cross_validation import train_test_split
train_data,test_data = train_test_split(sales,train_size=0.8)
from sklearn.linear_model import LinearRegression
X = train_data[['sqft_living']]
y=train_data.price
#build the linear regression object
lm=LinearRegression()
# Train the model using the training sets
lm.fit(X,y)
#print the y intercept
print(lm.intercept_)
#print the coefficents
print(lm.coef_)
lm.predict(300)
from math import sqrt
from sklearn.metrics import mean_squared_error
y_true=train_data.price.loc[0:5,]
test_data=test_data[['price']].reset_index()
y_pred=test_data.price.loc[0:5,]
predicted =y_pred.as_matrix()
actual= y_true.as_matrix()
mean_squared_error(actual, predicted)
Run Code Online (Sandbox Code Playgroud)
所以这对我有用.我不得不将sqft生活的测试数据集值从行转换为列.
from sklearn.linear_model import …Run Code Online (Sandbox Code Playgroud) python ×4
pandas ×3
numpy ×2
r ×2
scikit-learn ×2
equation ×1
hydrogof ×1
python-3.x ×1
statistics ×1