python 做回归
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 做回归的更多相关文章
- 利用Caffe做回归(regression)
Caffe应该是目前深度学习领域应用最广泛的几大框架之一了,尤其是视觉领域.绝大多数用Caffe的人,应该用的都是基于分类的网络,但有的时候也许会有基于回归的视觉应用的需要,查了一下Caffe官网,还 ...
- python做量化交易干货分享
http://www.newsmth.NET/nForum/#!article/Python/128763 最近程序化交易很热,量化也是我很感兴趣的一块. 国内量化交易的平台有几家,我个人比较喜欢用的 ...
- 你用 Python 做过什么有趣的数据挖掘项目?
有网友在知乎提问:「你用 Python 做过什么有趣的数据挖掘项目?」 我最近刚开始学习 Python, numpy, scipy 等, 想做一些数据方面的项目,但是之前又没有这方面的经验.所以想知道 ...
- 使用python做科学计算
这里总结一个guide,主要针对刚开始做数据挖掘和数据分析的同学 说道统计分析工具你一定想到像excel,spss,sas,matlab以及R语言.R语言是这里面比较火的,它的强项是强大的绘图功能以及 ...
- [翻译]用神经网络做回归(Using Neural Networks With Regression)
本文英文原文出自这里, 这个博客里面的内容是Java开源, 分布式深度学习项目deeplearning4j的介绍学习文档. 简介: 一般来说, 神经网络常被用来做无监督学习, 分类, 以及回归. 也就 ...
- 12岁的少年教你用Python做小游戏
首页 资讯 文章 频道 资源 小组 相亲 登录 注册 首页 最新文章 经典回顾 开发 设计 IT技术 职场 业界 极客 创业 访谈 在国外 - 导航条 - 首页 最新文章 经典回顾 开发 ...
- [原创博文] 用Python做统计分析 (Scipy.stats的文档)
[转自] 用Python做统计分析 (Scipy.stats的文档) 对scipy.stats的详细介绍: 这个文档说了以下内容,对python如何做统计分析感兴趣的人可以看看,毕竟Python的库也 ...
- 这几天有django和python做了一个多用户博客系统(可选择模板)
这几天有django和python做了一个多用户博客系统(可选择模板) 没完成,先分享下 断断续续2周时间吧,用django做了一个多用户博客系统,现在还没有做完,做分享下,以后等完善了再慢慢说 做的 ...
- 用python做中文自然语言预处理
这篇博客根据中文自然语言预处理的步骤分成几个板块.以做LDA实验为例,在处理数据之前,会写一个类似于实验报告的东西,用来指导做实验,OK,举例: 一,实验数据预处理(python,结巴分词)1.对于爬 ...
随机推荐
- TCP接收窗口为什么变大了?
今天用wireshark抓取TCP连接时的报文发现客户端的Win变大了,这里是使用了Window Scale来扩张TCP接收窗口,使得接收窗口可以大于65535字节. 首先1号包是TCP第一次握手连接 ...
- VMware与Device/Credential Guard不兼容问题
启动虚拟机vmware突然报不兼容错误 解决方法: 1首先打开控制面板>程序>启动或关闭Windows功能, 取消Hyper-v的勾选 2.在往下划,关闭Windows沙盒的勾选沙盒和虚拟 ...
- D - Number of Multisets 题解(思维dp)
题目链接 题目大意 给你一个数k和n,表示用n个\(1/2^i(i=0,1,2.....)\)组成k有多少种方案数 题目思路 这个dp实属巧妙 设\(dp[i][j]表示i个数构成j\) 这i个数可以 ...
- MySQL数据更新
MySQL数据更新: 导读: 该练习是本人课程学习进行整理的,若有不对,欢迎指出! 该练习没有配套的sql文件,如果需要可以看之前的文章有student表等(MySQL查询练习); 这是最后一部分练习 ...
- kafka入门之broker--通信协议
kafka的通讯协议是基于tcp之上的二进制协议,所有类型的请求和响应都是结构化的,由不同的初始类型构成.kafka使用这组协议完成各个功能的实现. 单个kafka client通常需要同时连接多个b ...
- Asp.NetCore之AutoMapper基础篇
应用场景 现在由于前后端技术的分离,后端程序员在使用ORM框架开发后台API接口的时候,往往会将数据库的"数据模型"直接提供给前端.而大多数时候,可能这些数据并不能够满足前端展示的 ...
- 从docker介绍及其简介
一.引言 1.我本地代码运行没问题啊,但是别人机器运行不了,从而导致环境不一致的问题 2.那个兄弟又写死循环了,怎么这么卡,在多用户的操作系统下,会相互影响. 天猫双十一的情况下,用户量暴涨,从而导致 ...
- js预解析练习
分析下面两段代码 console.log(num)//undefined var num = 10 f()//可以执行 //f2()不可以执行 console.log(f)//function con ...
- 在Python中使用moviepy进行音视频剪辑混音合成时输出文件无声音问题
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 在使用moviepy进行音视频剪辑时发现输出成功但 ...
- PyQt(Python+Qt)学习随笔:布局控件layout的layoutSizeConstraint属性
在Qt Designer中布局控件有4个,分别是Vertical Layout(垂直布局).Horizontal Layout(水平布局).Grid Layout(网格布局).Form Layout( ...