我有一组(x, y, z)格式的数据,其中z是一些涉及x和y的公式的输出。我想找出公式是什么,我的互联网研究表明,统计回归是做到这一点的方法。
然而,我在研究中发现的所有例子都只涉及到二维数据集(x, y),这对我的情况并不有用。上述示例似乎也没有提供一种方法来查看结果公式是什么,它们只是提供了一个函数,用于根据数据预测未来的输出,而不是在培训数据集中。
所需的精度级别是,z公式需要在实际值的+/- 0.5范围内产生结果。
有人能告诉我怎样才能做我想做的事吗?请注意,我并没有要求使用软件库的具体建议。
发布于 2017-07-08 09:09:10
如果公式是线性函数,请检查这个教程。它使用普通最小二乘来拟合您的数据,这是相当强大的。
假设您有数据点(x1、y1、z1)、(x2、y2、z2)、.、(xn、yn、zn),将它们转换为三个分离的numpy数组X、Y和Z。
import numpy as np
X = np.array([x1, x2, ..., xn])
Y = np.array([y1, y2, ..., yn])
Z = np.array([z1, z2, ..., zn])然后,使用ols来适应它们!
import pandas
from statsmodels.formula.api import ols
# Your data.
# Z = a*X + b*Y + c
data = pandas.DataFrame({'x': X, 'y': Y, 'z': Z})
# Fit your data with ols model.
model = ols("Z ~ X + Y", data).fit()
# Get your model summary.
print(model.summary())
# Get your model parameters.
print(model._results.params)
# should be approximately array([c, a, b])如果有更多的变量出现
在DataFrame中添加任意数量的变量。
# Your data.
data = pandas.DataFrame({'v1': V1, 'v2': V2, 'v3': V3, 'v4': V4, 'z': Z})参考文献
Python包StatsModel
发布于 2017-07-08 09:16:39
您需要使用的最基本的工具是多元线性回归。基本方法将z作为x和y的线性函数,在其上加一个高斯噪声e: f(x,y) = a1*x + a2*y + a3,然后z表示f(x,y) + e,其中e通常是方差未知的零均值高斯。你需要找到系数a1,a2和偏置a3,它们通常是用极大似然估计的,然后在高斯假设下归结为普通的最小二乘。它具有封闭形式的解析解。
既然您可以访问Python,那么请看一下scikit-learn:模型.least#普通-最小二乘中的线性回归。
https://stackoverflow.com/questions/44984035
复制相似问题