1 一元线性回归

线性回归是一种简单的模型,但受到广泛应用,比如预测商品价格,成本评估等,都可以用一元线性模型。y = f(x) 叫做一元函数,回归意思就是根据已知数据复原某些值,线性回归(regression)就是用线性的模型做回归复原。

基本思想:已知一批(x, y)来复原另外未知的值,例如(1,1),(2,2),(3,3),那么(4,?),大家很容易知道(4,4),这就是一元线性回归求解问题

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. from matplotlib.font_manager import FontProperties
  4. from sklearn.linear_model import LinearRegression
  5.  
  6. x = [[1], [2],[3], [4], [5], [6]]
  7. y = [[1], [2.1], [2.9], [4.2], [5.1], [5.8]]
  8. model = LinearRegression()
  9. model.fit(x, y)
  10.  
  11. predicted = model.predict([13])[0]
  12. x2 = [[0], [2.5],[5.3],[7.6],[9.1]]
  13. y2 = model.predict(x2)
  14. print model.score(x2, y2)
  15. print predicted
  16.  
  17. fonr = FontProperties()
  18. plt.figure()
  19. plt.title("linearRegression")
  20. plt.xlabel('x')
  21. plt.ylabel('y')
  22. plt.axis([0, 10, 0, 10])
  23. plt.grid(True)
  24. plt.pause(0.4)
  25. plt.plot(x , y, 'k.')
  26. plt.plot(x2 , y2, 'g.')
  27. plt.show()
  28.  
  29. print np.var(x2, ddof = 0)
  30. print model.score(x2, y2)

2 多元线性回归

假设方程为:,求解系数,因为不一定是方阵,所以不能直接求,所以我们对方程两边同乘以,则,由于是方阵,所以两边同时乘以的逆,就可以得到:。

设计二元一次方程:y=1+2x1+3x2

取样本为(1,1,1),(1,1,2),(1,2,1),计算得y=(6,9,8)

注意:这里面常数项1相当于1*x0,只不过这里的x0永远取1

X = [[1,1,1],[1,1,2],[1,2,1]]

y = [[6],[9],[8]]

  1. from numpy.linalg import inv
  2. from numpy import dot, transpose
  3. from numpy.linalg import lstsq
  4.  
  5. x = [[1,1,1], [1,1,2], [1,2,1]]
  6. y = [[6], [9], [8]]
  7. print dot(inv(dot(transpose(x),x)),dot(transpose(x), y))
  8. ##===最小二乘法=====================
  9. print lstsq(x, y)[0]
  10.  
  11. from sklearn.linear_model import LinearRegression
  12.  
  13. x = [[1,1,1], [1,1,2], [1,2,1]]
  14. y = [[6], [9], [8]]
  15.  
  16. model = LinearRegression()
  17. model.fit(x, y)
  18. x2 = [[1,3,5]]
  19. y2 = model.predict(x2)
  20. print y2

3 .采用多项式回归

  1. import sys
  2. reload(sys)
  3. sys.setdefaultencoding('utf-8')
  4.  
  5. import matplotlib.pyplot as plt
  6. import numpy as np
  7. from sklearn.linear_model import LinearRegression#导入线性回归模型
  8. from sklearn.preprocessing import PolynomialFeatures# 导入多项式回归模型
  9.  
  10. plt.figure()
  11. plt.title('single variable')
  12. plt.xlabel('x')
  13. plt.ylabel('y')
  14. plt.axis([30, 400, 100, 400])
  15. plt.grid(True)
  16.  
  17. x = [[50], [100], [150], [200], [250], [300]]
  18. y = [[150], [200], [250], [280], [310], [330]]
  19. x_test = [[250], [300]]
  20. y_test = [[310], [330]]
  21. plt.plot(x, y, 'g.',markersize =20)
  22.  
  23. model = LinearRegression()
  24. x2 = [[30], [400]]
  25. model.fit(x, y)
  26. y2 = model.predict(x2)
  27. plt.plot(x2, y2,label = '$y = ax + c$')
  28. plt.legend()

  29. xx = np.linspace(30, 400, 100)
  30. quadratic_featurizer = PolynomialFeatures(degree = 2)#实例化一个二次多项式
  31. x_train_quadratic = quadratic_featurizer.fit_transform(x)#用二次多项式多样本x做变换
  32. xx_quadratic = quadratic_featurizer.transform(xx.reshape(xx.shape[0], 1))# 把训练好X值的多项式特征实例应用到一系列点上,形成矩阵
  33.  
  34. regressor_quadratic = LinearRegression()
  35. regressor_quadratic.fit(x_train_quadratic, y)
  36. plt.plot(xx, regressor_quadratic.predict(xx_quadratic),label="$y = ax^2 + bx + c$")
    plt.legend()
  37.  
  38. cubic_featurizer = PolynomialFeatures(degree = 3)
  39. x_train_cubic = cubic_featurizer.fit_transform(x)
  40. xx_cubie = cubic_featurizer.transform(xx.reshape(xx.shape[0], 1))
  41.  
  42. regressor_cubic = LinearRegression()
  43. regressor_cubic.fit(x_train_cubic, y)
  44. plt.plot(xx, regressor_cubic.predict(xx_cubie),label="$y = a_1x^3 + a_2x^2 + a_3x +c $")
  45. plt.legend()
  46.  
  47. print '一元线性回归 r-squared', model.score(x_test, y_test)
  48. x_test_quadratic = quadratic_featurizer.transform(x_test)
  49. print '二次性回归 r-squared', regressor_quadratic.score(x_test_quadratic, y_test)
  50. x_test_cubic = cubic_featurizer.transform(x_test)
  51. print '三次线性回归 r-squared', regressor_cubic.score(x_test_cubic, y_test)
  52. plt.show()

