4.2 为什么predict还需要一个私有的predict,而fit没有?

来源:4-3 训练数据集,测试数据集

神经旷野舞者

2018-01-30

是因为,predict函数太长了吗?所以分成小的函数。
我看那个示意图里面predict仅仅是一个输出箭头,是不是predict函数的具体实现过程放到fit里更合适,然后fit返回一个变量就够了?

写回答

1回答

liuyubobobo

2018-01-30

在这一小节的设计里,_predict的作用是预测一个样本数据的输出结果。predict的作用是预测一组(多个)样本数据的输出结果。这里根据scikit-learn的封装方式,将后者作为最终暴露给用户的接口。


predict和fit做的事情完全不同。predict做的事情是预测,fit做的事情是训练。用户在具体调用的时候,在fit以后,可以多次使用fit的结果,多次调用predict,即针对一个训练结果,对不同的数据进行预测,所以二者的实现是分离的。以后慢慢你就会看到,对于大多数算法,fit过程是很慢的。每预测一组数据,就重新fit一遍,是不合理的:)

1
2
liuyubobobo
回复
神经旷野舞者
对!就是蓝色的部分!只不过kNN算法非常特殊,蓝色的部分不需要计算!kNN算法的主要计算都在红色部分,也就是预测部分。之后学习更多的算法以后就会了解,大多数机器学习算法的重头戏,都在fit这一部分:)
2018-01-30
共2条回复

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

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

5839 学习 · 2437 问题

查看课程