1 模型保存
见demo:
import pickle
from sklearn.svm import SVC
from sklearn import datasets
# 定义分类器
svm = SVC()
# 加载iris数据集
iris = datasets.load_iris()
# 读取特征
X = iris.data
# 读取分类标签
y = iris.target
# 训练模型
svm.fit(X, y)
# 保存成python支持的文件格式pickle, 在当前目录下可以看到svm.pickle
with open('svm.pickle', 'wb') as fw:
pickle.dump(svm, fw)
# 加载svm.pickle
with open('svm.pickle', 'rb') as fr:
new_svm = pickle.load(fr)
print new_svm.predict(X[0:1])
2 模型加载
from sklearn.externals import joblib
from sklearn.svm import SVC
from sklearn import datasets
# 定义分类器
svm = SVC()
# 加载iris数据集
iris = datasets.load_iris()
# 读取特征
X = iris.data
# 读取分类标签
y = iris.target
# 训练模型
svm.fit(X, y)
# 保存成sklearn自带的文件格式
joblib.dump(svm, 'svm.pkl')
# 加载svm.pkl
new_svm = joblib.load('svm.pkl')
print new_svm.predict(X[0:1])
3 sklean增量学习
from sklearn.linear_model
import SGDClassifier
sgd_clf = SGDClassifier() # SGDClassifier的参数设置可以参考sklearn官网 minibatch_train_iterators = iter_minibatches(data_part_file, minibatch_size=2000)
for i, (X_train, y_train) in enumerate(minibatch_train_iterators):
# 使用 partial_fit ,并在第一次调用 partial_fit 的时候指定 classes
sgd_clf.partial_fit(X_train, y_train, classes=np.array([0, 1])) print("{} time".format(i)) # 当前次数 print("{} score".format(sgd_clf.score(X_test, y_test))) # 在测试集上看效果
4 使用partial_fit实现两个数据集的模型更新
# 加载模型为old_model
clf = old_model.copy()
new_model = clf.partial_fit(x_new,y_new)
# 训练出新模型,but 需要清楚哪些模型有partial_fit。