python 做回归的更多相关文章

  1. 利用Caffe做回归(regression)

    Caffe应该是目前深度学习领域应用最广泛的几大框架之一了,尤其是视觉领域.绝大多数用Caffe的人,应该用的都是基于分类的网络,但有的时候也许会有基于回归的视觉应用的需要,查了一下Caffe官网,还 ...

  2. python做量化交易干货分享

    http://www.newsmth.NET/nForum/#!article/Python/128763 最近程序化交易很热,量化也是我很感兴趣的一块. 国内量化交易的平台有几家,我个人比较喜欢用的 ...

  3. 你用 Python 做过什么有趣的数据挖掘项目?

    有网友在知乎提问:「你用 Python 做过什么有趣的数据挖掘项目?」 我最近刚开始学习 Python, numpy, scipy 等, 想做一些数据方面的项目,但是之前又没有这方面的经验.所以想知道 ...

  4. 使用python做科学计算

    这里总结一个guide,主要针对刚开始做数据挖掘和数据分析的同学 说道统计分析工具你一定想到像excel,spss,sas,matlab以及R语言.R语言是这里面比较火的,它的强项是强大的绘图功能以及 ...

  5. [翻译]用神经网络做回归(Using Neural Networks With Regression)

    本文英文原文出自这里, 这个博客里面的内容是Java开源, 分布式深度学习项目deeplearning4j的介绍学习文档. 简介: 一般来说, 神经网络常被用来做无监督学习, 分类, 以及回归. 也就 ...

  6. 12岁的少年教你用Python做小游戏

    首页 资讯 文章 频道 资源 小组 相亲 登录 注册       首页 最新文章 经典回顾 开发 设计 IT技术 职场 业界 极客 创业 访谈 在国外 - 导航条 - 首页 最新文章 经典回顾 开发 ...

  7. [原创博文] 用Python做统计分析 (Scipy.stats的文档)

    [转自] 用Python做统计分析 (Scipy.stats的文档) 对scipy.stats的详细介绍: 这个文档说了以下内容,对python如何做统计分析感兴趣的人可以看看,毕竟Python的库也 ...

  8. 这几天有django和python做了一个多用户博客系统(可选择模板)

    这几天有django和python做了一个多用户博客系统(可选择模板) 没完成,先分享下 断断续续2周时间吧,用django做了一个多用户博客系统,现在还没有做完,做分享下,以后等完善了再慢慢说 做的 ...

  9. 用python做中文自然语言预处理

    这篇博客根据中文自然语言预处理的步骤分成几个板块.以做LDA实验为例,在处理数据之前,会写一个类似于实验报告的东西,用来指导做实验,OK,举例: 一,实验数据预处理(python,结巴分词)1.对于爬 ...

随机推荐

  1. TCP接收窗口为什么变大了?

    今天用wireshark抓取TCP连接时的报文发现客户端的Win变大了,这里是使用了Window Scale来扩张TCP接收窗口,使得接收窗口可以大于65535字节. 首先1号包是TCP第一次握手连接 ...

  2. VMware与Device/Credential Guard不兼容问题

    启动虚拟机vmware突然报不兼容错误 解决方法: 1首先打开控制面板>程序>启动或关闭Windows功能, 取消Hyper-v的勾选 2.在往下划,关闭Windows沙盒的勾选沙盒和虚拟 ...

  3. D - Number of Multisets 题解(思维dp)

    题目链接 题目大意 给你一个数k和n,表示用n个\(1/2^i(i=0,1,2.....)\)组成k有多少种方案数 题目思路 这个dp实属巧妙 设\(dp[i][j]表示i个数构成j\) 这i个数可以 ...

  4. MySQL数据更新

    MySQL数据更新: 导读: 该练习是本人课程学习进行整理的,若有不对,欢迎指出! 该练习没有配套的sql文件,如果需要可以看之前的文章有student表等(MySQL查询练习); 这是最后一部分练习 ...

  5. kafka入门之broker--通信协议

    kafka的通讯协议是基于tcp之上的二进制协议,所有类型的请求和响应都是结构化的,由不同的初始类型构成.kafka使用这组协议完成各个功能的实现. 单个kafka client通常需要同时连接多个b ...

  6. Asp.NetCore之AutoMapper基础篇

    应用场景 现在由于前后端技术的分离,后端程序员在使用ORM框架开发后台API接口的时候,往往会将数据库的"数据模型"直接提供给前端.而大多数时候,可能这些数据并不能够满足前端展示的 ...

  7. 从docker介绍及其简介

    一.引言 1.我本地代码运行没问题啊,但是别人机器运行不了,从而导致环境不一致的问题 2.那个兄弟又写死循环了,怎么这么卡,在多用户的操作系统下,会相互影响. 天猫双十一的情况下,用户量暴涨,从而导致 ...

  8. js预解析练习

    分析下面两段代码 console.log(num)//undefined var num = 10 f()//可以执行 //f2()不可以执行 console.log(f)//function con ...

  9. 在Python中使用moviepy进行音视频剪辑混音合成时输出文件无声音问题

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 在使用moviepy进行音视频剪辑时发现输出成功但 ...

  10. PyQt(Python+Qt)学习随笔:布局控件layout的layoutSizeConstraint属性

    在Qt Designer中布局控件有4个,分别是Vertical Layout(垂直布局).Horizontal Layout(水平布局).Grid Layout(网格布局).Form Layout( ...