Python sklearn隔离林树分割阈值精度

2024-05-29 11:05:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用scikitlearn(sklearn)隔离林进行异常检测。我还使用sklearn2pmml库将模型转换为PMML格式。理想情况下,同时使用(pickle和PMML(使用JPMML求值器))文件的预测应该产生与使用相同模型生成PMML相同的结果。在

但我发现两个记录的预测(异常分数)在小数点后3/4处不匹配。e、 g.预测使用泡菜:-0.975643使用PMML文件对同一记录进行预测:-0.975498。在

我试图用sklearn内置的boston数据集复制这个问题。 我创建了隔离林(树数为1)并转换为pickle文件和PMML,然后使用python代码(how to extract the decision rules from scikit-learn decision-tree?)将pickle转换为文本格式,并将其与PMML文件进行了比较。在

我发现Python存储树节点阈值的方式与PMML不同。 e、 g.PMML:-SimplePredicate field=“CHAS”operator=“lessOrEqual”value=“0.08887574”

Python Pickle:-如果CHAS<;=0.0888757431362:

所以pickle以numpyfloat64格式存储阈值,PMML以numpyfloat32格式存储。在

但是看看github上的sklearn代码,我想sklearn也以numpyfloat32格式存储树阈值。那么为什么pickle将值存储为float64而不是float32,因为0.0888757431362肯定不是float32。在

如果有人对这个问题有任何想法或者我的假设是错误的,请告诉我。在


Tags: 文件代码模型格式记录阈值sklearnpickle

热门问题