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

使用ktrain结合Pandas DataFrame运行BERT模型时遇报错求助

问题

尝试使用ktrain微调BERT模型,用train_df这个Pandas DataFrame存储数据,执行了拆分数据的代码:

x_train, x_val, y_train, y_val = train_test_split(train_df['text'], train_df['target'], shuffle=True, test_size = 0.2, random_state=random_seed, stratify=train_df['target'])

接着用texts_from_array函数转换BERT特征时触发ValueError: x_train must be a list or NumPy array,执行的代码如下:

(x_train_bert,  y_train_bert), (x_val_bert, y_val_bert), preproc = text.texts_from_array(x_train=x_train, y_train=y_train,                                                                                         
                                                                                         x_test = x_val, y_test=y_val,
                                                                                          class_names= ["0", "1"],
                                                                                          preprocess_mode='bert',
                                                                                          lang = 'en',
                                                                                          maxlen=65,
                                                                                          max_features=35000)

请问遗漏了什么?

解决方案

问题出在train_test_split返回的x_train、x_val、y_train、y_val是Pandas Series对象,而texts_from_array要求输入必须是列表或NumPy数组。

解决方法很简单,把这些Series转换成列表或NumPy数组即可:

  • 转换成列表:调用.tolist()方法
  • 转换成NumPy数组:使用.values属性或.to_numpy()方法

修改后的代码示例(转成列表)

(x_train_bert,  y_train_bert), (x_val_bert, y_val_bert), preproc = text.texts_from_array(
    x_train=x_train.tolist(), 
    y_train=y_train.tolist(),
    x_test=x_val.tolist(), 
    y_test=y_val.tolist(),
    class_names=["0", "1"],
    preprocess_mode='bert',
    lang='en',
    maxlen=65,
    max_features=35000
)

修改后的代码示例(转成NumPy数组)

(x_train_bert,  y_train_bert), (x_val_bert, y_val_bert), preproc = text.texts_from_array(
    x_train=x_train.values, 
    y_train=y_train.values,
    x_test=x_val.values, 
    y_test=y_val.values,
    class_names=["0", "1"],
    preprocess_mode='bert',
    lang='en',
    maxlen=65,
    max_features=35000
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 00:41:14