嗯,社区:
最近我问过如何进行指数回归(Exponential regression function Python),认为对于该数据集,最优回归是双曲线。
x_data = np.arange(0, 51)
y_data = np.array([0.001, 0.199, 0.394, 0.556, 0.797, 0.891, 1.171, 1.128, 1.437,
1.525, 1.720, 1.703, 1.895, 2.003, 2.108, 2.408, 2.424,2.537,
2.647, 2.740, 2.957, 2.58, 3.156, 3.051, 3.043, 3.353, 3.400,
3.606, 3.659, 3.671, 3.750, 3.827, 3.902, 3.976, 4.048, 4.018,
4.286, 4.353, 4.418, 4.382, 4.444, 4.485, 4.465, 4.600, 4.681,
4.737, 4.792, 4.845, 4.909, 4.919, 5.100])
现在,我怀疑:
第一个是指数拟合。第二个是双曲线。我不知道哪个更好......如何确定?我应该遵循哪些标准?有一些python函数吗?
提前致谢!
答案 0 :(得分:2)
一个常见的拟合统计量是R平方(R2),可以计算为" R2 = 1.0 - (absolute_error_variance / dependent_data_variance)"它告诉您模型解释了依赖数据方差的哪一部分。例如,如果R平方值为0.95,那么您的模型将解释95%的相关数据方差。由于您正在使用numpy,因此R平方值可以简单地计算为" R2 = 1.0 - (abs_err.var()/ dep_data.var())"因为numpy数组有一个var()方法来计算方差。将数据拟合到Michaelis-Menten方程时,#y; ax =(b + x)"参数值为a = 1.0232217656373191E + 01和b = 5.2016057362771100E + 01我计算的R平方值为0.9967,这意味着" y"中的方差为99.67%。数据由此模型解释。但是,没有银弹,验证其他合适的统计数据并视觉检查模型总是好的。这是我用的例子的情节:
答案 1 :(得分:1)
那么,你应该计算一个误差函数来测量你的拟合实际有多好。您可以使用许多不同的错误函数,但是一开始,均方误差应该有效(如果您对更多指标感兴趣,请查看http://scikit-learn.org/stable/modules/model_evaluation.html)。
一旦确定了回归问题的系数,就可以手动实现均方误差:
from sklearn.metrics import mean_squared_error
f = lambda x: a * np.exp(b * x) + c
mse = mean_squared_error(y_data, f(x_data))
答案 2 :(得分:1)
你可以在函数和拟合线之间取两个范数。 Python具有函数np.linalg.norm
R平方值用于线性回归。