一、从线性回归总结机器学习的通用模式

从上篇博客我们详细讲述了线性回归的实现方式。线性回归的调用方式实际上是sklearn的典型方式,在掌握这个方法之后我们继续进一步深入,探索其它的模型的使用。

回顾线性回归的理论,它实际上还可以写成一个更为抽象的形式:
y=f(w;x)y = f(w;x) y=f(w;x)
事实上,所有机器学习本质上就是在想办法利用样本数据去拟合一个形如上式的函数关系。对于线性回归,上述函数是一个线性函数,而其它非线性模型则是拟合一个非线性函数。比如logistic回归则是一个logistic函数,而多层感知机则是多个激活函数的复合函数,SVM则是多个核函数的线性组合等等。

但从抽象的层面而言,我们关心的其实只有两个问题:模型如何拟合和如何预测。

从上篇博客中我们已经看到,在调用线性回归时,我们只需要找到它具体对应的class,然后再分别调用fitpredict两个函数即可完成拟合(训练)和预测的步骤。而事实上,在sklearn中绝大多数模型都是用这样的方式封装的,因此在掌握了线性回归的基础上,要学会这些方法就非常容易了。

比如我们用同样的数据,来实现一个支持向量机(SVM)。

import numpy as np
from sklearn.svm import SVR
X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])
# y = 1 * x_0 + 2 * x_1 + 3
y = np.dot(X, np.array([1, 2])) + 3model = SVR()
model.fit(X,y)
model.predict(X)

上述代码第7-9行的调用和线性回归是一模一样的。

当然,如果运行这段代码就会发现,它的精度还不如线性回归,这里主要的问题在于我们对模型的超参数还没有进行调整。在绝大多数的非线性模型中(包括一些特殊的线性模型,比如ridge regression),还有一部分参数是无法通过训练直接获取的,通常的做法是直接预先设定,反复调整使模型达到一个最优的状态,这一过程也就是我们常听到的“调参“。那么基于此,我们的非线性模型的通用模式其实就应该表示为:
y=f(h,w;x)y = f(h,w;x) y=f(h,w;x)
这里面 hhh 表示我们的超参数(一个或多个),www 是可以通过训练算出的参数。以SVR为例,它的超参数实际上包括:

  • 核函数及其参数
  • 惩罚系数

这里我们常用高斯核作为它的核函数,同时将核参数设为1,惩罚系数设为100。

model = SVR(kernel='rbf',gamma= 1, C = 100)
model.fit(X,y)
model.predict(X)
# 运行结果
array([ 6.1       ,  7.93810802,  9.06189198, 10.9       ])

真实的输出是y=[6,8,9,11],那么可以看到这样模型的精度就有了明显的提升。如果我们事先知道模型的超参数,那么可以很容易得出较好的预测结果。但如果不知道的话,就需要进行调参。当然调参的方式有很多种,后面的教程我们再详细讨论。

二、符合上述通用模式的常用模型

这里我们只简单小结一下部分的模型,具体的内容可以根据实际需要继续查询官方文档即可。

模型(群)名称 命名空间 文档链接
线性模型 LinearModels https://scikit-learn.org/stable/modules/linear_model.html
神经网络 trtneural_network https://scikit-learn.org/stable/modules/classes.html#module-sklearn.neural_network
支持向量机 SVM https://scikit-learn.org/stable/modules/svm.html
高斯过程 gaussian_process https://scikit-learn.org/stable/modules/gaussian_process.html
决策树 tree https://scikit-learn.org/stable/modules/tree.html
随机森林 ensemble.RandomForestRegressor https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestRegressor.html#sklearn.ensemble.RandomForestRegressor

下篇教程我们再继续讲参数调优的具体方法。

  • sklearn快速入门教程:(一)准备工作
  • klearn快速入门教程:(二)线性回归
  • sklearn快速入门教程:(四)模型自动调参
  • sklearn快速入门教程:(五)集成学习

