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

使用变量传递特征触发ValueError,直接传入则正常的问题排查

PartialDependenceDisplay调用时的ValueError问题解决方法

错误原因

你代码里的features = [ftrs]会将传入的特征列表再嵌套一层,形成二维列表。而PartialDependenceDisplay.from_estimator对features参数的要求是:每个元素要么是单个特征(字符串名称或整数索引),要么是最多包含2个特征的可迭代对象(用于绘制二维偏依赖图)。你传入的嵌套列表中,每个元素是包含8个特征的长列表,违反了参数限制,因此触发ValueError。

解决方案

直接将传入的ftrs赋值给features,不需要额外嵌套:

a=['MedInc', 'HouseAge', 'AveRooms', 'AveBedrms', 'Population', 'AveOccup', 'Latitude', 'Longitude']

def modell(data, metka, ftrs):
    X = data.drop([metka], axis=1)
    y = data[metka]
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3, random_state = 0)
    model = XGBRegressor()
    model.fit(X_train, y_train)
    y_pred = model.predict(X)
    print('OK')

    # 移除多余的嵌套,直接使用传入的特征列表
    features = ftrs  
    disp = PartialDependenceDisplay.from_estimator(model, X, features=features, kind='average')
    return 'NICE'

补充说明

当你直接在代码中写特征列表(比如features=['MedInc', ...])时,这是一维列表,每个元素都是单个字符串特征,完全符合参数要求;但用[ftrs]会把它包装成二维列表,导致每个元素是一个长列表,触发参数校验错误。

内容的提问来源于stack exchange,提问作者Антон Конов

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 02:45:17