我正在开发一个项目,该项目旨在对推文进行分类,并且正在使用sklearn
的{{3}}。是否可以使用Iterator[Dataset]
进行重新培训,如果可以,请向正确的方向指导我。另外,重新训练模型是否值得,或者在构建网络时我应该只是调整值。
答案 0 :(得分:0)
您可以尝试以下方法。
from sklearn.externals import joblib
##Suppose your trained model is named MyTrainedModel
##This is how you save it in a file called MyTrainedModelFile.txt.
joblib.dump(MyTrainedModel, 'MyTrainedModelFile.txt')
##Later you can recall the model and use it
Loaded_model = joblib.load('MyTrainedModelFile.txt')
本教程为here。
请告诉我您是否要这样做。
答案 1 :(得分:0)
使用partial_fit
提供的MLPClasifier
方法可以很好地做到这一点。我已经为此编写了示例代码。如果您批量获取数据,则很好地重新训练保存的模型,而训练对您来说是一项昂贵的操作,因此每次获得新一批数据时都无法承受对整个数据集的训练。
import pickle
from sklearn.neural_network import MLPClassifier
from sklearn.datasets import make_classification
X, y = make_classification(n_samples=1000, n_classes=4, n_features=11,
n_informative=4, weights=[0.25,0.25,0.25,0.25],
random_state=0)
x_batch1 = X[0:500]
y_batch1 = y[0:500]
x_batch2 = X[500:999]
y_batch2 = y[500:999]
clf = MLPClassifier()
clf.partial_fit(x_batch1, y_batch1, classes = np.unique(y)) # you need to pass the classes when you fit for the first time
pickle.dump(clf, open("MLP_classifier", 'wb'))
restored_clf = pickle.load(open("MLP_classifier", 'rb'))
restored_clf.partial_fit(x_batch2, y_batch2)
希望这会有所帮助!