python - SVC 的 predict_proba 和 decision_function 速度差异
问题描述
predict_proba 是否对 SVC 的 sklearn 引擎盖下的 decision_function 有任何依赖?
我训练了一个概率设置为 True 的 SVC 模型,当对单个数据条目 x.shape = (1, N_features) 执行推理时,从 model.decision_function(x) 获取结果所需的时间比 model.predict_proba( X)。我假设 predict_proba 会首先调用 decision_function 然后计算校准的概率,为什么它会比 decision_function 运行得更快。同样在计算decision_function时,它也会用大数据集和大类数耗尽内存,这不是predict_proba的情况。
这两种方法的实现方式是否存在一些根本差异?
model = SVC(probability=True)
#class_num = 150, data_train.shape = (3000, 500)
model.fit(data_train, label_train)
start_time = time()
model.predict_proba(data_test[0].reshape(1, -1))
inference_time = (time() - start_time) # takes 0.002 seconds
start_time = time()
model.decision_function(data_test[0].reshape(1, -1))
inference_time = (time() - start_time) # takes 0.15 seconds
我希望 predict_proba 比 decision_function 慢,但结果恰恰相反。
解决方案
推荐阅读
- java - Gradle 构建以将 jar 复制到 Maven 本地存储库
- javascript - 基于输入变量的Javascript重复按钮单击
- github - 无法使用 cURL 将 SSH 密钥发送到 Github
- sql - SQL Server 子查询会导致性能损失吗?
- javascript - Node.js 中的安全全局变量
- ruby - 续集 select_all(:model) 返回不正确的 ruby 对象
- c++ - 使用包扩展的 Lambda 继承
- php - 如果显示致命错误,如何解决激活 WooCommerce 的问题?
- curl - C makefile 中的外部库 (CURL)
- python - TensorFlow 中的 FCN-8 解码器(全卷积网络)