我将两个数据流传递给 sgd_clf 分类器,如下面的代码所示。第一个partial_fit 正在获取第一个数据流x1,y1。第二个partial_fit 正在获取第二个数据流x2,y2。
下面的代码在第二个partial_fit步骤中给了我错误,即之前要包含的类标签。当我将 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:我对sklearn分类器的partial_fit()的理解是否错误,它按照此处指定的方式动态获取数据:渐进学习 http://scikit-learn.org/stable/modules/scaling_strategies.html
Q2:我想用新数据重新训练模型/更新模型。我不想从头开始训练。 partial_fit 会帮我解决这个问题吗?
Q3:我不仅仅针对 SGDClassifier。我可以使用任何支持在线/批量学习的算法。我的主要目的是第三季度。我有一个经过数千张图像训练的模型。我不想仅仅因为我有一个/两个新的图像样本就从头开始重新训练这个模型。两者都没有兴趣为每个新条目创建一个新模型,然后将它们混合在一起。这降低了我在所有训练模型中进行搜索的预测性能。我只想借助partial_fit 将这个新数据实例添加到经过训练的模型中。这可行吗?
Q4:如果我无法使用 scikit 分类器实现 Q2,请指导我如何实现这一目标
非常感谢任何建议、想法或参考。