首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >泡菜懒人

泡菜懒人
EN

Stack Overflow用户
提问于 2020-07-06 17:35:10
回答 1查看 108关注 0票数 1

Pickle是否为像KNeighboursClassifier这样的懒惰学习者保存培训数据?如果是这样的话,我们能从泡菜对象中访问这些数据吗?(要求资料私隐问题)*

例:

代码语言:javascript
运行
复制
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或saved_model变量是否包含Xtrain数据?由于Knn是一个懒惰的学习者,需要距离计算,当新的数据到达有关培训数据Xtrain。当我打印knn_from_pickle时,只显示了传递给KNeighboursClassifier算法的超参数。

正如我所观察到的,对于具有所有数据转换的65 of数据文件(Xtrain),并将整个数据用于培训,当knn模型适合并序列化如下:

代码语言:javascript
运行
复制
saved_model = pickle.dumps(knn)
sys.getsizeof(saved_model) 

占用的空间为238744字节

而其他算法(如高斯朴素Bayes )中的腌制对象占用的空间是:

代码语言:javascript
运行
复制
saved_model = pickle.dumps(gnb)
sys.getsizeof(saved_model)

占用的空间为6074字节,对于像随机森林这样的重算法:

代码语言:javascript
运行
复制
saved_model = pickle.dumps(rf)
sys.getsizeof(saved_model)

占用的空间为48863字节

考虑到KNN和其他算法的腌制对象之间有很大的空间差异,泡菜一定在为KNN存储训练数据。如果是的话,如何访问它?或者knn是如何存储在泡菜中的,如果不是,那么非腌制对象(knn_from_pickle)是如何使用预测而不适合并给出正确答案的?

EN

回答 1

Stack Overflow用户

发布于 2020-07-06 20:24:24

是的,数据保存在私有属性中,但是因为python实际上并不尊重私有方法/属性,所以在公布合适的模型之前,您需要记住隐私问题。

对于KNeighborsClassifier,属性是_fit_X (在编写本文时;作为一个私有属性,开发人员不会过多考虑更改该属性)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62761472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档