多输出SVR调参后创建模型遇TypeError错误求助
修复多输出SVR模型创建的TypeError错误
错误原因
svr_regr是已经实例化完成的MultiOutputRegressor对象,并非可调用的类,直接以svr_regr(...)的方式传参调用会触发"object is not callable"错误。
修复方案
方案一:直接复用GridSearchCV的最优模型
GridSearchCV训练完成后,best_estimator_属性已经保存了调参后的最优模型,无需重新创建:
# 获取调参后的最优模型 SVR_model = svr_gs.best_estimator_ # 直接进行预测(svr_gs.fit已完成训练,也可根据需求重新调用fit) SVR_model_y_predict = SVR_model.predict(X_test)
方案二:手动重新实例化模型
如果需要手动构建模型,需先创建带最优参数的SVR实例,再传入MultiOutputRegressor:
# 先创建配置好最优参数的SVR实例 svr_opt = SVR(kernel='rbf', C=10, coef0=0.01, degree=3, gamma='auto', tol=1e-6, random_state=42) # 基于该SVR实例创建MultiOutputRegressor SVR_model = MultiOutputRegressor(svr_opt) # 训练模型 SVR_model.fit(X_train, y_train) # 执行预测 SVR_model_y_predict = SVR_model.predict(X_test)
补充说明
- 调参时使用
estimator__前缀,是因为GridSearchCV需要指定嵌套模型(MultiOutputRegressor内部的SVR)的参数;但手动创建模型时,直接给SVR类传参即可,不需要加该前缀。 - 方案一更高效,因为已经借助GridSearchCV完成了模型训练,无需重复执行训练流程。
内容的提问来源于stack exchange,提问作者Z47
相关产品推荐
相关产品推荐

