Pickle Lazy Learners
Pickle是否为像KNeighboursClassifier形式的sci-kit这样的懒惰学习者保存培训数据?如果是这样,我们可以从泡菜对象访问此数据吗? (寻求数据隐私问题)*
例如:
1 2 3 4 5 6 7 8 | knn.fit(Xtrain, Ytrain) saved_model = pickle.dumps(knn) knn_from_pickle = pickle.loads(saved_model) #This function works after directly loading pickled object (saved_model) and gives correct and logical output knn_from_pickle.predict(Xtest) |
knn_from_pickle或save_model变量是否包含
正如我观察到的那样,对于具有所有数据转换的65KB数据文件(Xtrain),并将全部数据用于训练,当knn模型适合并序列化时,如下所示:
1 2 | saved_model = pickle.dumps(knn) sys.getsizeof(saved_model) |
已占用空间为238744字节
而其他算法(例如高斯朴素贝叶斯)的腌制对象所占用的空间为:
1 2 | saved_model = pickle.dumps(gnb) sys.getsizeof(saved_model) |
占用的空间为6074字节,对于像重随机森林这样的繁重算法:
1 2 | saved_model = pickle.dumps(rf) sys.getsizeof(saved_model) |
已占用空间为48863字节
看到KNN与其他算法的腌制对象之间存在如此大的空间差异,腌制必须以某种方式存储KNN的训练数据。如果是,该如何访问?或者knn如何存储在泡菜中,如果没有,那么使用无配合的预测并给出正确的答案如何去除未腌制的对象(knn_from_pickle)?
是的,数据保存在私有属性中,但是由于python实际上并不尊重私有方法/属性,因此在公布拟合模型之前,您需要牢记隐私问题。
对于