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

自定义预测函数无法调用scikit-learn的.predict,如何获取预测输出?

自定义预测函数的结果获取方案

你的自定义函数本身就是完整的预测逻辑,不需要依赖scikit-learn的.predict方法,直接调用即可得到结果。以下是具体实现步骤:

1. 修正函数语法

原函数缺少Python函数定义必需的冒号,先修正:

def objective(C, Z):
    return C**3 + Z**2 + 3

2. 直接调用获取预测结果

单个样本预测

直接传入单个C、Z数值:

c_val = 2
z_val = 3
result = objective(c_val, z_val)
print(result)  # 输出:20

批量样本预测

如果是批量数据,有两种高效处理方式:

循环处理列表

c_list = [1, 2, 3]
z_list = [0, 1, 2]

results = [objective(c, z) for c, z in zip(c_list, z_list)]
print(results)  # 输出:[4, 12, 34]

Numpy向量化运算(适合大数据量)

借助numpy的向量化特性,直接传入数组即可:

import numpy as np

c_array = np.array([1, 2, 3])
z_array = np.array([0, 1, 2])

results = objective(c_array, z_array)
print(results)  # 输出:array([ 4, 12, 34])

3. 可选:兼容scikit-learn的.predict方法

如果需要和sklearn生态兼容,可将函数封装为符合sklearn接口的估计器类:

from sklearn.base import BaseEstimator, RegressorMixin

class CustomFormulaPredictor(BaseEstimator, RegressorMixin):
    def fit(self, X, y=None):
        # 固定公式无需训练,直接返回实例
        return self
    
    def predict(self, X):
        # X需为二维数组,每行对应一组[C, Z]
        C = X[:, 0]
        Z = X[:, 1]
        return C**3 + Z**2 + 3

使用方式和sklearn模型一致:

# 构造输入数据
X = [[2, 3], [1, 0], [3, 2]]
predictor = CustomFormulaPredictor()
predictor.fit(X)
results = predictor.predict(X)
print(results)  # 输出:[20  4 34]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 12:10:17