关于fit的定义的一些疑问
来源:5-3 简单线性回归的实现
weixin_慕勒6286300
2022-02-16
首先,fit是指通过机器学习算法训练模型的过程,是吧?fit翻译过来就是拟合
在kNN那一章,fit是指通过网格搜索找到最佳参数;
在线性回归这一节,fit是指找到ab的值;
是不是应该这样理解呢?
然后,我觉得kNN算法如果不需要找最佳参数的话,好像是等同于没有fit的过程,但老师说过这个其实是有fit的,因为可以认为训练集本身就是模型?但模型不是在fit之后吗?
1回答
-
对线性回归的理解没有问题(更广义的,是寻找 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,网格搜索是一种通用的搜索超参数的方法。网格搜索不是一个“模型”,网格搜索是不断变换模型的超参数,来获得一堆模型,然后取这堆模型中最好的一个。
继续加油!:)
00
相似问题