scitkit SGDClassifier partial_fit 不会以增量方式学习。返回"类应包含所有有效标签"



我将两个数据流传递给SGD_CLF分类器,如下所示。First partial_fit正在使用DATA X1,Y1的第一流。第二个partial_fit正在采用第二个数据流x2,y2。

以下代码在第二个partial_fit步骤中给了我错误,该类lables将在先前包含。当我将来自X2 Y2的所有数据包含在X1,Y1中时,此错误就消失了。(立即致电第二Partial_fit之前,我的类标签包括在内(

但是,我不能以前给出此x2 y2数据。如果我完全将所有数据提供在第一个partial_fit((之前,为什么我需要使用第二个partial_fit((?实际上,如果我以前知道所有数据,我不需要使用partial_fit((,我只能fit((。

from sklearn import neighbors, linear_model
import numpy as np
def train_new_data():
    sgd_clf = linear_model.SGDClassifier()
    x1 = [[8, 9], [20, 22]]
    y1 = [5, 6]
    classes = np.unique(y1)
    #print(classes)
    sgd_clf.partial_fit(x1,y1,classes=classes)
    x2 = [10, 12]
    y2 = 8

    sgd_clf.partial_fit([x2], [y2],classes=classes)#Error here!!
    return sgd_clf
if __name__ == "__main__":
    print(train_new_data().predict([[20,22]]))

Q1:我对partial_fit((的理解是错误的,因为它可以按照此处指定的即时数据进行数据:增量学习

Q2:我想用新数据重新训练/更新模型。我不想从头开始训练。partial_fit会帮助我吗?

Q3:我不仅针对SGDClassifier。我可以使用任何支持在线/批处理学习的算法。我的主要目的是Q3。我在1000张图像上有训练有素的型号。我不想因为我有一个/两个新的图像样本而从头开始重新研究该模型。对每个新条目创建一个新模型都不感兴趣,然后将它们混合在一起。这降低了我的绩效,以预测在训练有素的模型上进行搜索。我只想在partial_fit的帮助下将此新的数据实例添加到受过训练的模型中。这是可行的吗?

Q4:如果我无法使用Scikit分类器来挑战Q2,请指示我如何实现此目的

任何建议,想法或参考都非常感谢。

您需要事先知道您需要多少个课程。在第一次拨打部分拟合后,该算法假设您将没有任何新的稍后添加。

在您的示例中,您将被添加到一个新的类(y2 = 8(中,该类别从未见过,并且在您最初的部分拟合中没有显示为现有的(仅包含标签" 5"one_answers" 6("(。您需要在第一个呼叫上将其添加到类对象中。

我还建议您从0开始,仅出于一致性的缘故。

相关内容

最新更新