python  数学工具包括:

1.函数的逼近

  1.1.回归

  1.2.插值

2.凸优化
3.积分
4.符号数学

本文介绍函数的逼近的回归方法

1.作为基函数的单项式

对函数 的拟合

首先定义函数并且可视化

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd def f(x):
return np.sin(x)+0.5*x x=np.linspace(-2*np.pi,2*np.pi,50)
plt.plot(x,f(x),'b')
plt.xlabel('x')
plt.ylabel('f(x)')
plt.grid(True)

 

先用一次函数拟合

reg=np.polyfit(x,f(x),deg=1)
ry=np.polyval(reg,x)
plt.plot(x,f(x),'b',label='f(x)')
plt.grid(True)
plt.plot(x,ry,'r.',label='reg')
plt.legend(loc=0)

  

再用高次函数进行拟合

reg=np.polyfit(x,f(x),deg=16)
ry=np.polyval(reg,x)
plt.plot(x,f(x),'b',label='f(x)')
plt.grid(True)
plt.plot(x,ry,'r.',label='reg')
plt.legend(loc=0)

  

拟合效果的检查

print('平均误差:',sum((ry-f(x))**2)/len(x))

平均误差: 3.16518401761e-13

  

np.allclose(ry,f(x))

True

 

2.单独的基函数

首先常见一个空的矩阵,然后为任一行添加函数

mat=np.zeros((3+1,len(x)))
mat[3,:]=x**3
mat[2,:]=x**2
mat[1,:]=x
mat[0,:]=1 reg=np.linalg.lstsq(mat.T,f(x)) #输出系数
reg[0]
array([  1.52685368e-14,   5.62777448e-01,  -1.11022302e-15,
-5.43553615e-03])

  

#输出图形
ry=np.dot(reg[0],mat) plt.plot(x,f(x),'b',label='f(x)')
plt.plot(x,ry,'r.',label='reg')
plt.grid(True)
plt.legend(loc=0)

  

对每行的基函数进行变换:

mat=np.zeros((3+1,len(x)))
mat[3,:]=np.sin(x)
mat[2,:]=x**2
mat[1,:]=x
mat[0,:]=1 reg=np.linalg.lstsq(mat.T,f(x)) ry=np.dot(reg[0],mat) plt.plot(x,f(x),'b',label='f(x)')
plt.plot(x,ry,'r.',label='reg')
plt.grid(True)
plt.legend(loc=0)

  

3.多维情形

def fm(x,y):
return np.sin(x) + 0.25 * x + np.sqrt(y) + 0.05**y*2 x = np.linspace(0, 10, 20)
y = np.linspace(0, 10, 20)
x, y = np. meshgrid( x, y) Z = fm(x,y)
x = x.flatten()
y = x. flatten() import statsmodels.api as sm matrix=np.zeros((len(x),6+1)) matrix[:,6] = np.sqrt(y)
matrix[:,5] = np.sin(x)
matrix[:,4] = y**2
matrix[:,3] = y**2
matrix[:,2] = y
matrix[:,1] = x
matrix[:,0] = 1 res=sm.OLS(fm(x,y),matrix).fit() print(res.summary().as_text())

  

                         OLS Regression Results
==============================================================================
Dep. Variable: y R-squared: 0.999
Model: OLS Adj. R-squared: 0.999
Method: Least Squares F-statistic: 9.605e+04
Date: Tue, 31 Jul 2018 Prob (F-statistic): 0.00
Time: 10:51:36 Log-Likelihood: 661.47
No. Observations: 400 AIC: -1313.
Df Residuals: 395 BIC: -1293.
Df Model: 4
Covariance Type: nonrobust
==============================================================================
coef std err t P>|t| [0.025 0.975]
------------------------------------------------------------------------------
const 1.9548 0.010 193.732 0.000 1.935 1.975
x1 0.5891 0.005 111.546 0.000 0.579 0.600
x2 0.5891 0.005 111.546 0.000 0.579 0.600
x3 -0.0150 0.000 -54.014 0.000 -0.016 -0.014
x4 -0.0150 0.000 -54.014 0.000 -0.016 -0.014
x5 0.9533 0.004 251.168 0.000 0.946 0.961
x6 -1.6190 0.020 -79.979 0.000 -1.659 -1.579
==============================================================================
Omnibus: 4.352 Durbin-Watson: 0.880
Prob(Omnibus): 0.113 Jarque-Bera (JB): 4.214
Skew: -0.208 Prob(JB): 0.122
Kurtosis: 2.717 Cond. No. 4.93e+17
==============================================================================

 

