我有Directory
格式的一组数据,其中(x, y, z)
是涉及z
和x
的某个公式的输出。我想知道公式是什么,我的互联网研究表明统计回归是实现这一目标的方法。
然而,我在研究时发现的所有例子都只涉及二维数据集y
,这对我的情况没有用。所述示例似乎也没有提供一种方法来查看所得到的公式是什么,它们只是提供了基于不在训练数据集中的数据来预测未来输出的函数。
所需的精确度是(x, y)
的公式需要在实际值的+/- 0.5范围内产生结果。
谁能告诉我如何做我想做的事情?请注意,我没有要求提供有关软件库的具体建议。
答案 0 :(得分:3)
如果公式是线性函数,请检查此tutorial。它使用普通最小二乘来拟合您非常强大的数据。
假设您有数据点(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})
答案 1 :(得分:0)
您需要使用的最基本工具是多元线性回归。基本方法将z模型化为x和y的线性函数,在它们之上添加高斯噪声e:f(x,y)= a1 * x + a2 * y + a3然后z生成为f(x, y)+ e,其中e通常是具有未知方差的零均值高斯。你需要找到系数a1,a2和偏差a3,它们通常用最大似然估计,然后归结为高斯假设下的普通最小二乘。它具有封闭形式的分析解决方案。
由于您可以访问Python,请查看scikit-learn中的线性回归: http://scikit-learn.org/stable/modules/linear_model.html#ordinary-least-squares
答案 2 :(得分:0)
如果您可以重用GitHub上现有的Python 3 tkinter GUI应用程序中的代码,请查看使用我的tkInterFit项目拟合线性多项式曲面方程 - 它还将创建拟合的曲面图和等高线图。 GitHub源代码位于https://github.com/zunzun/tkInterFit,带有BSD许可证。