曲面拟合图

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

曲面拟合:

根据实际实验测试数据,求取函数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

ax.xaxis._axinfo['tick']['inward_factor'] = 0.4

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

ax.yaxis._axinfo['tick']['inward_factor'] = 0.4

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

ax.zaxis._axinfo['tick']['inward_factor'] = 0.4

# =================================================================

ax.xaxis.pane.fill = False

ax.yaxis.pane.fill = False

ax.zaxis.pane.fill = False

# =================================================================

ax.xaxis.pane.set_edgecolor('k')

ax.yaxis.pane.set_edgecolor('k')

ax.zaxis.pane.set_edgecolor('k')

p=ax.plot_surface(X,Y, Z.values.reshape(N,N), rstride=1, cstride=1, cmap='Spectral_r',

alpha=1,edgecolor='k',linewidth=0.25)

ax.set_xlabel( "Gax Mileage (mpg)")

ax.set_ylabel("0-60 mph (sec)")

ax.set_zlabel("Power (KW)")

ax.set_zlim(20,140)

cbar=fig.colorbar(p, shrink=0.5,aspect=10)

cbar.set_label('Power (kW)')

fig.savefig('d:\python\out\三维曲面图3.pdf')

OLS Regression Results

=================================================================

Dep. Variable: z R-squared: 0.614

Model: OLS Adj. R-squared: 0.611

Method: Least Squares F-statistic: 267.7

Date: Wed, 19 Aug 2020 Prob (F-statistic): 2.44e-70

Time: 21:03:14 Log-Likelihood: -1454.1

No. Observations: 340 AIC: 2914.

Df Residuals: 337 BIC: 2926.

Df Model: 2

Covariance Type: nonrobust

=================================================================

coef std err t P>|t| [0.025 0.975]

-----------------------------------------------------------------

Intercept 164.2697 5.318 30.888 0.000 153.809 174.731

x -0.2658 0.314 -0.846 0.398 -0.884 0.352

y -3.6913 0.168 -21.974 0.000 -4.022 -3.361

=================================================================

Omnibus: 34.307 Durbin-Watson: 1.457

Prob(Omnibus): 0.000 Jarque-Bera (JB): 55.148

Skew: 0.637 Prob(JB): 1.06e-12

Kurtosis: 4.507 Cond. No. 153.

=================================================================

Warnings:

