自定义预测函数无法调用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
相关产品推荐
相关产品推荐

