精华内容
下载资源
问答
  • 线性回归模型请看上篇文章,本篇文章介绍的是非线性回归模型 线性回归模型链接 在目前的机器学习领域中,最常见的三种任务就是:回归分析、分类分析、聚类分析。那么什么是回归呢?回归分析是一种预测性的建模技术,...

    线性回归模型请看上篇文章,本篇文章介绍的是非线性回归模型
    线性回归模型链接

    在目前的机器学习领域中,最常见的三种任务就是:回归分析、分类分析、聚类分析。那么什么是回归呢?回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。回归分析在机器学习领域应用非常广泛,例如,商品的销量预测问题,交通流量预测问题。下面介绍几种常见的非线性回归模型。

    1、SVR

    众所周知,支持向量机在分类领域应用非常广泛,支持向量机的分类方法可以被推广到解决回归问题,这个就称为支持向量回归。支持向量回归算法生成的模型同样地只依赖训练数据集中的一个子集(和支持向量分类算法类似)。

    #加载SVR模型算法库
    from sklearn.svm import SVR
    #训练集
    X = [[0, 0], [2, 2]]
    y = [0.5, 2.5]
    #创建SVR回归模型的对象
    clf = SVR()
    # 利用训练集训练SVR回归模型
    clf.fit(X, y) 
    """
    SVR(C=1.0, cache_size=200, coef0=0.0, degree=3, epsilon=0.1,
        gamma='auto_deprecated', kernel='rbf', max_iter=-1, shrinking=True,
        tol=0.001, verbose=False)
    """
    clf.predict([[1, 1]])
    

    2、决策树回归

    from sklearn.tree import  DecisionTreeRegressor 
    X = [[0, 0], [2, 2]]
    y = [0.5, 2.5]
    clf = DecisionTreeRegressor()
    clf = clf.fit(X, y)
    clf.predict([[1, 1]])
    

    3、knn回归
    在数据标签是连续变量而不是离散变量的情况下,可以使用KNN回归。分配给查询点的标签是根据其最近邻居标签的平均值计算的。

    X = [[0], [1], [2], [3]]
    y = [0, 0, 1, 1]
    from sklearn.neighbors import KNeighborsRegressor
    neigh = KNeighborsRegressor(n_neighbors=2)
    neigh.fit(X, y) 
    print(neigh.predict([[1.5]]))
    

    4、RandomForest回归

    随机森林回归算法也是一种经典的集成算法之一。

    from sklearn.ensemble import RandomForestRegressor
    from sklearn.datasets import make_regression
    X, y = make_regression(n_features=4, n_informative=2,
                           random_state=0, shuffle=False)
    regr = RandomForestRegressor(max_depth=2, random_state=0,
                                 n_estimators=100)
    regr.fit(X, y)
    print(regr.feature_importances_)
    print(regr.predict([[0, 0, 0, 0]]))
    

    5、XGBoost回归
    XGBoost近些年在学术界取得的成果连连捷报,基本所有的机器学习比赛的冠军方案都使用了XGBoost算法

    import xgboost as xgb
    xgb_model = xgb.XGBRegressor(max_depth = 3,
                                 learning_rate = 0.1,
                                 n_estimators = 100,
                                 objective = 'reg:linear',
                                 n_jobs = -1)
    
    xgb_model.fit(X_train, y_train,
                  eval_set=[(X_train, y_train)], 
                  eval_metric='logloss',
                  verbose=100)
    y_pred = xgb_model.predict(X_test)
    print(mean_squared_error(y_test, y_pred))
    

    6、神经网络MLP回归
    神经网络使用slearn中MLPRegressor类实现了一个多层感知器(MLP),它使用在输出层中没有激活函数的反向传播进行训练,也可以将衡等函数视为激活函数。因此,它使用平方误差作为损失函数,输出是一组连续的值。

    from sklearn.neural_network import MLPRegressor
    mlp=MLPRegressor()
    mlp.fit(X_train,y_train)
    """
    MLPRegressor(activation='relu', alpha=0.0001, batch_size='auto', beta_1=0.9,
           beta_2=0.999, early_stopping=False, epsilon=1e-08,
           hidden_layer_sizes=(100,), learning_rate='constant',
           learning_rate_init=0.001, max_iter=200, momentum=0.9,
           n_iter_no_change=10, nesterovs_momentum=True, power_t=0.5,
           random_state=None, shuffle=True, solver='adam', tol=0.0001,
           validation_fraction=0.1, verbose=False, warm_start=False)
    """
    y_pred = mlp.predict(X_test)
    

    7、LightGBM回归
    LightGBM作为另一个使用基于树的学习算法的梯度增强框架。在算法竞赛也是每逢必用的神器,且要想在竞赛取得好成绩,LightGBM是一个不可或缺的神器。相比于XGBoost,LightGBM有如下优点,训练速度更快,效率更高效;低内存的使用量。

    import lightgbm as lgb
    gbm = lgb.LGBMRegressor(num_leaves=31,
                            learning_rate=0.05,
                            n_estimators=20)
    gbm.fit(X_train, y_train,
            eval_set=[(X_train, y_train)], 
            eval_metric='logloss',
            verbose=100)
    y_pred = gbm.predict(X_test)
    print(mean_squared_error(y_test, y_pred))
    

    8、GBDT回归
    集成算法Boosting的一种,基于决策树的梯度提升树回归算法

    
    # GBDT超参数调优
    params = {
    'n_estimators': 400, 
    'max_depth': 11,
    'learning_rate': 0.06,
     'loss': 'ls',
     'subsample':0.8
     }
    gbdt=GradientBoostingRegressor(**params)
    # 模型训练
    gbdt.fit(X_train, y_train)
    
    展开全文
  • 线性与非线性回归模型检验方法研究,李武选,,在进行回归分析建模时,模型的准确性是极其重要的,不恰当的模型,会歪曲所研究问题的事实真相,误导人们对问题的正确理解。在取
  • 优化源代码全集线性回归非线性回归模型优化源代码全集线性回归非线性回归模型
  • sklearn实现非线性回归模型

    千次阅读 2020-04-29 12:12:23
    sklearn实现非线性回归模型 前言: sklearn实现非线性回归模型的本质是通过线性模型实现非线性模型,如何实现呢?sklearn就是先将非线性模型转换为线性模型,再利用线性模型的算法进行训练模型。 一、线性模型解决非...

    sklearn实现非线性回归模型

    前言: sklearn实现非线性回归模型的本质是通过线性模型实现非线性模型,如何实现呢?sklearn就是先将非线性模型转换为线性模型,再利用线性模型的算法进行训练模型。

    一、线性模型解决非线性模型的思想
    1、样本数据如下

    x y
    1 45000
    2 50000
    3 60000
    4 80000
    5 110000
    6 150000
    7 200000
    8 300000
    9 500000
    10 1000000

    2、假设样本数据符合线性模型 y = a0 + a1x,则可以直接利用sklearn的线性回归模型方法训练该模型

    3、但是假设样本数据符合非线性模型 y = a0x0 + a1x1 + a2x2 + a3x3 ,(其中x0=1)那么我们如何将该非线性模型转为线性模型呢?sklearn的解释思路是从样本数据中的自变量下手的,它首先通过计算将样本数据修改为下表
    x0 x1 x2 x3 y
    [[ 1. 1. 1. 1.]
    [ 1. 2. 4. 8.]
    [ 1. 3. 9. 27.]
    [ 1. 4. 16. 64.]
    [ 1. 5. 25. 125.]
    [ 1. 6. 36. 216.]
    [ 1. 7. 49. 343.]
    [ 1. 8. 64. 512.]
    [ 1. 9. 81. 729.]
    [ 1. 10. 100. 1000.]]
    4、根据上面的样本数据,也就把 y = a0x0 + a1x1 + a2x2 + a3x3 ^非线性回归模型转换为了y = a0x0 + a01x1 + a2x2 + a3x3的线性回归模型了,这样就可以利用sklearn的线性回归模型算法进行训练非线性回归模型了

    二、 具体实现代码如下

    import numpy as np
    import matplotlib.pyplot as plt
    from sklearn.preprocessing import PolynomialFeatures
    from sklearn.linear_model import LinearRegression
    
    # 读取数据
    data = np.genfromtxt('job.csv', delimiter=',')
    x_data = data[1:, 1]
    y_data = data[1:, 2]
    
    # 一维数据通过增加维度转为二维数据
    x_2data = x_data[:, np.newaxis]
    y_2data = data[1:, 2, np.newaxis]
    
    # 训练一元线性模型
    model = LinearRegression()
    model.fit(x_2data, y_2data)
    
    plt.plot(x_2data, y_2data, 'b.')
    plt.plot(x_2data, model.predict(x_2data), 'r')
    
    # 定义多项式回归:其本质是将变量x,根据degree的值转换为相应的多项式(非线性回归),eg: degree=3,则回归模型
    # 变为 y = theta0 + theta1 * x + theta2 * x^2 + theta3 * x^3
    poly_reg = PolynomialFeatures(degree=3)
    # 特征处理
    x_ploy = poly_reg.fit_transform(x_2data)  # 这个方法实质是把非线性的模型转为线性模型进行处理,
    # 处理方法就是把多项式每项的样本数据根据幂次数计算出相应的样本值(详细理解可以参考我的博文:https://blog.csdn.net/qq_34720818/article/details/103349452)
    
    # 训练线性模型(其本质是非线性模型,是由非线性模型转换而来)
    lin_reg_model = LinearRegression()
    lin_reg_model.fit(x_ploy, y_2data)
    
    plt.plot(x_2data, y_2data, 'b.')
    plt.plot(x_2data, lin_reg_model.predict(x_ploy), 'r')
    
    plt.show()
    
    

    三、实现结果
    在这里插入图片描述

    可以很明显的看错曲线比直线的拟合效果好

    四、数据下载
    链接:https://pan.baidu.com/s/1YoUUJkbSGQsyy50m-LQJYw
    提取码:rwek

    展开全文
  • 关于如何使用Matlab构建多元非线性回归模型在数学建模中有许多情况需要用到多远非线性回归
  • 线性回归模型,是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛。其表达形式为y = w'x+e,e为误差服从均值为0的正态分布。线性回归模型是利用称为线性...

    线性就是每个变量的指数都是1,而非线性就是至少有一个变量的指数不是1。


    通过指数来进行判断即可。
    线性回归模型,是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛。其表达形式为y = w'x+e,e为误差服从均值为0的正态分布。线性回归模型是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。这种函数是一个或多个称为回归系数的模型参数的线性组合。只有一个自变量的情况称为简单回归,大于一个自变量情况的叫做多元回归。
    非线性回归,是在掌握大量观察数据的基础上,利用数理统计方法建立因变量与自变量之间的回归关系函数表达式(称回归方程式)。回归分析中,当研究的因果关系只涉及因变量和一个自变量时,叫做一元回归分析;当研究的因果关系涉及因变量和两个或两个以上自变量时,叫做多元回归分析。

    展开全文
  • Matlab优化源代码全集 [线性回归非线性回归模型]
  • 基于MATLAB的多元非线性回归模型.pdf
  • 根据LS 估计理论,对非线性回归模型线性化后参数估计精度存在的问题进行了分析,通过变量变换对线性化模型随机误差的方差进行了修正,建立了新参数估计模型。新参数估计模型满足Gauss-Markov 假定,保持了LS 估计的...
  • 第一章一元线性回归与证券投资回归分析 第二章 一般多元线性回归模型 第三章多元线性回归模型的有偏估计 第四章异方差与自相关广义线性模型 第五章方差分量线性回归模型 第六章虚拟与离散变量...第七章非线性回归模型
  • 对实验获得的离散点进行拟合,采用最小二乘原理、多元非线性回归模型线性化理论计算并确定模型参数,建立半焦分选特性的多元非线性回归模型,模型计算结果与实验数据吻合较好,相对误差均在9%以内。
  • R语言与非线性回归模型

    千次阅读 2019-11-16 12:41:13
    6.7 非线性回归模型 下面列举两个非线性模型的例子: 模型(6.52)和(6.53)都是以非线性的形式包含参数和。这这种意义下,它们都是非线性模型,但它们有本质上的区别。一个可以转化为线性模型,如果对模型...

    6.7 非线性回归模型

    下面列举两个非线性模型的例子:

    image

    模型(6.52)和(6.53)都是以非线性的形式包含参数imageimage。这这种意义下,它们都是非线性模型,但它们有本质上的区别。一个可以转化为线性模型,如果对模型(6.52)两边取对数,得到

    image

    它具有如下线性模型的形式,即参与参数是线性的。类似于模型(6.52)那样,可以通过适当的变换转达化为线性模型的非线性模型称为内在线性的。然而,要想将模型(6.53)转化成关于参数是线性形式是不可能的。这样的模型称为内在非线性的。虽然很多时候可以变换这种模型使它容易拟合,但无论如何变换,它仍然是非线性的。

    image

    6.7.1 多项式回归模型

    1. 多项式回归

    例 6.21 某种合金钢中的主要成分是金属A与B,经过试验和分析,发现这两种金属成分之和x与膨胀系数之间有一定的数量关系,表6.15记录了一组试验数据,试用多项式回归来分析x与y之间的关系。

    image

    解析:先画出数据的散点图,如下图所示。从图中可见,y开始随着x的增加而降低,而当x超过一定值后,y有随x的增加而上升。因而可以假定y与x之间是二次多项式回归模型,并假设各次实验误差是独立分布的,并服从正态分布image

    image

    image

    因此,得到y关于x的二次回归方程:

    image

    展开全文
  • 建立了粒度分析曲线的非线性回归模型,用Gauss―Newton法确定了最优化参数,用汉化的Turbo―Pascal(V5.0)语言完成了数据处理及图形绘制和打印的程序设计。
  • matlab多元参数非线性回归模型代码
  • 非线性回归模型参数估计与非纯非线性回归模型参数估计的对比差异
  • 利用传统曲率理论度量回归模型非线性程度,分析其缺陷,并对几类实例模型进行探讨,进而提出基于局部近似的新度量方法,在一定程度上弥补了传统方法的缺陷;还研究了模型参数基于局部线性近似的最小二乘估计的渐进性质...
  • 一维神经网络 非线性回归模型在一维卷积神经网络中的应用
  • 基于MATLAB的多元非线性回归模型

    热门讨论 2010-05-17 01:01:32
    基于MATLAB的多元非线性回归模型。文章充分利用 MATLAB统计工具箱的优势 ,通过程序的实现 ,对多元非线性回归模型的未知参数的估计方法以及对估 计后的模型预报做出研究 ,并以实例验证了该方法的有效性。
  • 利用Matlab编程计算非线性回归模型,很好的一个参考
  • 基于RBF神经网络的非线性回归模型,黄涛,,RBF神经网络即径向基函数神经网络是一种高效的前馈式神经网络,它具有其他前向网络所不具有的最佳逼近性能和全局最优特性,并且结
  • matlab多元参数非线性回归模型代码高斯回归 高斯回归论文和调查清单 Swiler,L.,Gulian,M.,Frankel,A.,Safta,C.,&Jakeman,J.(2020年)。 约束高斯过程回归调查:方法和实施挑战。 arXiv预印本arXiv:2006....
  • 构建非线性回归模型系列文章知识点示例注意 知识点 np.linsapce(-0.5, 0.5, 200)生成从-0.5到0.5的均匀分布的200个数据点。包含首尾 numpy中花式索引的一个实例——数据升维,即原来是1维的数据列表,经过升维后形成...
  • matlab多元参数非线性回归模型代码NEU 337-2020年Spring(53760) 现代神经科学的程序设计和数据分析 !!! 请在第一类之前安装Python和JupyterLab (请参阅下面的说明)。 如果遇到任何麻烦,请不要踩踏。 首先,在...
  • §7 非线性回归模型

    千次阅读 2013-05-09 12:36:24
    前面讨论的回归分析与逐步回归模型都假定是线性的, 而在自然科学中我们也常会遇到非线性回归模型, 在非线性回归模型中又可分为两种类型:   一种类型是可以通过变量变换化成为线性模型, 然后按线性模型加以解决: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,623
精华内容 1,449
关键字:

非线性回归模型