Scikit-learn支持转移学习吗?请检查以下代码。
clf模型是用fit(X,y)实现的
能否在clf2的基础上建立clf学习模型,通过fit(X2,y2)进行迁移学习?
>>> from sklearn import svm
>>> from sklearn import datasets
>>> clf = svm.SVC()
>>> X, y= ....
>>> clf.fit(X, y)
SVC()
>>> import pickle
>>> s = pickle.dumps(clf)
>>> clf2 = pickle.loads(s)
>>> clf2.fit(X2,y2)
>>> clf2.predict(X[0:1])发布于 2020-07-22 18:54:24
在scikit-learn的上下文中,没有转移学习本身,存在增量学习、持续学习或在线学习。
通过查看您的代码,您打算做的任何事情都不会像您在这里所想的那样工作。来自这 scikit-learn文档:
多次调用
fit()将覆盖以前的fit()学到的内容
这意味着在同一模型上多次使用fit()将简单地覆盖所有以前拟合的系数、权重、截距(偏差)等。
然而,如果您想安装一部分数据集,然后通过拟合一个新数据来改进模型,那么您可以做的是查找包含partial_fit API实现的 估计量 。
如果我们多次调用
partial_fit(),框架将更新现有的权重,而不是重新初始化它们。
使用scikit-learn warm_start 进行增量学习的另一种方法是寻找支持warm_start参数.的算法。
来自这文档:
warm_start: bool,default=False 当设置为
True时,重用上一次调用fit()的解决方案作为初始化,否则,只需删除前面的解决方案。对于liblinear解算器来说毫无用处。
另一个例子是随机forrest回归。
https://stackoverflow.com/questions/63031254
复制相似问题