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

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

从上篇博客我们详细讲述了线性回归的实现方式。线性回归的调用方式实际上是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])) + 3
    
model = 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)
这里面 h h h 表示我们的超参数(一个或多个), w w w 是可以通过训练算出的参数。以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],那么可以看到这样模型的精度就有了明显的提升。如果我们事先知道模型的超参数,那么可以很容易得出较好的预测结果。但如果不知道的话,就需要进行调参。当然调参的方式有很多种,后面的教程我们再详细讨论。

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

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

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

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

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半个冯博士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值