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. Ansible之playbook拓展

    一.handlers和notify结合使用触发条件 handlers同tasks是属同级,相当于一个特殊任务列表,这些任务同前文说的tasks里的任务没有本质的不同,用于当关注的资源发生变化时,才会采 ...

  2. 🔥「课代表」帮你总结了全网最全的Redis知识点

    你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图.个人联系方式和人才交流群,欢迎Star和指教 ...

  3. nyoj 32-组合数(next_permutation, stack, set)

    32-组合数 内存限制:64MB 时间限制:3000ms Special Judge: No accepted:8 submit:11 题目描述: 找出从自然数1.2.... .n(0<n< ...

  4. nyoj 524-A-B Problem (java stripTrailingZeros, toPlainString)

    524-A-B Problem 内存限制:64MB 时间限制:1000ms 特判: No 通过数:2 提交数:4 难度:3 题目描述: A+B问题早已经被大家所熟知了,是不是很无聊呢?现在大家来做一下 ...

  5. sqlcipher的php扩展运行在fast-cgi:php-fpm下工作不正常

    今天发现了这样的问题,php-fpm运行sqlcipher时,有些数据库工作正常,有些却不正常. 不正常的,都在日志上报错,也就是php处理异常了. 这个报错发生在执行sql语句时,通常就是sqlci ...

  6. SIGCHLD waitpid, 小心子进程结束事件被偷了

    原本项目中依赖子进程执行的地方,都使用jni调用java层的ProcessManager,换了c++ACE框架后,发现这些任务都很慢,调试才发现所有子进程执行的任务都必须等待到reactor超时才返回 ...

  7. 菜鸟手把手学Shiro之shiro授权流程

    一.首先我们从整体去看一下授权流程,然后再根据源码去分析授权流程.如下图: 流程如下: 1.首先调用 Subject.isPermitted*/hasRole*接口,其会委托给 SecurityMan ...

  8. Zxing QRCode

    1.拉伸 2.只能扫描一次 3.空指针异常

  9. react 组件间通信,父子间通信

    一.父组件传值给子组件 父组件向下传值是使用了props属性,在父组件定义的子组件上定义传给子组件的名字和值,然后在子组件通过this.props.xxx调用就可以了. 二.子组件传值给父组件 子组件 ...

  10. python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等)

    python3 解释器默认编码为Unicode,由str类型进行表示.二进制数据使用byte类型表示. 字符串通过编码转换成字节串,字节码通过解码成为字符串. encode:str-->byte ...