sklearn机器学习心得—线性回归

浏览: 1680

这是菜鸟学Python的粉丝第1篇原创投稿

阅读本文大概需要3分钟

下面是小郑同学的投稿

    线性回归是数据挖掘中的基础算法之一,也是重要的算法之一,基本上第一次接触的机器学习算法就是线性回归了。因为相对其他算法而言,我觉得线性回归是相对比较容易的算法,从某种意义上来说,在学习函数的时候已经开始接触线性回归了,只不过那个时候并没有涉及到误差项,其实在中学的时候就有接触了,学习的最小二乘法就是啦~~

1,简介

1).对于坐标系中给定的点,我们希望用一条线或是一个类似于:f(x)=θ0+θ1*x1+θ2*x2_...θn*xn 方程来拟合这写数据点,这就是我们说的回归了

2).这次我们要用的是Python中一个有名的库sklearn,这个库里面集成了大部分常用的机器学习算法,使用起来也相对方便,只需调用相关类和函数,就可以完成一个基本的机器学习模型了

3).首先感受下本文要用到的线性回归算法,大致核心的代码如下:

image.png

4).只要简单的几行代码,你就可以建立一个线性回归的模型

  • 这里的from sklearn.linear_model import LinearRegression为导入相关的算法类,视具体情况而导入不同的算法类

  • 第二句是初始化该模型;接着是用fit函数完成训练你的数据,得到一个可以用于预测的模型

  • 最后用predict函数进行预测

2,实例分析

下面先举一个小例子,在原来的基础上加上了数据集,需要注意的是,X_train可以是一维的,二维的,也可以是多维的

image.png

即X1,X2,X3,……这里是二维的,所以是一个大的列表中包含一个个小列表,每个小列表包含两个数

用fit函数后直接predict新的数据X_test,最后打印出结果。print(linreg.coef_)这句是打印出该模型的参数

比如这里对数据拟合之后就是[ 0.5  0.5],写出来就是y=0.5*X1+0.5*X2

3,实例分析

在这个例子中,用到的数据集来自sklearn中自带的数据集,首先简单看一下数据大致情况:

image.png

可以看到该数据集共有442条数据,每一条数据有10个特征值(feature),在这里我们不做任何处理,统统把数据扔进去(哈哈哈,我有点懒)

image.png

  • 读取sklean 自带的diabete数据集

  • 使用全部特征,区分开x和y 

  • 把数据集分为训练集和测试集,其中test_size=0.3,即测试集占数据的30%

  • 使用线性回归

  • 进行训练集 和测试集的匹配,即是训练的过程

  • 打印出相关系数和截距等信息

  • 打印出模型的score值

>>

参数为 [ -17.33584015 -133.4430929   556.52334063  257.93937783 -851.30658803 535.61270222  109.61905444   56.42194824  795.39454829  163.07702816]

0.487947429125

(PS:这里画风突变是用了不同的IDE)

4,小结

其实,对于该例子,或者说是其他算法而言,从代码上来看,大致遵循这样的“套路”:

  • model = linear_model.LinearRegression()   #使用线性回归

  • model.fit(X_train, y_train)  #训练获得一个model

  • model.predict(X_test)       # 预测

  • model.score(X_test, y_test)  # 获取模型的score值


1).换成其他算法只需修改相应的算法类即可

2).另外,对于该例子或者说其他例子而言,完成一个实战 大致上的思路为:

获取相关数据—>特征选择—>模型选择—>训练数据—>评价模型—>预测结果

3).但在本文中主要是想让读者了解如何使用sklearn中的线性回归模型,所以并没有按照一个具体的流程完整的做出来,以后有机会也会写一写其中的一小个步骤。

4).至此,关于sklearn的线性回归基本用法就结束了,但需要注意的是,有些模型你得到后的参数是一个列表,外加列表外单独的一个数,列表外的那个数其实是截距,也就是常数,列表里面的则是系数

小郑感悟:


最后,本文是我第一次写此类文章,虽然内容不算多,也是忙活了一个下午(但我想主要还是我菜,心累。。。)首先是感受到提供技术文章的作者确实不易,在此十分感谢能无私提供学习文章的广大作者(译者)们。另外,我也是刚刚接触机器学习不久,过程中难免有疏忽、漏洞和错误的地方,也希望各位大神朋友们能不吝赐教,共同进步!


 长按二维码,关注【菜鸟学python】


推荐 0
本文由 菜鸟学Python 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册