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

Python执行前向逐步特征选择时遇TypeError问题求助

前向逐步特征选择报错解决

错误根源

你遇到的TypeError: 'numpy.float64' object is not callable,本质是命名冲突:代码里的auc被当成变量赋值成了浮点数,而非原本用来计算AUC的函数。当你尝试用auc(...)调用时,自然会报错——浮点数不能当函数用。

另外你的next_best函数还有两个明显逻辑bug:

  • 函数里没定义next_var就直接return(next_var),运行到这会触发未定义变量错误
  • 循环里刚找到一个比当前最优AUC高的特征就立刻return,根本没遍历完所有候选变量,选出来的不是全局最优特征

修复步骤

1. 解决auc命名冲突

检查代码所有地方,把用auc当变量名的地方改掉(比如改成auc_score),确保auc指向的是计算AUC的函数(比如sklearn.metrics.roc_auc_score)。

2. 重写next_best函数逻辑

修正循环和return逻辑,遍历完所有候选特征再返回最优的那个,同时补全AUC计算的完整流程(原代码里的auc函数没实现,这里用sklearn的标准流程示例):

def next_best(current_var, candidate_var, target, Revised_Basetable):
    best_auc = -1
    best_var = None
    # 遍历所有候选特征
    for v in candidate_var:
        # 取出当前特征组合对应的数据集
        selected_features = Revised_Basetable[current_var + [v]]
        # 用逻辑回归训练模型(你也可以换成其他模型)
        from sklearn.linear_model import LogisticRegression
        from sklearn.metrics import roc_auc_score
        model = LogisticRegression(max_iter=1000)
        model.fit(selected_features, target)
        # 预测概率并计算AUC
        y_pred_proba = model.predict_proba(selected_features)[:, 1]
        auc_v = roc_auc_score(target, y_pred_proba)
        
        # 更新最优特征
        if auc_v >= best_auc:
            best_auc = auc_v
            best_var = v
    # 遍历完所有特征后返回最优的那个
    return best_var

3. 修正主循环调用逻辑

确保初始变量正确,同时避免迭代次数超过候选特征数量:

# 初始化:current_var为空,candidate_var是所有待选特征
current_var = []
candidate_var = Revised_Basetable.columns.drop(target).tolist()
# 迭代次数取26和候选特征数的较小值,防止索引越界
number_iterations = min(26, len(candidate_var))

for i in range(number_iterations):
    next_var = next_best(current_var, candidate_var, target, Revised_Basetable)
    if not next_var:
        break  # 没有更优特征时提前终止循环
    current_var.append(next_var)
    candidate_var.remove(next_var)

额外提醒

  • 确保Revised_Basetable是合法的DataFrame,所有特征列都是数值型(非数值特征要先做编码处理,比如独热编码)
  • 如果你的auc是自定义函数,要保证它的参数格式和调用逻辑匹配,建议优先用sklearn的标准函数减少自定义bug

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 15:36:20