精华内容
下载资源
问答
  • python里面多元非线性回归有哪些方法SciPy 里面的子函数库optimize, 一般情况下可用curve_fit函数直接拟合或者leastsq做最小二乘第九句:简单的事重复做,你就是专家;重复的事用心做,你就是赢家。Python怎么实现...

    python里面多元非线性回归有哪些方法

    SciPy 里面的子函数库optimize, 一般情况下可用curve_fit函数直接拟合或者leastsq做最小二乘第九句:简单的事重复做,你就是专家;重复的事用心做,你就是赢家。

    Python怎么实现非线性的拟合小编只是个普通人,渴了会喝水,困了会想睡,痛了大概也会放手吧。

    f9c7c1e40704c0f2a12b8bd1962be609.png

    import matplotlib.pyplot as ptimport numpy as npfrom scipy.optimize import leastsqfrom pylab import *time = []counts = []for i in open('/some/folder/to/file.txt', 'r'): segs = i.split() time.append(float(segs[0])) counts.append讨厌一个人和喜欢一个人是一样的,都是不需要任何理由的

    python怎样做高斯拟合

    python怎么用线性回归拟合有一天你能够自给自足:从物质到情感到精神,你才能够与人真正的和谐亲密相处。

    请教一个多组数据点拟合的问题,需要用 Python 实现

    试试 numpy.piecewise() 或者 google 一下 piecewise liearn fitting 对 numpy 不熟悉,以小编朴素的数学知识瞎 bibi 下, 先锁定第一点 A 和最后一点 B, 然后假定加入中间的 i 点,变成 2 条线了,计算对应的方差 Di,确定第 3 个点 C=i, where 小编发誓你会活的有笑容,没人能把谁的幸福没收。

    python中用polyfit拟合出的函数怎么能直接调用?不开心,就算长生不老也没用,开心,就算只能活几天也足够!

    怎么用Python将图像边界用最小二乘法拟合成曲线

    Python 怎么用曲线拟合数据爱情是一场说走就走的旅行,也是一场说散就散的青春。

    小编有两组数据: y = [41.417, 49.077, 26.683, 42.137, 37.31, 10.022, Python中利用guiqwt进行曲线数据拟合。

    展开全文
  • MATLAB中有一个多元非线性拟合的功能是nlinfit 基本语法是: beta = nlinfit(X,Y,modelfun,beta0) 式子左边的beta可以是一个向量,向量的元素就是要回归的模型中的参数。 式子右边,modelfun是要回归的函数...

    MATLAB中有一个多元非线性拟合的功能是nlinfit
    基本语法是:

    beta = nlinfit(X,Y,modelfun,beta0)

    式子左边的beta可以是一个向量,向量的元素就是要回归的模型中的参数。
    式子右边,modelfun是要回归的函数形式。X是函数的自变量数据;Y是函数的因变量数据;beta0是待回归参数的初始值。

    modelfun如果是MATLAB内置的函数形式,则直接使用,例如,内置的Hougen-Watson model,形式如下:
    Hougen-Watson model

    使用时,这么用

    beta = nlinfit(X,Y,@hougen,beta0)

    这里@是函数句柄的操作符。
    因为Hougen-Watson model中有5个待回归的参数(β1\beta_{1}β2\beta_{2}β3\beta_{3}β4\beta_{4}β5\beta_{5}),因此beta0是一个1×5的向量。模型中有3个未知数,因此X是个n×3的矩阵,Y是n×1的矩阵。n是数据的条数。

    如果modelfun不是MATLAB内置的函数,就需要自己建立一个函数的形式。例如,下面的语句:

    modelfun = @(beta,x)((beta(1)*x1+(1-beta(1))*x2)*beta(2));

    展开全文
  • 生成非线性数据集前面我们介绍了Python代码实现线性回归,今天,我们来聊一聊当数据呈现非线性时,这时我们继续用线性表达式去拟合,显然效果会很差,那我们该怎么处理?继续上实例(我们的代码里用到的数据集尽量...

    生成非线性数据集

    前面我们介绍了Python代码实现线性回归,今天,我们来聊一聊当数据呈现非线性时,这时我们继续用线性表达式去拟合,显然效果会很差,那我们该怎么处理?继续上实例(我们的代码里用到的数据集尽量直接由Python生成,因此,是可以全部跑通的,有需要的同学,建议大家粘贴复现一下,多思考,多动手,才可以学的更好。)

    import numpy as np

    from matplotlib import pyplot as plt

    plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签

    plt.rcParams['axes.unicode_minus']=False #用来正常显示负号

    #生成如下数据集

    a= np.arange(1,11)

    b=np.array([4500,5000,6000,8000,11000,15000,20000,30000,50000,100000])

    data = np.c_[a,b]

    #给x,y分别添加维度

    x = data[:,0,np.newaxis]

    y=data[:,1,np.newaxis]

    plt.scatter(x,y)

    plt.show()

    1、用线性回归拟合

    数据的分布如上图所示,这时候如果继续使用线性回归去拟合,这里继续使用上篇文章Python手写的类,和sklearn里面实现是一样的。

    链接: 手写算法-Python代码推广多元线性回归

    class normal():

    def __init__(self):

    pass

    def fit(self,x,y):

    m=x.shape[0]

    X = np.concatenate((np.ones((m,1)),x),axis=1)

    xMat=np.mat(X)

    yMat=yMat =np.mat(y.reshape(-1,1))

    xTx=xMat.T*xMat

    #xTx.I为xTx的逆矩阵

    ws=xTx.I*xMat.T*yMat

    return ws

    model=normal()

    w = model.fit(x,y)

    #生成2个点画图

    x_test=np.array([[1],[10]])

    y_test = w[0] + x_test * w[1]

    ax1= plt.subplot()

    ax1.plot(x_test,y_test,c='r',label='线性回归拟合线')

    ax1.scatter(x,y,c='b',label='真实分布')

    ax1.legend()

    plt.show()

    可以看出拟合的效果很差,这里如果用

    这种表达式去拟合应该会更好

    2、多项式拟合

    这里和大家介绍一个

    #生成多项式

    from sklearn.preprocessing import PolynomialFeatures

    实现的功能是给X增加维度,具体的可以看官网或者看看我的这篇文章,里面有实现的原理解析,看一下明白了。

    链接: 代码系列-python实现PolynomialFeatures(多项式)

    我们继续用Python实现:

    def multi_feature(x,n):

    c = np.empty((x.shape[0],0)) #np.empty((3,1))并不会生成一个3行1列的空数组,np.empty((3,0))才会生成3行1列空数组

    for i in range(n+1):

    h=x**i

    c=np.c_[c,h]

    return c

    #先设置n=2

    x_1 = multi_feature(x,2)

    x_1 #输出变化后的x

    model=normal()

    #用新生成的x作为输入

    w = model.fit(x_1,y)

    报错了!!!

    LinAlgError: Singular matrix

    这个错误代表在对numpy的矩阵用np.linalg.inv方法时报错,也就是无法求逆矩阵,难道要屈服用sklearn吗?

    不行!!

    第一时间返回去看我们写的类,破案了!问题很简单,python写的类里面,我们给x添加了偏置,在这个生成的多项式x_1中,本身就有一列1,这样的话就有2列1,变成了一个非满秩矩阵,因此不需要再添加偏置,修改代码如下:

    class normal():

    def __init__(self):

    pass

    def fit(self,x,y):

    #x_1中已经生成了一列1,不需要再加偏置,因此注释掉这2列。

    #m=x.shape[0]

    #X = np.concatenate((np.ones((m,1)),x),axis=1)

    xMat=np.mat(x)

    yMat=yMat =np.mat(y.reshape(-1,1))

    xTx=xMat.T*xMat

    #xTx.I为xTx的逆矩阵

    ws=xTx.I*xMat.T*yMat

    return ws

    model=normal()

    #用新生成的x作为输入

    w = model.fit(x_1,y)

    w

    这次没有问题了。(为了检查参数是否正确,我又马上调用了sklearn来跑了一遍,先透露结论:系数没错,后面上sklearn的结果)

    画图看这次的拟合效果:

    #计算x_1的拟合效果,下面是矩阵乘法

    y_1 = np.dot(x_1,w)

    ax1= plt.subplot()

    ax1.plot(x,y_1,c='r',label='n=2时,拟合效果图')

    ax1.scatter(x,y,c='b',label='真实分布图')

    ax1.legend(prop = {'size':15}) #此参数改变标签字号的大小

    plt.show()

    效果好很多了,设置n=5

    #设置n=5

    x_2 = multi_feature(x,5)

    model=normal()

    #用新生成的x_2作为输入,重新拟合

    w = model.fit(x_2,y)

    #计算x_2的拟合效果,下面是矩阵乘法

    y_2 = np.dot(x_2,w)

    ax1= plt.subplot()

    ax1.plot(x,y_2,c='r',label='n=5时,拟合效果图')

    ax1.scatter(x,y,c='b',label='真实分布图')

    ax1.legend(prop = {'size':15}) #此参数改变标签字号的大小

    plt.show()

    已经很完美了,由于点太少,显得拟合曲线不是那么平滑,多传入一些x值,

    x_test = np.linspace(1,10,100)

    x_3 = multi_feature(x_test,5)

    #生成预测值y_3

    y_3 = np.dot(x_3,w)

    ax1= plt.subplot()

    ax1.plot(x_test,y_3,c='r',label='n=5时,拟合效果图')

    ax1.scatter(x,y,c='b',label='真实分布图')

    ax1.legend(prop = {'size':15}) #此参数改变标签字号的大小

    plt.show()

    sklearn实现,校验系数的结果

    最后附上sklearn检验系数的结果,完全一样的:

    from sklearn.linear_model import LinearRegression

    model = LinearRegression()

    model.fit(x_2, y)

    print('截距为:',model.intercept_,'\n')

    print('系数为:',model.coef_,'\n')

    print(w)

    总结

    1、这篇文章主要告诉我们,做回归模型时,要了解数据,不能上来就调用sklearn里面的线性回归包,要根据数据的分布,选择合适的算法包,有时候还要对X特征进行一些预处理工作。

    2、平时做机器学习还是调包,因为自己写的有很多不足的地方,且很难做到推广,但是,学习的过程中,还是建议多研究一下原理,这样可以走得更远。

    3、大家有什么问题需要交流,我一定知无不言,期待一起进步。

    展开全文
  • 前两天练题的时候要用到多元非线性拟合,但是在网上找到的大多都是一些求问的帖子,真正有用的回答却不多,这里汇总一下与大家分享。 首先导入数据(参数和结果) 确定自己要拟合的函数(自己画个散点图预估一下,...

    Process

    前两天练题的时候要用到多元非线性拟合,但是在网上找到的大多都是一些求问的帖子,真正有用的回答却不多,这里汇总一下与大家分享。

    • 首先导入数据(参数和结果)
    • 确定自己要拟合的函数(自己画个散点图预估一下,或者是使用SPSS的曲线估算,但是没自己画图看的舒服)
    • 确定要拟合的系数的预估值(全部写零也行,但是你得有个大概想法,比如你图像是幂次为负的幂函数,那么你就写个负值,比如-1)
    • 套用nlinfit函数,得出的bate矩阵就是你要拟合的系数矩阵。
    • covB回归系数的协方差
      mse均方误差
      beta参数最优值
      r各点处的拟合残差
      J雅各比矩阵的数值
      ErrorModelInfo错误模型信息

    Code

    clear all;
    a=xlsread("C:\Users\123\Desktop\数据.xlsx","a");%导入表a
    b=xlsread("C:\Users\123\Desktop\数据.xlsx","b");%导入表b
    s=a(:, 6);%y值(结果矩阵)
    myfunc=inline('beta(1).*x(:,1).^(beta(2))+beta(3).*x(:,2).^(beta(4))+beta(5).*x(:,3).^(beta(6))+beta(7).*x(:,4).^(beta(8))+beta(9)','beta','x');%内联函数(beta是函数自带的代表待确定的系数)
    beta0 = [1, -2 ,1, -2 ,1, -2 ,1, -2 ,60];%待定系数的预估值
    [beta,R,J,CovB,MSE,ErrorModelInfo]= nlinfit(b, s, myfunc,beta0);
    beta
    
    展开全文
  • 非线性拟合工具

    热门讨论 2011-12-05 16:56:12
    当前非线性拟合多元拟合的工具较少,这是针对常用的拟合算法,开发的一款数据拟合为主的软件。包括线性拟合的各种算法,非线性拟合的各种算法,以及多元拟合的各种算法。其中提供了很多非线性方程的模型,以满足...
  • 可以用MATLAB或1stOpt进行曲线拟合,我总结了5种方法:MATLAB1、polyfit/polyconf命令2、regress:多元线性回归3、画图窗口的基本拟合工具fig格式的图片可以进行...可选多种拟合算法:1stOpt5、1stOpt进行非线性拟合...
  • 比如z=f(x,y),给出(x,y,z)的多个数据点,然后怎么拟合出f函数,给出源码就更好了</p>
  • 比如数据的探索性分析、统计描述、列联表分析、二维相关、秩相关、偏相关、方差分析、非参数检验、多元回归、生存分析、协方差分析、判别分析、因子分析、聚类分析、非线性回归、Logistic回归等。 数据接口 能够读取...
  • 今天给大家分享的科研教程是多元线性回归、指数拟合非线性曲面拟合。 一、多元线性回归 多元线性回归用于分析多个自变量与一个因变量之间的线性关系。下式为一般多元线性方程。 Y=A+B1X1+B2X2…+BnXn Origin在...
  •   监督学习中,如果预测的变量是离散的,我们称其为分类...如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。对于二维空间线性是一条直线;对于三维空间线性
  • function [fitresult, gof] = createFit(x1, x2, y) [xData, yData, zData] = prepareSurfaceData( x1, x2, y ... % Label axes xlabel x1 ylabel x2 zlabel y grid on 试试上面的函数,不过用你的数据看拟合效果比较差
  • 比如数据的探索性分析、统计描述、列联表分析、二维相关、秩相关、偏相关、方差分析、非参数检验、多元回归、生存分析、协方差分析、判别分析、因子分析、聚类分析、非线性回归、Logistic回归等。 4 数据接口 能够...
  • 也有时候会使用到非线性回归分析,但这种情况相对较少。线性回归分析也可以再细分为2类,简单线性(一元线性)和多元线性,研究X对Y的影响,如果X仅为1个则称作简单线性(一元线性);如果X为多个,此时称作多元线性...
  • 35:协方差分析 36:多元方差分析 37:重复测量方差分析 38:两变量相关分析 39:偏相关分析 40:距离分析 41:线性回归 42:曲线估计 43:非线性回归 44:二logistic回归 45:多元logistic回归 46:有序回归 47:概率单位回归 48...
  • 通过分析测量原理和计算方法,对位移传感器的非线性特性进行了详细说明,进而提出应用曲线拟合的方法进行非线性标定。针对曲线拟合的特点,设计了一种多元自适应卡尔曼预处理算法用于滤除光电噪声干扰;通过非均匀的节点...
  • SPSS学习之旅——课程笔记(三)回归分析一、回归分析与相关分析的异同同:都是研究现象之间存在的相互关联关系的方法。异:①回归分析区别自变量和因变量,相关分析不...二、线性回归的分析过程确定两种或两种以上的...
  • import tensorflow as tf import numpy as np import ...plt.contour(X, Y, train_label.reshape(100,100),8,colors='k') plt.show() #理论值与预测值的均方误差 print(np.mean(np.square(pred-train_label))) 拟合结果
  • 非线性回归 07.有序与无序logistic回归 08.主成分分析与因子分析 09.对应分析1 10.对应分析2 11.多维尺度分析 12.聚类分析 13.判别分析 14.树模型与神经网络 15.信度分析 16.时间序列模型 17.生存分析 部分内容截图...
  • 在一元回归分析中,如果依变量y与自变量X的关系为非线性的,但是又找不到适当的函数曲线来拟合,则可以采用一元多项式回归。后续的实例就是这个例子。 多项式回归的最大优点就是可以通过增加X的高次...
  • 实际应用中有很多非线性关系的变量很迷惑人,让人误用(多元)线性回归,这篇文章对比分析了线性回归和人工神经网络对这种变量的拟合,然后介绍下这种误用带来的后果,同时也会加深我们对人工神经网络的理解。...
  • 多元函数拟合——最小二乘拟合多元函数最小二乘拟合1.1 多元函数线性回归三级目录1.2 多元函数1.3 非线性回归 多元函数最小二乘拟合 1.1 多元函数线性回归 三级目录 1.2 多元函数 1.3 非线性回归 ...
  • Matlab 使用nlinfit 函数进行多元非线性回归,并且绘制曲线拟合的误差区间一、前言二、nlinfit函数使用1、函数语法2、拟合示例:三、误差阴影绘制四、整体源码思考参考博客 一、前言 这个也是最近我接到的一个小项目...
  • 回归拟合自己的总结 20100728 1学三条命令 polyfit(x,y,n)拟合成一元幂函数一元多次 regress(y,x)可以多元 nlinfit(x,y,fun ,beta0) (可用于任何类型的函数任意多元函数应 用范围最主最万能的 ) 2同一个问题 可能这...
  • 来自烟水暖的学习笔记回归分析(Regression analysis) 回归分析... 回归分析的分类:1) 按自变量的个数,可以分为一元回归,多元回归2)按变量相关性的形状(回归线)是否为直线型,可分为线性回归,非线性回归。 ...
  • 图18 非线性拟合数据报表把参数代入函数即可得到拟合函数。这两篇都是利用origin内置的函数进行曲线拟合,虽然Origin in 内置的函数有200多个,然而实际使用时,我们会发现自己的拟合函数并不在内置中,这样就需要...
  • 拓端数据科技 / Welcome to tecdat​tecdat.cn在之前的课堂上,我们已经看到了如何可视化多元回归模型(带有两个连续...通过对数链接从(标准)广义线性模型获得的预测。> reg1=glm(cout~ageconducteur+agevehicu...
  • 图18 非线性拟合数据报表把参数代入函数即可得到拟合函数。这两篇都是利用origin内置的函数进行曲线拟合,虽然Origin in 内置的函数有200多个,然而实际使用时,我们会发现自己的拟合函数并不在内置中,这样就需要...
  • 1.基本概念多项式回归(Polynomial ...在一元回归分析中,如果依变量y与自变量x的关系为非线性的,但是又找不到适当的函数曲线来拟合,则可以采用一元多项式回归。 2.多项式回归的最大优点就是可以通过增加x的高次...

空空如也

空空如也

1 2 3 4 5 ... 17
收藏数 331
精华内容 132
关键字:

多元非线性拟合