[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.

二次曲面拟合

from statsmodels.formula.api import ols

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

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

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

formula = 'z~x+np.square(x)+y+np.square(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 = fig.add_subplot(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

ax.xaxis._axinfo['tick']['inward_factor'] = 0.4

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

ax.yaxis._axinfo['tick']['inward_factor'] = 0.4

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

ax.zaxis._axinfo['tick']['inward_factor'] = 0.4

ax.xaxis.pane.fill = False

ax.yaxis.pane.fill = False

ax.zaxis.pane.fill = False

ax.xaxis.pane.set_edgecolor('k')

ax.yaxis.pane.set_edgecolor('k')

ax.zaxis.pane.set_edgecolor('k')

p=ax.plot_surface(X,Y, Z.values.reshape(N,N), rstride=1, cstride=1, cmap='Spectral_r',

alpha=1,edgecolor='k',linewidth=0.25)

ax.set_xlabel( "Gax Mileage (mpg)")

ax.set_ylabel("0-60 mph (sec)")

ax.set_zlabel("Power (KW)")

ax.set_zlim(50,170)

cbar=fig.colorbar(p, shrink=0.5,aspect=10)

cbar.set_label('Power (kW)')

fig.savefig('d:\python\out\三维曲面图2.pdf')

OLS Regression Results

=================================================================

Dep. Variable: z R-squared: 0.701

Model: OLS Adj. R-squared: 0.697

Method: Least Squares F-statistic: 195.9

Date: Wed, 19 Aug 2020 Prob (F-statistic): 2.28e-86

Time: 21:01:42 Log-Likelihood: -1410.8

No. Observations: 340 AIC: 2832.

Df Residuals: 335 BIC: 2851.

Df Model: 4

Covariance Type: nonrobust

=================================================================

coef std err t P>|t| [0.025 0.975]

-----------------------------------------------------------------

Intercept 290.7007 18.804 15.460 0.000 253.713 327.689

x -4.2189 2.123 -1.987 0.048 -8.396 -0.042

np.square(x) 0.1314 0.064 2.052 0.041 0.005 0.257

y -12.9581 1.002 -12.936 0.000 -14.929 -10.988

np.square(y) 0.2039 0.022 9.395 0.000 0.161 0.247

================================================================

Omnibus: 45.663 Durbin-Watson: 1.814

Prob(Omnibus): 0.000 Jarque-Bera (JB): 123.583

Skew: 0.622 Prob(JB): 1.46e-27

Kurtosis: 5.679 Cond. No. 1.41e+04

=================================================================

Warnings:

[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.

[2] The condition number is large, 1.41e+04. This might indicate that there are

strong multicollinearity or other numerical problems.

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

  1. ols残差_python数据关系型图表散点图系列残差分析图

    参差分析图(线性回归.二次回归) 残差分析(residual analysis)回归方程拟合的数值和实际数值的差值就是残差:残差分析是通过残差所提供的信息,分析出数据的可靠性.周期性或其他干扰:用于分 ...

  2. oracle group by 多类别_python数据关系型图表散点图系列多数据系列

    多数据系列 多数据系列的散点图需要使用不同的填充颜色(fill)和数据点形状(shape)这两个视觉特征来表示数据系列: 绘制多数据系列散点图 多数据系列散点图就是在单数据系列上添加新的数据系列:使用 ...

  3. 用户数据销售额分析动态大屏看板+大屏数据可视化图表组件(折线图+圆柱图+散点图+饼图+漏斗图+雷达图+水位图)+智能web端高保真大数据动态可视化大屏看板+中国动态地图+智慧电商实时动态数据大屏看板

    作品内容:用户数据销售额分析动态大屏看板+大屏数据可视化图表组件(折线图+圆柱图+散点图+饼图+漏斗图+雷达图+水位图)+web端高保真大数据动态可视化大屏看板+中国动态地图+电商实时动态数据大屏看板 ...

  4. echart雷达图文字挤在一起_【数据可视化·图表篇】雷达图

    数据可视化基础图表系列的最后一篇终于跟大家见面了!今天小数将带大家走进雷达图. (之前关于柱状图.折线图.饼图和散点图的分享文章,感兴趣的小伙伴可以查看历史文章哦) 为方便大家理解,本文生成图表所使用 ...

  5. 数据可视化图表之面积折线图

    相信不少制作报表大屏的人都会遇到一个问题:我要制作每个月收入和支出趋势的报表,是要用折线图还是面积图?到底用什么图表来展示比较好?其实每个图表都有自己的特点,都有适合展示的数据类型,只要你熟悉了解每个 ...

  6. Python数据可视化之散点图和折线图

    最近一直用到Python的matplotlib包,一些画简单的散点图和折线图的用法老是记不住,所以从最基础的地方开始,稍微总结了一下. 一.散点图 画散点图时主要用到的是scatter函数. 随机产生 ...

  7. python 分布图_python数据分布型图表柱形分布图系列带误差线的柱形图

    柱形分布图系列 柱形分布图系列 使用柱形图的方式展示数据的分布规律: 可以借助误差线或散点图: 带误差线的柱形图就是使用每个类别的均值作为柱形的高度: 再根据每个类别的标准差绘制误差线: 缺点:无法显 ...

  8. python画误差图_Python数据可视化:如何创建误差图

    一图胜千言,使用Python的matplotlib库,可以快速创建高质量的图形. 这是Python数据可视化的系列短篇,针对初级和中级用户,将理论和示例代码相结合,使用matplotlib, seab ...

  9. python解复杂方程_Python数据处理篇之Sympy系列(五)---解方程

    前言 sympy不仅在符号运算方面强大,在解方程方面也是很强大. 本章节学习对应官网的:Solvers 官方教程 (一)求解多元一次方程-solve() 1.说明: 解多元一次方程可以使用solve( ...

最新文章

  1. mount --bind
  2. 在SAP中进行黏贴时必须要把之前的数据删掉后才能黏贴,不能直接使用黏贴来覆盖之前的数据,这个怎麼解?
  3. 转: 七牛云的开源播放器的使用指南
  4. C++设计模式之策略模式(Strategy)
  5. 与Android数据库一起工作
  6. CMS :内容管理系统
  7. 老船履带工具使用方法_PS中各个工具的使用方法与技巧
  8. 学习算法的网址【原创】
  9. iOS 中 UIView 和 CALayer 的关系
  10. 【肿瘤分割】基于matlab聚类乳腺肿瘤图像分割【含Matlab源码 1471期】
  11. 无火花工具的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  12. 洛特卡-沃尔泰拉模型(Lotka-Volterra model)
  13. 快速计算平方根数(约翰·卡马克)
  14. 谷歌浏览器Chrome 100即将发布,但可能无法正常使用?
  15. 如何转换字体为手写体?艺术字体在线生成器怎么用?
  16. 英文seo发外链的方法技巧
  17. gitbook 安装
  18. Android MTK修改Key键
  19. 微信小程序表单框架01
  20. 土地利用覆被变化的概念_土地利用与土地覆被变化研究综述

热门文章

  1. 敲了 10000 小时代码,我也没能成为一名高级程序员
  2. 为什么大多数编程语言性能对比都有问题?
  3. 一个堆排我竟弄了 4 个动画
  4. AWS新品直指微软,它会是改变数据库的“Game Changer”吗?
  5. 微信iOS版朋友圈可删除评论;周鸿祎:有的软件会偷拍偷录;银河麒麟操作系统V10发布| 极客头条
  6. 一文搞定移动端适配!
  7. 从“朕已阅”到“翻牌子”,程序员的仪式感可以有多重?
  8. 你根本不需要去追求“完美”的软件!
  9. 达摩院实现自动驾驶核心技术突破,首次实现3D物体检测精度与速度的兼得
  10. Linux 离奇磁盘爆满,如何解决? | 原力计划