You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Python 3.8中调用sklearn2pmml()函数抛出RuntimeError求助

scikit-learn逻辑回归模型转PMML时InvalidOpcodeException错误解决思路

问题复现

代码示例

from sklearn2pmml import sklearn2pmml
from sklearn2pmml.pipeline import PMMLPipeline
from sklearn.linear_model import LogisticRegression

pipe_pmml = PMMLPipeline(steps=[('mapper', mapper),
                                ('estimator', LogisticRegression(C = 0.01, 
                                  penalty = 'l1', 
                                  solver = 'liblinear', 
                                  random_state = 1))
                                ])
pipe_pmml.fit(X_small, y)

sklearn2pmml(pipe_pmml, pmml_filename, with_repr = True)

注:mapper为sklearn_pandas.DataFrameMapper实例

报错信息

Standard output is empty
Standard error:
Exception in thread "main" net.razorvine.pickle.InvalidOpcodeException: invalid pickle opcode: 0
    at net.razorvine.pickle.Unpickler.dispatch(Unpickler.java:366)
    at org.jpmml.python.CustomUnpickler.dispatch(CustomUnpickler.java:31)
    at org.jpmml.python.PickleUtil$1.dispatch(PickleUtil.java:64)
    at net.razorvine.pickle.Unpickler.load(Unpickler.java:109)
    at org.jpmml.python.PickleUtil.unpickle(PickleUtil.java:85)
    at com.sklearn2pmml.Main.run(Main.java:78)
    at com.sklearn2pmml.Main.main(Main.java:6

当前依赖版本

  • sklearn==0.0
  • scikit-learn==1.1.2
  • sklearn-pandas==2.2.0
  • sklearn2pmml==0.86.3

解决思路

  • 移除冲突的占位依赖:sklearn==0.0是无实际功能的占位包,与scikit-learn==1.1.2存在依赖冲突,会干扰pickle序列化流程。执行以下命令卸载:
    pip uninstall -y sklearn
    
  • 对齐版本兼容性:sklearn2pmml对scikit-learn版本有严格适配要求,0.86.3版本仅支持到scikit-learn 1.0.x,而当前使用的1.1.2超出适配范围,导致底层解析出错。两种调整方案:
    • 降级scikit-learn到兼容版本:
      pip install scikit-learn==1.0.2
      
    • 升级sklearn2pmml到支持1.1.x的版本(如0.96.0及以上):
      pip install sklearn2pmml==0.96.0
      
  • 简化序列化参数:去掉sklearn2pmml函数中的with_repr=True参数,该参数会额外序列化对象的repr信息,增加解析风险,修改为:
    sklearn2pmml(pipe_pmml, pmml_filename)
    
  • 验证第三方Mapper兼容性:若调整后仍有问题,可尝试将DataFrameMapper替换为scikit-learn原生的ColumnTransformer,避免第三方组件的序列化兼容性问题。

内容的提问来源于stack exchange,提问作者S_Econometrics

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 20:21:10