sklearn学习笔记之简单线性回归

简单线性回归

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

使用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学习笔记之简单线性回归,如需转载请自行联系原博主。

时间: 2024-09-14 00:42:45

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

《设计模式》学习笔记2——简单工厂模式

定义 简单工厂模式并不属于GoF(Gang of Four四人组)23中设计模式,有些地方的解释说因为简单工厂模式太简单,所以23中设计模式就没有单独列出. 但是简单工厂模式在实际的应用中却很常用,因此在刘伟老师的<设计模式>一书中就还是列了出来. 简单工厂模式引用书中的定义如下: 简单工厂模式(Simple Factory Pattern):定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类.因为在简单工厂模式中用于创建实例的方法是静态(static)方法

Struts2学习笔记(6)-简单的数据校验_java

数据校验是在项目开发中不可缺少的一部分,用户登录时.密码验证时都需要,当然要做的首先是获得用户输入的内容,然后对内容进行验证,一般都是从数据库中读出然后校验,如果错误则显示提示信息,正确则进入用户主界面. 下面用一个简单小例子来说明下步骤: 1.index的表单 复制代码 代码如下: <%@ page language="java" contentType="text/html; charset=UTF-8"      pageEncoding="U

zeromq学习笔记2——简单的客户端和服务端测试程序

1.前言 zeromq提供了guide,http://zguide.zeromq.org/,可以帮助新手快速上手,提供了C\C++\PHP等多种语言. 2.测试程序 使用zeromq给的hwserver和hwclient的C语言测试程序. hwserver代码如下: 1 #include <stdio.h> 2 #include <unistd.h> 3 #include <string.h> 4 #include <assert.h> 5 #include

图解HTTP学习笔记——简单的HTTP协议

简单的HTTP协议 前言 最近在学习Web开发的相关知识,发现<图解HTTP>这本书通俗易懂.所以花时间学习这本书,并记录下学习笔记. 如上图,我们每天都在浏览网页,一般我们都是在浏览器地址栏输入要访问的网站的地址(如百度),按下回车,浏览器就显示了我们要访问的网站的网页. 那么在我们敲下回车键的那一刻,究竟发生了什么呢.通过今天的学习,能大致了解其中原理,并简单学习HTTP协议. 目录 1.客户端与服务器端2.HTTP是不保存状态的协议3.请求URI定位资源4.告知服务器意图的HTTP方法5

简单入门——深度学习笔记(Part I)

更多深度文章,请关注:https://yq.aliyun.com/cloud 作者介绍:Deepak Shah Deepak Shah毕业于德克萨斯奥斯汀分校,徒步旅行爱好者,目前是深度学习\数据科学实习生,研究领域专注于深度学习.编程.金融等方面. 个人主页:http://www.deepakvshah.com/ Medium论坛:https://medium.com/@dvshah13 Github论坛:https://github.com/Dvshah13  笔记分为两个部分,本文是笔记P

SSH整合学习笔记之spring与hibernate简单整合.doc

SSH整合学习笔记 大致的学习了一下struts1.x struts2.x  spring2.5 hibernate3.6,觉得东西很多,好些东西都记不住,最后发现想记住的方法就是多练习.自己多写一下简单的工程也会把这些知识巩固,但是公司现在不用这个,所以只能记下笔记,不忙的时候再拿来看看,坚持的练习一下.我也是初学,所以只是记下一些基础的东西,如果写错了什么,请朋友多多指出. 个人对SSH的理解也不算深入,只是大概的学完一圈觉得spring很强大,有的人觉得spring很难学,但是我觉得str

简单入门——深度学习笔记(Part II)

更多深度文章,请关注:https://yq.aliyun.com/cloud 作者介绍:Deepak Shah Deepak Shah毕业于德克萨斯奥斯汀分校,徒步旅行爱好者,目前是深度学习\数据科学实习生,研究领域专注于深度学习.编程.金融等方面. 个人主页:http://www.deepakvshah.com/ Medium论坛:https://medium.com/@dvshah13 Github论坛:https://github.com/Dvshah13  笔记分为两个部分,本文是笔记P

C#可扩展编程之MEF学习笔记(一):MEF简介及简单的Demo

在文章开始之前,首先简单介绍一下什么是MEF,MEF,全称Managed Extensibility Framework(托管可扩展框架).单从名字我们不难发现:MEF是专门致力于解决扩展性问题的框架,MSDN中对MEF有这样一段说明: Managed Extensibility Framework 或 MEF 是一个用于创建可扩展的轻型应用程序的库. 应用程序开发人员可利用该库发现并使用扩展,而无需进行配置. 扩展开发人员还可以利用该库轻松地封装代码,避免生成脆弱的硬依赖项. 通过 MEF,不

用 PHP 实现的简单线性回归:(一)

数据库在 PHP 中的重要性 PHP 领域中缺少了一个功能强大的工具:基于语言的数学库.在这个由两部分组成的系列文章中,Paul Meagher 希望通过提供一个如何开发分析模型库的示例来启发 PHP 开发人员去开发和实现基于 PHP 的数学库.在第 1 部分中,他演示了如何使用 PHP 作为实现语言来开发和实现简单线性回归(Simple Linear Regression)算法包的核心部分.在第 2 部分中,作者在该包中添加了一些功能:针对中小规模数据集的有用的数据分析工具. 简介与其它开放源