我将两个数据流传递给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开始,仅出于一致性的缘故。