1 一元线性回归

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

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

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
from sklearn.linear_model import LinearRegression x = [[1], [2],[3], [4], [5], [6]]
y = [[1], [2.1], [2.9], [4.2], [5.1], [5.8]]
model = LinearRegression()
model.fit(x, y) predicted = model.predict([13])[0]
x2 = [[0], [2.5],[5.3],[7.6],[9.1]]
y2 = model.predict(x2)
print model.score(x2, y2)
print predicted fonr = FontProperties()
plt.figure()
plt.title("linearRegression")
plt.xlabel('x')
plt.ylabel('y')
plt.axis([0, 10, 0, 10])
plt.grid(True)
plt.pause(0.4)
plt.plot(x , y, 'k.')
plt.plot(x2 , y2, 'g.')
plt.show() print np.var(x2, ddof = 0)
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]]

from numpy.linalg import inv
from numpy import dot, transpose
from numpy.linalg import lstsq x = [[1,1,1], [1,1,2], [1,2,1]]
y = [[6], [9], [8]]
print dot(inv(dot(transpose(x),x)),dot(transpose(x), y))
##===最小二乘法=====================
print lstsq(x, y)[0] from sklearn.linear_model import LinearRegression x = [[1,1,1], [1,1,2], [1,2,1]]
y = [[6], [9], [8]] model = LinearRegression()
model.fit(x, y)
x2 = [[1,3,5]]
y2 = model.predict(x2)
print y2

3 .采用多项式回归

import sys
reload(sys)
sys.setdefaultencoding('utf-8') import matplotlib.pyplot as plt
import numpy as np
from sklearn.linear_model import LinearRegression#导入线性回归模型
from sklearn.preprocessing import PolynomialFeatures# 导入多项式回归模型 plt.figure()
plt.title('single variable')
plt.xlabel('x')
plt.ylabel('y')
plt.axis([30, 400, 100, 400])
plt.grid(True) x = [[50], [100], [150], [200], [250], [300]]
y = [[150], [200], [250], [280], [310], [330]]
x_test = [[250], [300]]
y_test = [[310], [330]]
plt.plot(x, y, 'g.',markersize =20) model = LinearRegression()
x2 = [[30], [400]]
model.fit(x, y)
y2 = model.predict(x2)
plt.plot(x2, y2,label = '$y = ax + c$')
plt.legend()

xx = np.linspace(30, 400, 100)
quadratic_featurizer = PolynomialFeatures(degree = 2)#实例化一个二次多项式
x_train_quadratic = quadratic_featurizer.fit_transform(x)#用二次多项式多样本x做变换
xx_quadratic = quadratic_featurizer.transform(xx.reshape(xx.shape[0], 1))# 把训练好X值的多项式特征实例应用到一系列点上,形成矩阵 regressor_quadratic = LinearRegression()
regressor_quadratic.fit(x_train_quadratic, y)
plt.plot(xx, regressor_quadratic.predict(xx_quadratic),label="$y = ax^2 + bx + c$")
plt.legend() cubic_featurizer = PolynomialFeatures(degree = 3)
x_train_cubic = cubic_featurizer.fit_transform(x)
xx_cubie = cubic_featurizer.transform(xx.reshape(xx.shape[0], 1)) regressor_cubic = LinearRegression()
regressor_cubic.fit(x_train_cubic, y)
plt.plot(xx, regressor_cubic.predict(xx_cubie),label="$y = a_1x^3 + a_2x^2 + a_3x +c $")
plt.legend() print '一元线性回归 r-squared', model.score(x_test, y_test)
x_test_quadratic = quadratic_featurizer.transform(x_test)
print '二次性回归 r-squared', regressor_quadratic.score(x_test_quadratic, y_test)
x_test_cubic = cubic_featurizer.transform(x_test)
print '三次线性回归 r-squared', regressor_cubic.score(x_test_cubic, y_test)
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. Spring5.0源码学习系列之Spring AOP简述

    前言介绍 附录:Spring源码学习专栏 在前面章节的学习中,我们对Spring框架的IOC实现源码有了一定的了解,接着本文继续学习Springframework一个核心的技术点AOP技术. 在学习S ...

  2. 一万三千字的HashMap面试必问知识点详解

    目录 概论 Hasmap 的继承关系 hashmap 的原理 解决Hash冲突的方法 开放定址法 再哈希法 链地址法 建立公共溢出区 hashmap 最终的形态 Hashmap 的返回值 HashMa ...

  3. 【mq读书笔记】mq producer启动流程

    创建MQClientInstance实例.这里有个实例缓存 clienrId为客户端IP+instance+(unitname)注意到之前把instance替换为进程id,是为了instance为默认 ...

  4. synchronized底层揭秘

    前言 上篇文章我们从硬件级别探索,对可见性和有序性的认识上升了一个高度,却迟迟没有介绍原子性的解决方案. 今天我们就来聊一聊原子性的解决方案,锁. 引入锁机制,除了可以保证原子性,同时也可以保证可见性 ...

  5. 关于深度学习之中Batch Size的一点理解(待更新)

    batch 概念:训练时候一批一批的进行正向推导和反向传播.一批计算一次loss mini batch:不去计算这个batch下所有的iter,仅计算一部分iter的loss平均值代替所有的. 以下来 ...

  6. Alpha冲刺-第五次冲刺笔记

    Alpha冲刺-冲刺笔记 这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzzcxy/2018SE2 这个作业要求在哪里 https://edu.cnblogs. ...

  7. C语言printf()函数的格式化字符串

    原文链接:https://www.runoob.com/cprogramming/c-function-printf.html#include<stdio.h> #include<s ...

  8. springboot补充

    springboot中的日志: 在默认的spring-boot-starter中,会引入spring-boot-starter-logging, 而springboot-starte-longing中 ...

  9. 喝完可乐桶后程序员回归本源,开源Spring基础内容

    周六了,又是摸鱼的一天,今天还有点不在状态,脑瓜子迷迷糊糊的,昨晚出去喝可乐桶喝的脑子到现在都不是很正常(奉劝各位可以自己小酌:450ml威士忌+1L多一点可乐刚刚好,可能是我酒量不好),正好没啥事就 ...

  10. 第8.1节 Python类的构造方法__init__深入剖析:语法释义

    一.    引言 凡是面向对象设计的语言,在类实例化时都有构造方法,很多语言的构造方法名与类名一致,Python中类的构造方法比较特殊,必须是__init__特殊方法. 二.    语法释义 1.   ...