在同一个模型上多次调用 fit() 有啥作用?
Posted
技术标签:
【中文标题】在同一个模型上多次调用 fit() 有啥作用?【英文标题】:What does calling fit() multiple times on the same model do?在同一个模型上多次调用 fit() 有什么作用? 【发布时间】:2018-09-25 05:59:20 【问题描述】:在我实例化一个 scikit 模型(例如 LinearRegression
)后,如果我多次调用它的 fit()
方法(使用不同的 X
和 y
数据),会发生什么?它是否适合数据上的模型,就像我刚刚重新实例化模型(即从头开始)一样,还是将上次调用 fit()
时已经适合的数据保存到帐户中?
尝试使用LinearRegression
(也在查看它的源代码)在我看来,每次我调用fit()
时,它都会从头开始拟合,忽略之前对同一方法的任何调用的结果。我想知道这是否是真的,我可以将这种行为用于 scikit learn 的所有模型/管道。
【问题讨论】:
【参考方案1】:如果您第二次执行model.fit(X_train, y_train)
- 它会覆盖所有之前拟合的系数、权重、截距(偏差)等。
如果您只想拟合数据集的一部分,然后通过拟合新数据来改进模型,那么您可以使用estimators, supporting "Incremental learning" (those, that implement partial_fit()
method)
【讨论】:
一些估算器(具有warm_start
参数)将在warm_start = True
时重用先前调用fit()
的解决方案作为新调用的初始解决方案。
@VivekKumar,是的,这是真的。但对于“线性模型”算法(如 LogisticRegression),先前拟合的系数将仅用于 初始化 步骤,因此它们也将/可能被覆盖
是的,这就是我的意思。谢谢
我们可以在 KNN 中使用 partial_fit 吗?
链接失效,我相信新位置是scikit-learn.org/0.15/modules/scaling_strategies.html【参考方案2】:
您可以在机器学习中互换使用术语 fit() 和 train() 词。根据您实例化的分类模型,可能是clf = GBNaiveBayes()
或clf = SVC()
,您的模型使用了指定的机器学习技术。
一旦您致电clf.fit(features_train, label_train)
,您的模型就会开始使用您通过的特征和标签进行训练。
您可以使用clf.predict(features_test)
进行预测。
如果您再次调用clf.fit(features_train2, label_train2)
,它将使用传递的数据再次开始训练,并将删除之前的结果。您的模型将重置以下内部模型:
如果您希望保留之前计算的内容并使用下一个数据进行额外训练,您也可以使用 partial_fit() 方法
【讨论】:
以上是关于在同一个模型上多次调用 fit() 有啥作用?的主要内容,如果未能解决你的问题,请参考以下文章
多次调用 ::AfxInitRichEdit2 有啥问题吗?
调用 XGBoost .fit 后的 Python sklearn NotFittedError