python数学工具(一)的更多相关文章

  1. 你不得不看的Python机器学习工具

    IEEE Spectrum排行榜第一,Skill UP排名第一的开发工具,Stack Overflow年度调查中程序员最感兴趣的选择,Stack Overflow 6月份访问量最多的编程语言..... ...

  2. QuantLib 金融计算——数学工具之数值积分

    目录 QuantLib 金融计算--数学工具之数值积分 概述 常见积分方法 高斯积分 如果未做特别说明,文中的程序都是 Python3 代码. QuantLib 金融计算--数学工具之数值积分 载入模 ...

  3. Python数学建模-02.数据导入

    数据导入是所有数模编程的第一步,比你想象的更重要. 先要学会一种未必最佳,但是通用.安全.简单.好学的方法. 『Python 数学建模 @ Youcans』带你从数模小白成为国赛达人. 1. 数据导入 ...

  4. 【Machine Learning】Python开发工具:Anaconda+Sublime

    Python开发工具:Anaconda+Sublime 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现 ...

  5. Python开发工具PyCharm个性化设置(图解)

    Python开发工具PyCharm个性化设置,包括设置默认PyCharm解析器.设置缩进符为制表符.设置IDE皮肤主题等,大家参考使用吧. JetBrains PyCharm Pro 4.5.3 中文 ...

  6. Python数学函数

    1.Python数学函数 1.abs(x):取绝对值,内建函数 2.math.ceil(x):向上取整,在math模块中 3.cmp(x,y):如果 x < y ,返回-1:如果 x == y ...

  7. 数学工具之mathgv

    做科研时,数学必不可少,有时要看一个方程的很多特性,当然,自己了解的当然好,可要是碰到复杂的,一下子是看不出来,这个时候借助数学工具可以很好地画出来,这里介绍mathgv这个软件. 此软件是开源的,使 ...

  8. 下破解安装Python开发工具WingIDE4.1

    步骤: 1.将系统时间调整到一个月之前,然后执行安装. 可以使用date命令调整系统时间,如:date -s '2012-08-14 10:00:00' 2.安装成功后,打开程序,按照提示信息,申请一 ...

  9. Python小工具--删除svn文件

    有的时候我们需要删除项目下的svn相关文件,但是SVN会在所有的目录下都创建隐藏文件.svn,手工一个个目录查找然后删除显然比较麻烦.所以这里提供了一个Python小工具用于批量删除svn的相关文件: ...

随机推荐

  1. 关于github 新工程上传代码 git 命令

    1.git init // 初始化git文件 2.git add . //添加上传全部文件 "."代表全部 3.git remote add origin  git····//gi ...

  2. CentOS 6.4 configure error的解决方法

    资料来源:http://blog.sina.com.cn/s/blog_62426dcf0100f2rz.html 虽然上面的文章是针对centOS 5写的,不过经测试也可用于centOS6.4. 自 ...

  3. MyBatis批量插入模板

    oracle: <insert id="insertBatch" parameterType="List"> INSERT INTO TStuden ...

  4. 易语言 史诗级Json处理 烁_Json模块!!!!

    大家好,我是键盘上的魔手 * “************************”* “** 欢迎使用烁Json模块 **”* “** 作者:键盘上的魔手 **”* “**  微信号:codervip ...

  5. spark集群搭建(三台虚拟机)——系统环境搭建(1)

    !!!该系列使用三台虚拟机搭建一个完整的spark集群,集群环境如下: virtualBox5.2.Ubuntu14.04.securecrt7.3.6_x64英文版(连接虚拟机) jdk1.7.0. ...

  6. nyoj 38-布线问题(prim, sort)

    38-布线问题 内存限制:64MB 时间限制:1000ms Special Judge: No accepted:5 submit:11 题目描述: 南阳理工学院要进行用电线路改造,现在校长要求设计师 ...

  7. 构建 DNS 主从复制服务器

    一.主节点配置 1.yum install bind -y 安装 DNS 服务 2.vim /etc/named.conf 编辑 DNS 的配置文件 3.named-checkconf 检查配置文件 ...

  8. C语言|博客作业04

    这个作业属于哪个课程 C语言程序设计II 这个作业的要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-1/homework/9768 我在这个课程的 ...

  9. VLAN实验(3)

    1.选择2台S3700和5台pc机,并根据实验编址完成此拓扑图. 2.启动设备,检查设备的连通性: 由于现在我们还没有划分VLAN,这5台PC,还在同一个VLAN中,现在我们启动所有的设备,这是所有的 ...

  10. root权限后,不要忘了还有selinux

    下面的例子运行在中兴android 5.0手机上. 当我们使用root权限的python去创建socket监听端口8088时,selinux向kmsg输出了下面的记录 python-android5 ...