关于fit的定义的一些疑问

来源:5-3 简单线性回归的实现

weixin_慕勒6286300

2022-02-16

首先,fit是指通过机器学习算法训练模型的过程,是吧?fit翻译过来就是拟合

在kNN那一章,fit是指通过网格搜索找到最佳参数;

在线性回归这一节,fit是指找到ab的值;

是不是应该这样理解呢?

然后,我觉得kNN算法如果不需要找最佳参数的话,好像是等同于没有fit的过程,但老师说过这个其实是有fit的,因为可以认为训练集本身就是模型?但模型不是在fit之后吗?

http://img.mukewang.com/szimg/620d0d6708a1675f22081242.jpg

写回答

1回答

liuyubobobo

2022-02-17

对线性回归的理解没有问题(更广义的,是寻找 theta 的值。)


但是对于 kNN,理解有一些问题。我们实现的 kNN 算法是一个不需要 fit 的算法。所以,在我们实现的 kNN 算法中,fit 只是简单的把数据扔进 kNN 的类里,没有任何的计算过程:https://git.imooc.com/coding-169/coding-169/src/master/04-kNN/04-Accuracy-Score/playML/kNN.py


我们只不过是为了统一机器学习的模型的 pipeline,给 kNN 这个类设立了 fit 函数。但是,这个 fit 没有做事情。你在课程后续还会看到一些算法在 sklearn 的封装上有这样的特点,比如这个问题的第一个提问:http://coding.imooc.com/learn/questiondetail/116263.html 具体 pipeline 是什么,课程后续会介绍的。


简单来说,fit 就是对训练数据集做一些事情,来帮助预测函数得到预测结果的。比如线性回归,要想得到预测结果,就必须有 theta 参数。所以,fit 就是用来求出这些 theta 参数的。近乎除了 kNN 算法,所有其他算法在 fit 的过程中都需要做事情(甚至是所有的主要工作都在 fit 中),所以,你再看几个算法的 fit,把他们拿到一起比较,可能会理解的更清晰。


==========


网格搜索不是 kNN 的 fit,网格搜索是一种通用的搜索超参数的方法。网格搜索不是一个“模型”,网格搜索是不断变换模型的超参数,来获得一堆模型,然后取这堆模型中最好的一个。


继续加油!:)


0
0

Python3入门机器学习 经典算法与应用  

Python3+sklearn,兼顾原理、算法底层实现和框架使用。

5839 学习 · 2437 问题

查看课程