简单线性回归

线性回归是数据挖掘中的基础算法之一,从某种意义上来说,在学习函数的时候已经开始接触线性回归了,只不过那时候并没有涉及到误差项。线性回归的思想其实就是解一组方程,得到回归函数,不过在出现误差项之后,方程的解法就存在了改变,一般使用最小二乘法进行计算。

使用sklearn.linear_model.LinearRegression进行线性回归

sklearn对Data Mining的各类算法已经有了较好的封装,基本可以使用fitpredictscore来训练、评价模型,并使用模型进行预测,一个简单的例子如下:

>>> from sklearn import linear_model
>>> clf = linear_model.LinearRegression()
>>> X = [[0,0],[1,1],[2,2]]
>>> y = [0,1,2]
>>> clf.fit(X,y)
>>> print(clf.coef_)
[ 0.5 0.5]
>>> print(clf.intercept_)
1.11022302463e-16

LinearRegression已经实现了多元线性回归模型,当然,也可以用来计算一元线性模型,通过使用list[list]传递数据就行。下面是LinearRegression的具体说明。

使用方法

实例化

sklearn一直秉承着简洁为美得思想设计着估计器,实例化的方式很简单,使用clf = LinearRegression()就可以完成,但是仍然推荐看一下几个可能会用到的参数:

  • fit_intercept:是否存在截距,默认存在
  • normalize:标准化开关,默认关闭

还有一些参数感觉不是太有用,就不再说明了,可以去官网文档中查看。

回归

其实在上面的例子中已经使用了fit进行回归计算了,使用的方法也是相当的简单。

  • fit(X,y,sample_weight=None)X,y以矩阵的方式传入,而sample_weight则是每条测试数据的权重,同样以array格式传入。
  • predict(X):预测方法,将返回预测值y_pred
  • score(X,y,sample_weight=None):评分函数,将返回一个小于1的得分,可能会小于0

方程

LinearRegression将方程分为两个部分存放,coef_存放回归系数,intercept_则存放截距,因此要查看方程,就是查看这两个变量的取值。

多项式回归

其实,多项式就是多元回归的一个变种,只不过是原来需要传入的是X向量,而多项式则只要一个x值就行。通过将x扩展为指定阶数的向量,就可以使用LinearRegression进行回归了。sklearn已经提供了扩展的方法——sklearn.preprocessing.PolynomialFeatures。利用这个类可以轻松的将x扩展为X向量,下面是它的使用方法:

>>> from sklearn.preprocessing import PolynomialFeatures
>>> X_train = [[1],[2],[3],[4]]
>>> quadratic_featurizer = PolynomialFeatures(degree=2)
>>> X_train_quadratic = quadratic_featurizer.fit_transform(X_train)
>>> print(X_train_quadratic)
[[ 1 1 1]
[ 1 2 4]
[ 1 3 9]
[ 1 4 16]]

经过以上处理,就可以使用LinearRegression进行回归计算了。

sklearn学习笔记之简单线性回归的更多相关文章

  1. JSP学习笔记(三):简单的Tomcat Web服务器

    注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...

  2. JAVA WEB学习笔记(三):简单的基于Tomcat的Web页面

    注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...

  3. Spark学习笔记0——简单了解和技术架构

    目录 Spark学习笔记0--简单了解和技术架构 什么是Spark 技术架构和软件栈 Spark Core Spark SQL Spark Streaming MLlib GraphX 集群管理器 受 ...

  4. Html学习笔记(二) 简单标签

    标签的重点 标签的用途 标签在浏览器中的默认样式 <body>标签: 在网页上显示的内容 <p>标签: 添加段落 <hx>标签: 添加标题 标签一共有6个,h1.h ...

  5. Netty学习笔记(六) 简单的聊天室功能之WebSocket客户端开发实例

    在之前的Netty相关学习笔记中,学习了如何去实现聊天室的服务段,这里我们来实现聊天室的客户端,聊天室的客户端使用的是Html5和WebSocket实现,下面我们继续学习. 创建客户端 接着第五个笔记 ...

  6. Java设计模式学习笔记(二) 简单工厂模式

    前言 本篇是设计模式学习笔记的其中一篇文章,如对其他模式有兴趣,可从该地址查找设计模式学习笔记汇总地址 正文开始... 1. 简介 简单工厂模式不属于GoF23中设计模式之一,但在软件开发中应用也较为 ...

  7. CSS学习笔记09 简单理解BFC

    引子 在讲BFC之前,先来看看一个例子 <!DOCTYPE html> <html lang="en"> <head> <meta cha ...

  8. docker学习笔记:简单构建Dockerfile【Docker for Windows】

    参考与入门推荐:https://www.cnblogs.com/ECJTUACM-873284962/p/9789130.html#autoid-0-0-9 最近学习docker,写一个简单构建Doc ...

  9. R语言学习笔记:简单的回归分析

    fitbit <- read.csv("fitbit.csv") date     cal   step  dist floor sit inactive walk run2 ...

随机推荐

  1. Angular 2基础(一) 环境搭建

    Angular2是一款开源JavaScript库,由Google维护,用来创建页面应用程序.正式发布于2016年9月,基于ES6开发. 一.准备工作 使用Angular2开发,需要预先做一些配置上的配 ...

  2. 安卓APP应用在各大应用市场上架方法整理

    想要把APP上架到应用市场都要先注册开发者账号才可以.这里的方法包括注册帐号和后期上架及一些需要注意的问题.注意:首次提交应用绝对不能随便删除,否则后面再提交会显示应用APP冲突,会要求走应用认领流程 ...

  3. 使用缓存方式优化递归函数与lru_cache

    一.递归函数的弊端 递归函数虽然编写时用很少的代码完成了庞大的功能,但是它的弊端确实非常明显的,那就是时间与空间的消耗. 用一个斐波那契数列来举例 import time #@lru_cache(20 ...

  4. Docker学习—Docker简介

    什么是Docker Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目.它基于 Google 公司推出的 Go 语言实现. 项目后来加入了 Linu ...

  5. windows7+apache2.4+sql server+php7.0

    参考文献:https://blog.csdn.net/blueheart20/article/details/76186218 https://blog.csdn.net/phpservice/art ...

  6. Linux 小知识翻译 - 「文件系统的种类」

    现在的Linux,主流的文件系统是 「ext3」.但是,文件系统除此之外,还有「ReiserFS」「XFS」「ZFS」等等. 此外,Windows的主流文件系统是「NTFS」,CD-ROM的主流文件系 ...

  7. 获取请求Url

    /// <summary> /// 获取请求Url /// 例:http://www.text:1234 /// </summary> /// <returns>& ...

  8. python scrapy爬虫框架概念介绍(个人理解总结为一张图)

    python的scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架   python和scrapy的安装就不介绍了,资料很多 这里我个人总结一下,能更加快理解scrapy和快速上手一个简 ...

  9. JMETER content-type增加

    Jmeter—3 http请求—content-type与参数 本文讲三种content-type以及在Jmeter中对应的参数输入方式 第一部分:目前工作中涉及到的content-type 有三种: ...

  10. ActivityThread

    /** * This manages the execution of the main thread in an * application process, scheduling and exec ...