在python中打印表面拟合方程

时间:2015-05-14 10:48:55

标签: python numpy matplotlib scipy least-squares

我尝试使用matplotlib将表面模型拟合到3D数据集(x,y,z)。
// package.json "jest": { "scriptPreprocessor": "preprocessor.js", "unmockedModulePathPatterns": [ "react" ], "setupEnvScriptFile": "before_test.js" } // preprocessor.js var ReactTools = require('react-tools'); module.exports = { process: function(src) { return ReactTools.transform(src); } }; // before_test.js React = require("react"); // Global React object
所以,我用等式进行二次拟合:

z = f(x,y)

到目前为止,我已经使用最小二乘法成功绘制了三维拟合表面:

f(x,y) = ax^2+by^2+cxy+dx+ey+f 

但是,我怎样才能打印/获得曲面的拟合方程(系数值)?

我将非常感谢您的帮助 谢谢。

1 个答案:

答案 0 :(得分:3)

根据函数scipy.linalg.lstsq http://docs.scipy.org/doc/scipy-0.15.1/reference/generated/scipy.linalg.lstsq.html的文档,估计的系数应存储在变量C中(与A中的列对应的顺序)。

打印您的等式,其中估计系数显示小数点后2位数:

print 'f(x,y) = {:.2f}x^2+{:.2f}y^2+{:.2f}xy+{:.2f}x+{:.2f}y+{:.2f}'.format(C[4],C[5],C[3],C[1],‌​C[2],C[0])

或:

print 'f(x,y) = {4:.2f}x^2+{5:.2f}y^2+{3:.2f}xy+{1:.2f}x+{2:.2f}y+{0:.2f}'.format(*C)

顺便说一下,图书馆pandasstatsmodels对此类任务非常有帮助(例如,检查Run an OLS regression with Pandas Data Frame