精华内容
下载资源
问答
  • 非线性拟合工具

    热门讨论 2011-12-05 16:56:12
    当前非线性拟合和多元拟合的工具较少,这是针对常用的拟合算法,开发的一款数据拟合为主的软件。包括线性拟合的各种算法,非线性拟合的各种算法,以及多元拟合的各种算法。其中提供了很非线性方程的模型,以满足...
  • 在实际问题中,变量之间存在大量的非线性关系.文章选取非线性模型的多项式方法来进行变量之间的数据拟合,从而推出单一的高阶多项式拟合方法的缺点,提出采用两个或个三阶多项式方法来弥补缺陷.
  • 在一元回归分析中,如果依变量y与自变量X的关系为非线性的,但是又找不到适当的函数曲线来拟合,则可以采用一元多项式回归。后续的实例就是这个例子。 多项式回归的最大优点就是可以通过增加X的高次...

    多项式回归

    • 多项式回归(Polynomial
      Regression)是研究一个因变量与一个或多个自变量间多项式的回归分析方法。如果自变量只有一个时,称为一元多项式回归;如果自变量有多个时,称为多元多项式回归。
    • 在一元回归分析中,如果依变量y与自变量X的关系为非线性的,但是又找不到适当的函数曲线来拟合,则可以采用一元多项式回归。后续的实例就是这个例子。
    • 多项式回归的最大优点就是可以通过增加X的高次项对实测点进行逼近,直到满意为止。
    • 事实上,多项式回归可以处理相当一类非线性问题,它在回归分析中占有重要的地位,因为任一函数都可以分段用多项式来逼近。
      在上一篇文章中的房价与房屋尺寸实例中,是运用直线来拟合数据输入和输出之间的线性关系。不同于线性回归,多项式回归是使用曲线拟合数据的输入与输出的映射关系。
    import matplotlib.pyplot as plt
    from sklearn import linear_model
    import numpy as np
    from sklearn.preprocessing import PolynomialFeatures
    plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
    datasets_x = []#建立datasets_x和datasets_y用来存储数据中的房屋尺寸和房屋成交价格
    datasets_y = []
    fr = open('data/prices.txt','r')
    lines = fr.readlines()#一次读取所有数据
    #print(lines)
    for line in lines:
        items = line.strip().split(',')#去除逗号
        datasets_x.append(int(items[0]))
        datasets_y.append(int(items[1]))
    length = len(datasets_x)
    datasets_X=np.array(datasets_x).reshape([length,1])#将datasets_x转化为数组,并变为二维,以符合线性回归拟合函数
    datasets_Y=np.array(datasets_y)
    minX=min(datasets_X)
    maxX=max(datasets_X)
    X=np.arange(minX,maxX).reshape([-1,1])
    #degree=2表示建立datasets_X的二次多项式特征x_poly
    poly_reg=PolynomialFeatures(degree=2)
    x_poly = poly_reg.fit_transform(datasets_X)
    #使用线性莫想学习x_poly和datasets_y之间的映射关系
    lin_reg_2 = linear_model.LinearRegression()
    lin_reg_2.fit(x_poly,datasets_Y)
    plt.scatter(datasets_X,datasets_Y,color='red')#scatter函数绘制数据点
    plt.plot(X,lin_reg_2.predict(poly_reg.fit_transform(X)),color='blue')#plot函数用来绘制直线,这里表示绘制回归线
    plt.xlabel("尺寸")
    plt.ylabel("价格")
    plt.show()
    

    在这里的多项式回归实际上是先将变量X处理成多项式特征,然后使用线性模型学习多项式特征的参数,以达到多项式回归的目的。在这里插入图片描述
    可视化结果
    在这里插入图片描述

    展开全文
  • 实际应用中有很多非线性关系的变量很迷惑人,让人误用(多元)线性回归,这篇文章对比分析了线性回归和人工神经网络对这种变量拟合,然后介绍下这种误用带来的后果,同时也会加深我们对人工神经网络的理解。...

    实际应用中有很多非线性关系的变量很迷惑人,让人误用(多元)线性回归,这篇文章对比分析了线性回归和人工神经网络对这种变量的拟合,然后介绍下这种误用带来的后果,同时也会加深我们对人工神经网络的理解。

    一、多元线性回归(MLR)与人工神经网络(ANN)--有模式

    我们用数学上一个人人皆知的例子,矩形面积= 长*宽,假如一个研究人员不知道矩形面积与长和宽的关系,他想以长和宽为输入变量用多元线性回归去拟合矩形面积,然后我们看下结果。

    1、数据介绍

    本文的数据主要用MATLAB来随机产生,这些数据分为三组,即原始数据、测试数据1和测试数据2,如下图:

    1)原始数据为arealengthwide,用来做MLR公式和作为ANN的训练数据, lengthwide的数据范围皆为 1-100。

    2)测试数据1为test_area, test_lengthtest_wide,用来带入上面MLR公式和ANN训练函数,检验效果如何。这里的test_lengthtest_wide的数据范围和上面的一样都在1-100之间。

    3)测试数据1为test_area_2, test_length_2test_wide_2,同样用来检验效果,只是数据在原始数据范围外,即100-200之间。

    4025027-be9c6a7dd51fef3d.png

    2、结果评估

    我们用拟合出来的结果与真实值(即test_areatest_area_2)的mean squared error(MSE)和相关系数R^2来评估拟合效果。

    3、结果

    3.1、得到MLR公式

    这里用Excel的数据分析——回归直接得到变量lengthwide的系数与截距,R^2看起来还不错0.83。然后我们把测试数据1和测试数据2直接带入即可。

    4025027-4eeb51f17c21d8e4.png

    3.2、得到ANN训练函数

    采用前馈神经网络,以lengthwide为输入,area为target进行训练,隐含层(hidden neurons)用5个,MSE相当低,R^2基本接近1,如下图,然后我们生成函数,待会直接输入测试数据1和测试数据2的长和宽即可。

    4025027-0121006a6d047ef6.png
    3.3、测试数据1结果对比

    如下图,看总体趋势都还比较好,但MLR的MSE远远大于ANN的,注意这里的MSE没有进行数据标准化计算,所以我们看到虽然MLR的MSE那么大,但是预测结果是可以的;而ANN的拟合结果很明显更好。

    4025027-0fc86ae13261c024.png
    3.4、测试数据2结果对比

    这里就能看出区别了,虽然MLR的趋势跟真实值差不太多(R^2挺高的),但是误差太大了(MSE要比ANN的拟合结果大3个数量级),相比而言,ANN表现就非常好了,他好像聪明地观察到了面积=长*宽这个规律,因为恰巧我们的输入变量是符合这个规律的,他才有机会学得到,而那个用多元线性回归的研究人员就没那么幸运了。假如我们的输入变量里没有长或者宽会是怎么样呢?还能得到如此好的预测结果吗,看第二部分"线性回归(LR)与ANN--无模式"

    4025027-0326798fa53adc5d.png

    二、线性回归(LR)与ANN--无模式

    我们同样用数学上类似的数据,只不过这次我们用周长和矩形面积,假如一个研究人员不知道矩形面积与周长关系,他观察周长越大面积就越大,于是以线性拟合去找他们之间的关系,然后我们看下结果。

    1、数据介绍

    数据分为三组,即原始数据、测试数据1和测试数据2,如下图:

    1)原始数据为areaperimeter,用来做LR公式和作为ANN的训练数据, perimeter的数据范围为 4-400(因为是用上面的数据范围皆为 1-100的lengthwide产生的)。

    2)测试数据1为test_areatest_perimeter,用来带入上面LR公式和ANN训练函数,检验效果如何。这里的test_perimeter的数据范围和上面的一样在4-400之间。

    3)测试数据1为test_area_2test_perimeter_2,同样用来检验效果,只是数据在原始数据范围外,即400-800之间(用上面的test_length_2test_wide_2产生的)。

    4025027-d293eaa9af215fa3.png

    2、结果评估

    同样用MSE和R^2

    3、结果

    3.1、得到线性拟合公式

    如图,看起来也还不错


    4025027-a58e52fdc1db1db7.png
    3.2、得到ANN训练函数

    采用前馈神经网络,以perimeter为输入,area为target进行训练,隐含层(hidden neurons)用5个,训练结果如图,MSE这次挺高了,注意MSE是平方了的(所以标准的ANN做法是先把数据标准化),看下面的残差直方图更直观一些,area的平均值才2400左右,残差最高到了1000多,R^2还不错,然后我们生成函数,待会直接输入测试数据1和测试数据2的周长即可。

    4025027-30fb89f82999be8f.png
    3.3、测试数据1结果对比

    这个因为测试数据与原始数据的输入在一个范围内,所以看起来都还可以,趋势基本完全吻合,看MSE和R^2,似乎ANN略胜一筹。

    4025027-785865e4faa897f4.png
    3.4、测试数据2结果对比

    如图,线性回归(LR)和ANN拟合的都不太好,MSE基本在同一个水平,ANN的略低一些,但是LR的趋势似乎跟真实值更吻合一些。
    在这里ANN好像学不到我们用随机数得到的周长跟面积的关系,因为周长跟面积本来就没有什么模式可言,对于没有模式的东西,ANN似乎无能为力,但是他能在力所能及的范围内给你预测,就像上面的测试数据1的结果还是可以的,因为训练的数据与测试的数据范围是一致的,而在数据范围一致的情况下,用LR效果也看似很好。然而我们不要忘了,周长与面积是并没有线性关系的

    4025027-dd1809130fe80a5b.png

    三、MLR与ANN--混合输入

    紧接着,如果我们不知道面积与长、宽和周长这三者的关系,把这三个变量都输进去,然后再用MLR和ANN的方法,当然因为周长 = (长+宽)*2,所以MLR的方法肯定有一个参数为0。测试数据直接选用原始数据外的,因为我们知道在原始数据范围内的拟合结果肯定都还可以接受,直接看结果,如图,ANN表现良好,MLR还是不行。

    4025027-ceac8f9c11dd19e2.png

    同样我们只输入长和周长这两个变量呢,结果是一致的,ANN拟合很好,MLR很差(MLR结果跟上面的一模一样的,因为长、宽和周长三个变量间存在线性关系的)。

    4025027-a4cc3afb53e8d7fe.png

    以上分析我们可以看出ANN拟合的优越性,如果不知道目标变量与哪些变量可能存在关系以让ANN学习,不如尝试多输入一些!当然尽管存在一些局限,多元线性回归也是一种很有用的技术

    展开全文
  • 权重weight的设置:在生成初始参数时,随机变量(normal distribution)会比全部为0要好很,所以我们这里的weights为一个in_size行, out_size列的随机变量矩阵。 Weights = tf.Variable(tf.random_normal([in_size, ...

    定义一个自动增加网络层数的函数
    权重weight的设置:在生成初始参数时,随机变量(normal distribution)会比全部为0要好很多,所以我们这里的weights为一个in_size行, out_size列的随机变量矩阵。

    Weights = tf.Variable(tf.random_normal([in_size, out_size]))
    

    biases:的推荐值不为0,所以我们这里是在0向量的基础上又加了0.1。

    biases = tf.Variable(tf.zeros([1, out_size]) + 0.1)
    
    #定义一个自动增加网络层数的函数
    # inputs:输入值、
    # in_size:输入神经元个数
    # out_size:输出神经元个数
    # activation_function:激励函数,默认的激励函数是None。
    def add_layer(inputs, in_size, out_size, activation_function=None):
        Weights = tf.Variable(tf.random_normal([in_size, out_size]))#一个in_size行, out_size列的随机变量矩阵。
        biases = tf.Variable(tf.zeros([1, out_size])+0.1)
        Wx_plus_b = tf.matmul(inputs, Weights) + biases
        if activation_function is None:
            outputs = Wx_plus_b
        else:
            outputs = activation_function(Wx_plus_b)
        return outputs
    

    搭建网络

    # Author Qian Chenglong
    
    import tensorflow as tf
    import  numpy as np
    #定义一个自动增加网络层数的函数
    # inputs:输入值、
    # in_size:输入神经元个数
    # out_size:输出神经元个数
    # activation_function:激励函数,默认的激励函数是None。
    def add_layer(inputs, in_size, out_size, activation_function=None):
        Weights = tf.Variable(tf.random_normal([in_size, out_size]))#一个in_size行, out_size列的随机变量矩阵。
        biases = tf.Variable(tf.zeros([1, out_size])+0.1)
        Wx_plus_b = tf.matmul(inputs, Weights) + biases
        if activation_function is None:
            outputs = Wx_plus_b
        else:
            outputs = activation_function(Wx_plus_b)
        return outputs
    #生成数据
    x_data = np.linspace(-1,1,300, dtype=np.float32)[:, np.newaxis]
    noise = np.random.normal(0, 0.02, x_data.shape).astype(np.float32)
    y_data = np.square(x_data) - 0.5 + noise
    
    xs = tf.placeholder(tf.float32, [None, 1])
    ys = tf.placeholder(tf.float32, [None, 1])
    
    l1 = add_layer(xs, 1, 10, activation_function=tf.nn.tanh) #隐藏层
    prediction=add_layer(l1,10,1, activation_function=tf.nn.tanh) #输出层
    loss=tf.reduce_mean(tf.square(prediction-ys)) #损失函数
    
    
    train_step =tf.train.GradientDescentOptimizer(0.1).minimize(loss)
    
    with tf.Session() as sess:
        # 变量初始化
        sess.run(tf.global_variables_initializer())
        for i in range(2000):
            sess.run(train_step, feed_dict={xs: x_data, ys: y_data})
            if i % 50 == 0:
                # to see the step improvement
                print(sess.run(loss, feed_dict={xs: x_data, ys: y_data}))
    
    
    
    展开全文
  • 今天给大家分享的科研教程是多元线性回归、指数拟合非线性曲面拟合。 一、多元线性回归 多元线性回归用于分析个自变量与一个因变量之间的线性关系。下式为一般多元线性方程。 Y=A+B1X1+B2X2…+BnXn Origin在...

    今天给大家分享的科研教程是多元线性回归、指数拟合和非线性曲面拟合

     一、多元线性回归 

    多元线性回归用于分析多个自变量与一个因变量之间的线性关系。下式为一般多元线性方程。

    Y=A+B1X1+B2X2…+BnXn 

    Origin在进行多元线性回归时,需将工作表中一列设置为因变量(Y),将其他的设置为自变量(X1,X2,X3,…,Xn)。

    实例演示:

    (1)导入要拟合的数据集,如图1所示。

    下载.jpeg

    图1 原始数据

    (2)选择执行菜单命令Analysis→Fiting→Multiple linear regression,进行多元线性回归,系统会弹出Multiple Regression窗口,如图2所示。

     

    文章剩余内容<<<<<

     

    展开全文
  • 1.基本概念多项式回归(Polynomial ...在一元回归分析中,如果依变量y与自变量x的关系为非线性的,但是又找不到适当的函数曲线来拟合,则可以采用一元多项式回归。 2.多项式回归的最大优点就是可以通过增加x的高次...
  • nlinfit非线性回归拟合

    2017-02-15 19:59:00
    % % 使用指定函数对下述两变量进行曲线拟合 % % y=a+k1*exp(m*t)+k2*exp(-m*t); % % 离散点: t=[0,4,8,40], % % y=[20.09,64.52,85.83,126....% % 用非线性回归nlinfit,如果数据点些,效果会更好。 脚本: clc;...
  • 技术背景 在前面的几篇博客中,...这里我们在线性拟合的基础上,再介绍一下MindSpore中使用线性神经网络来拟合多变量非线性函数的解决方案。 环境配置 在按照这篇博客中的方法进行安装和配置之后,可以在本地的dock...
  • python线性拟合curve_fit

    千次阅读 2019-12-27 16:36:09
    曲线拟合转化为线性拟合     非线性回归的情况太过复杂,在...    一元非线性回归是指两个变量-----一个自变量,一个因变量之间呈现非线性关系,如双曲线、二次曲线、三()次曲线、幂曲线、指数曲线、对数...
  • 非线性回归问题(单变量或多变量)可以使用图形用户界面 (GUI) 轻松提出,该界面使用以下求解器之一解决问题: - nlinfit:仅单变量问题。 - lsqnonlin:可以处理多变量问题(多个因拟合变量,ydata为矩阵)。 - ...
  • (初学者--我)最近正在研究matlab最小二乘法非线性拟合问题,昨天在论坛里求教,但没有人给予解答。只好自己查找相关文献,觉得其中最有用的一篇论文《最小二乘法原理及其MATLAB实现》(见附件),该文可读性强,...
  •   在统计学中, 非线性回归是回归分析的一种形式,其中观测数据由函数建模,该函数是模型参数的非线性组合并且取决于一个或个独立变量。 通过逐次逼近的方法拟合数据。   在非线性回归中,形式的统计模型 , f...
  • 接着上一章: 1、学习率: 学习率越大,代价函数在每次迭代后不一定都会减小,因为可能越过最...现在来看看曲线,非线性函数,例如:二次函数,三次函数的拟合。 假如变量有:x1,x2。根据上一章,h=k0+k1x1+k...
  • 对于一个监督学习模型来说,过小的特征集合使得模型过于简单,过大的特征集合使得模型过于复杂。 对于特征集过小的情况,称之为欠拟合(underfitting); 对于特征集过大的情况,称之为过拟合...2) 参数学习算
  • LR,感知机均用了非线性函数,sigmoid,sign,但是线性分类器,因为他们的决策边界都只能是线性的,他们只能够处理线性可分的问题,无法处理非线性问题。 神经网络是个感知机组合,一个自变量X被个W影响。 激活...
  • 由于电-热互联综合能源系统中存在非线性问题导致线性化误差增大,采用多点线性的方法来克服这一难题。并且所提PPF方法进一步考虑了电-热负荷之间的相关性。最后,采用Cornish-Fisher级数展开拟合状态变量概率分布,...
  • 【译文】R语言非线性回归入门

    万次阅读 2016-02-27 13:43:02
    有时,线性模型能很好地拟合数据,但在某些(很)情形下,变量间的关系未必是线性的。这时,一般有三类方法解决这个问题: (1) 通过变换数据使得其关系线性化, (2) 用多项式或者比较复杂的样条来拟合数据, (3) 用...
  • 神经网络的非线性到底体现在哪里?结合感知机为什么是线性模型思考了一下。 即使自我感觉已经把神经网络的结构搞的很透彻了,但是时不时得问问自己还是可以发现新的问题。 线性模型和非线性模型区别 线性模型...
  • 多变量模型(即具有多个响应变量的模型)也可以拟合。 先前的规范是灵活的,并且明确鼓励用户使用实际上反映其信念的先前发行版。 可以轻松评估模型拟合度,并将其与后验预测检查,交叉验证和贝叶斯因素进行比较。 ...
  • 在一元回归分析中,如果自变量x和因变量y之间的关系是非线性的,在找不到合适的函数曲线来拟合的情况下,可以采用一元多项式回归。如果自变量不止一个,则采用多元多项式回归。 多项式回归可以处理相当一类非线性...
  • 变量调整受限三次样条回归 (C-RCS) 代码对应如下论文(使用此代码请注明) 霍元凯,凯瑟琳·阿布德,哈科姆·康,劳里·E·切特,贝内特·A·兰德曼,“通过跨变量多部位MRI从协变量调整的受限三次样条回归映射...
  • 当涉及的特征变量时,线性假设表现出它的弊端。以逻辑回归为例,特征空间迅速膨胀,运算量过大、即使仅考虑2阶式子也过于复杂(仅考虑二次项也是n*(n+1)/2个特征)、同时容易过拟合。因此,我们引入神经网络。 ...
  • 曲线拟合

    千次阅读 2012-12-06 10:04:11
    实际工作中,变量间未必都有线性关系,如服药后血药浓度与时间的关系;疾病疗效与疗程长短的关系;毒物剂量与致死率的关系等常呈曲线关系。...对于某些非线性的资料可以通过简单的变量变换使之直线
  • PLSR非常适合连续变量,最大程度地提高了因变量线性组合与协变量线性组合之间的协方差,而SCGLR适用于非高斯结果和连续协变量。 SCGLR是一种基于模型的方法,它通过捕获折衷来扩展PLS( ),工具变量的PCA...
  • 社会经济系统是受多因素...以关联度值作为权系数进行归一化得到其行为序列后,建立相应的多变量灰色模型进行预测,可以较好的解决灰色指标选择的问题,同时模型还具有较高的精度和拟合优度,可以得到较好的预测结果。
  • 它允许您对个独立(多于一个 x)变量执行拟合。 如果测量误差未知,则执行非线性最小二乘拟合(卡方等于 1)。 要开始使用 FitChiTool,请运行包含的 HTML 文档中的教程(或运行 FitChiToolExample)。
  • 非线性回归:函数就不是简单的都是一次项,引入了高阶项使函数更能完美拟合得到准确率更高的预测值 首先引入一个学生的身高体重数据集来回顾昨天的一元线性回归 训练集 序号 身高(m) 体重(kg) 1 0.86 12 2...
  • 当出现变量之间范围相差较大时,可以将其特征缩放标准化后,使梯度...这里给出以三角多项式为特征和以上面的X的几次方为特征进行非线性拟合的matlab程序 clear n=50;N=1000;x=linspace(-3,3,n)'; X=linspace(-3,3,N...

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 265
精华内容 106
关键字:

多变量非线性拟合