sklearn快速入门教程:(三)机器学习的通用模式及实现方法相关推荐

  1. sklearn快速入门教程 -- 机器学习工具的快速入门指引

    本系列教程旨在提供一个直观.快速的入门指引,从应用的角度进行阐述,提供框架性的理解方式. 全程共5篇教程.若抛开下载和安装的过程,应在2小时左右全部阅读和动手测试完成. (一)准备工作 (二)线性回归 ...

  2. sklearn快速入门教程:(五)集成学习

    sklearn快速入门教程–(五)集成学习 一.集成学习简述 集成学习是目前各类竞赛和工程中应用最广泛的模型提升方法.比如在kaggle中就有关于集成学习的介绍(Kaggle模型融合原文).这里所谓的 ...

  3. sklearn快速入门教程:(四)模型自动调参

    上个教程中我们已经看到在sklearn中调用机器学习模型其实非常简单.但要获得较好的预测效果则需要选取合适的超参数.在实际的项目中其实也有不少参数是由工程师借助其经验手动调整的,但在许多场景下这种方式 ...

  4. sklearn快速入门教程:(二)线性回归

    文章目录 一.从本文起学会快速阅读和学习 二.线性回归的原理回顾及官方文档 三.官方文档的分析 四.举一反三 五.小结 一.从本文起学会快速阅读和学习 本来是想把关于快速阅读的说明写在前一节,但最后还 ...

  5. sklearn快速入门教程:(一)准备工作

    sklearn快速入门教程 – 准备工作 1. 前言 sklearn全称 scikit-learn,它是一个集成了目前市面上最常用的机器学习模型的库,使用起来非常轻松简单,因此获得了广泛的应用. 从官 ...

  6. sklearn快速入门教程:补充内容 -- sklearn模型评价指标汇总(聚类、分类、回归)

    sklearn集成了大多数模型评价指标,这可以很大程度上方便我们的使用,尤其在对进行进行自动调参时可以方便我们进行选择. 做下这个笔记主要是为了补充之前的内容:sklearn快速入门教程:(四)模型自 ...

  7. sklearn 快速入门教程

    本教程使用于对理论知识具有一定的了解但编码能力稍弱且对sklearn不太了解的同学 本文为转载文章,原文地址:https://www.cnblogs.com/lianyingteng/p/781112 ...

  8. sklearn快速入门教程:独热编码

    import pandas as pd data = pd.read_csv(r"D:\本科\kaggle数据挖掘\titanic\train.csv", index_col = ...

  9. sklearn快速入门教程:处理分类型数据

    许多特征不是用数字来表达的,而是文字语言,如:北京.上海.广州.深圳.为了适应算法和库,要将文字型数据转换成数值型. import pandas as pd data = pd.read_csv(r& ...

最新文章

  1. 箱线图怎么判断异常值_原创【六西格玛工具解读】02——箱线图(Boxplot)
  2. Access处理DISTINCT的Bug?
  3. 查看网关物理地址命令
  4. php print div,JavaScrip实现PHP print_r的数功能(三种方法)
  5. java peek函数_Java 8 Stream Api 中的 peek 操作
  6. 程序局部性(时间局部性与空间局部性)与循环展开原理详解
  7. 系统集成项目管理工程师历年案例考试汇总
  8. 电话机器人源码,语音电话机器人
  9. ZPL效果在线打印测试和相关手册及编程语言资料
  10. 【英语-同义词汇词组】study和research的用法及区别
  11. Python爬虫:爬取必应壁纸(可直接运行)
  12. 获取当前系统时间(取相对于系统时间的前一周时间)
  13. Emmagee—开源Android性能测试工具
  14. 十进制转换成二进制java
  15. github invalid authentication data can't create token:scopes - [repo,gist] - note Intellif Plugin_1
  16. 论文解读 X-CLIP : Expanding Language-Image Pretrained Models for General Video Recognition
  17. 74HC595驱动2位数码管代码实现和注意事项
  18. eclipse 优化。
  19. 基于PHP+MYSQL宠物领养系统的开发与设计
  20. 通达信交易接口如何实现股票动态监测?

热门文章

  1. linux GDB详解
  2. 10分钟学会React Context API
  3. 一、安装Docker CE
  4. zabbix添加对web页面url的状态监控
  5. 搜索引擎爬虫蜘蛛的UserAgent收集
  6. BZOJ 1036 [ZJOI2008]树的统计Count
  7. matplotlib安装
  8. [原创软件测试工作技能
  9. centos 7 php7.4_索尼小音箱特价!【Aldi】7月7日起 特卖品 及本期特价食品
  10. 「镁客早报」华为Mate 30最快今年9月推出;波士顿动力再秀Handle新动态