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

SK-Learn高斯朴素贝叶斯预测报错:无法将字符串转为数值型

问题原因及解决办法

错误的核心是你构造的测试输入格式完全不对:

  • 训练模型时,传入的raw[['elo', 'opponent_rating', 'winner_loser_elo_diff']]是纯数值的特征矩阵(每行一个样本,每列对应一个特征的数值)
  • 但你写的test1 = [['elo', 1000], ['opponent_rating', 800], ['winner_loser_elo_diff', 200]]是包含列名字符串的结构,模型会把这些字符串当作特征值处理,自然无法转换成数值类型,触发报错。

正确的测试输入写法

写法1:纯数值二维数组(注意特征顺序和训练时一致)

test1 = [[1000, 800, 200]]
chess_gnb.predict(test1)

这里的子列表对应一个样本,三个数值依次对应elo、opponent_rating、winner_loser_elo_diff的取值,和训练时的特征列顺序必须完全匹配。

写法2:用DataFrame匹配列名(避免顺序错误)

如果怕记混特征顺序,可以用pandas构造带列名的DataFrame,模型会自动对应正确的特征:

import pandas as pd
test_df = pd.DataFrame({
    'elo': [1000],
    'opponent_rating': [800],
    'winner_loser_elo_diff': [200]
})
chess_gnb.predict(test_df)

另外说明,目标变量winner是字符串类型不影响这个错误,高斯朴素贝叶斯可以处理字符串类型的分类目标,问题完全出在测试输入的格式上。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 19:45:43