在同一个模型上多次调用fit()会怎样?

Fan*_*nta 19 python machine-learning scikit-learn

我实例化一个scikit模型之后(例如LinearRegression),如果我调用它的fit()方法多次(具有不同Xy数据),会发生什么?它是否适合数据模型,如果我只是重新实例化模型(即从头开始),或者它是否保留到之前调用已经适合的帐户数据中fit()

尝试LinearRegression(也查看其源代码)在我看来,每次调用时fit(),它都适合从头开始,忽略之前调用同一方法的结果.我想知道这一般是否正确,并且我可以依赖于scikit学习的所有模型/管道的这种行为.

Max*_*axU 22

如果您将再次执行model.fit(X_train, y_train)- 它将覆盖所有先前拟合的系数,权重,截距(偏差)等.

如果您只想拟合数据集的一部分,然后通过拟合新数据来改进模型,那么您可以使用估算器,支持"增量学习"(那些,实现partial_fit()方法)

  • 当“ warm_start = True”时,某些估算器(具有“ warm_start”参数)将重用先前对“ fit()”调用的解决方案作为新调用中的初始解决方案。 (4认同)
  • @VivekKumar,是的,这是真的。但是对于“线性模型”算法(如 LogisticRegression),先前拟合的系数将仅用于 __initialization__ 步骤,因此它们也将/可能会被覆盖 (2认同)
  • 链接损坏,我相信新位置是 https://scikit-learn.org/0.15/modules/scaling_strategies.html (2认同)

小智 5

您可以在机器学习中交替使用术语fit()train()词。根据您实例化的分类模型,可能是clf = GBNaiveBayes()clf = SVC(),您的模型使用指定的机器学习技术。
一旦你调用clf.fit(features_train, label_train)你的模型,就开始使用你传递的特征和标签进行训练。

你可以clf.predict(features_test)用来预测。
如果您再次调用clf.fit(features_train2, label_train2)它,它将使用传递的数据再次开始训练并删除之前的结果。您的模型将重置以下内部模型:

  • 重量
  • 拟合系数
  • 偏见
  • 和其他培训相关的东西......

如果您希望保留之前计算的内容并另外使用下一个数据进行训练,您也可以使用partial_fit()方法