phython拟合曲面方程_python数据关系型图表散点图系列曲面拟合图

phython拟合曲面方程_python数据关系型图表散点图系列曲面拟合图_第1张图片

曲面拟合图

曲面拟合用于二维变量与目标函数之间关系的分析;

曲面拟合:

根据实际实验测试数据,求取函数f(x,y)与变量x及y之间的解析式,使其通过或近似通过所有的实验测试点;即使所有实验数据点能近似地分布在函数f(x,y)所表示的空间曲面上;

曲面拟合通常采用方式:

  • 插值方式

  • 逼近方式

共同点:

均利用曲面上或接近曲面的一组离散点,寻求良好的曲面方程;

区别:

  • 插值方式得到的方程,所表示的曲面全部通过这组数据点,例如:lowess曲面拟合;

  • 逼近方式只要求在某种准则下,其方程表示的曲面与这组数据点接近即可,例如:多项式曲面拟合;

  • 逼近方式一般使用最小二乘法实现;

  • 最小二乘法是一种逼近理论,也是采样数据进行拟合时最常用的一种方法;曲面一般不通过已知数据点,而是根据拟合的曲面在取样处的数值与实际值之差的平均和达到最小时求得;使拟合数值与实际数值之间的偏平方差的和达到最小;

绘制曲面拟合图

  1. Statsmodels包的ols函数可以实现多元多次曲面拟合;

  2. 先使用现有的数据集拟合得到多项式方程z=f(x,y);

  3. 再使用np.meshgird()函数生成x和y的网格数据;

  4. 然后使用拟合的多项式预测z数值;

  5. 最后使用ax.plot_surface()函数绘制拟合曲面;

一次曲面拟合

from statsmodels.formula.api import ols

import pandas as pd

from mpl_toolkits import mplot3d

import numpy as np

import matplotlib.pyplot as plt

import matplotlib as mpl

df=pd.read_csv('d:\python\out\SurfaceD.csv')

##多项式拟合z=f(x, y)=a+bx+cy+dx2+ey2

formula = 'z~x+y'

est = ols(formula,data=df).fit()

print(est.summary())

N=30

xmar= np.linspace(min(df.x),max(df.x),N)

ymar= np.linspace(min(df.y),max(df.y),N)

X,Y=np.meshgrid(xmar,ymar)

df_grid =pd.DataFrame({ 'x':X.flatten(),'y':Y.flatten()})

Z=est.predict(df_grid)

fig = plt.figure(figsize=(10,8),dpi =90)

ax = fig.gca(projection='3d')

#ax.set_aspect('equal','box')

ax.view_init(azim=60, elev=20)

##改变绘制图像的视角,即相机的位置,azim沿着z轴旋转,elev沿着y轴

#----------------------------------------------------------------

ax.grid(False)

ax.xaxis._axinfo['tick']['outward_factor'] = 0

你可能感兴趣的:(phython拟合曲面方程,python,一组数据,正态分布散点图,python,将数据改为int型,有一组数据python,怎么生成图)