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

原文链接:https://blog.csdn.net/qq_34720818/article/details/105836471

python非线性回归分析_sklearn实现非线性回归模型相关推荐

  1. python sklearn工具包_Sklearn工具包及模型评估

    一.Sklearn工具包介绍 scikit-learn,又写作sklearn,是一个开源的基于python语言的机器学习工具包.它通过NumPy, SciPy和Matplotlib等python数值计 ...

  2. matlab 进行非线性回归,5.利用Matlab编程进行非线性回归分析.doc

    5.利用Matlab编程进行非线性回归分析.doc §5. 利用Matlab编程计算非线性回归模型 --以Logistic曲线为例 1.原始数据 下表给出了某地区1971-2000年的人口数据(表1) ...

  3. 非线性回归模型的原理及评估——解决行星轨道的拟合问题

    非线性回归模型--行星轨道 概述 回归统计 普通和加权最小二乘法 LogisticLogisticLogistic回归 对数几率分布公式 拟合一个行星轨道 问题一 思路及解答 最小二乘法 问题二 解答 ...

  4. c++ 三次多项式拟合_非线性回归模型(一)--多项式回归

    在许多实际问题分析中,回归分析的应用十分广泛,它是处理变量之间相关关系最常用的一种统计方法.回归分析可分为线性回归和非线性回归. 线性回归分析相信大家都已经非常熟悉了,它主要分析有线性回归趋势的两个变 ...

  5. 非线性回归分析及其Matlab实现

    回归分析简介 回归分析(regression analysis)是确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法. 如果只有一个自变量,则称之为一元回归分析:如果具有多个自变量,则称之为 ...

  6. 第12章 Stata非线性回归分析

    目录 12.1非参数回归分析 案例延伸 延伸1:设定散点图被分成垂直等宽波段的数量 延伸2:设定修匀的波段宽度 12.2转换变量回归分析 12.3非线性回归 案例延伸 延伸1:设定非线性回归模型中被估 ...

  7. 1-2 用Python编写【房价预测】模型----paddle

    课程>我的课程>百度架构师手把手教深度学习>1-2 用Python编写[房价预测]模型> 1-2 用Python编写[房价预测]模型 paddle初级教程第一章 第二节 王然( ...

  8. 非线性回归模型(part2)--支持向量机

    学习笔记,仅供参考,有错必纠 PS : 本BLOG采用中英混合模式 非线性回归模型 支持向量机 SVMs are a class of powerful, highly flexible modelin ...

  9. 【Python数据分析】实践编写篇2:用Python进行回归分析与相关分析

    目录 一.前言 1.1 回归分析 1.2 相关分析 二.代码的编写 2.1 前期准备 2.2 编写代码 2.2.1 相关分析 2.2.2 一元线性回归分析 2.2.3 多元线性回归分析 2.2.4 广 ...

最新文章

  1. 买电脑怎么看配置_电脑配置怎么选?
  2. 怎么用matlab建立双机系统,基于MATLAB的双机通信的实现
  3. 有没有将深度学习融入机器人领域的尝试?有哪些难点?
  4. 解析三层架构(1)---为什么要分层?
  5. 论文浅尝 - AAAI2020 | 从异质外部知识库中进行基于图的推理实现常识知识问答...
  6. 如何评价个人在软件开发团队中的绩效
  7. ajax实现两个aspx跳转,请问ajax执行成功后可以跳转到另一个页面吗?
  8. PCL—低层次视觉—点云滤波(基于点云频率)
  9. VS2015 Cordova Ionic移动开发(一)
  10. The Semantics of Constructors(拷贝构造函数之编译背后的行为)
  11. 极路由大部分机型官方固件
  12. C# 调用mschart控件
  13. 第六届全国大学生GIS应用技能大赛开发题答案(非官方)
  14. 案例:如何评价代码走查的效果?
  15. 【ADS使用:PA的大信号仿真的基本设置】
  16. c#写的屏保,好看,不影响任何操作。
  17. 最近发现一款超牛的记单词软件,分享一下
  18. 星际争霸、魔兽争霸3、红色警戒之完全对比
  19. 第九十七章 SQL函数 MONTH
  20. 【论文阅读】强化学习-Other Directions for Combining Policy-Learning and Q-Learning专题4篇

热门文章

  1. 以太经典(ETC)逆势上涨,将逆袭反超以太坊(ETH)?
  2. runloop源代码
  3. 关于linux 内存碎片指数
  4. springboot(二):web综合开发
  5. Oracle锁与数据库性能
  6. Ceryx —— 基于 OpenResty 的动态反向代理
  7. oracle goldengate技术架构-简单试验(全)
  8. shell批量创建和删除10个系统帐号密码(密码为随机10位字符串)
  9. 安装docker-compose for linux
  10. Android学习-- 基于位置的服务 LBS(基于百度地图Android SDK)--定位SDK