XGBoost模型训练报错:ValueError: Invalid classes inferred from unique values of y

在使用XGBoost进行分类模型训练时,你可能会遇到以下错误信息:

ValueError: Invalid classes inferred from unique values of `y`.  Expected: [0 1], got [2 4]

错误原因

这个错误信息表明,你提供给XGBoost模型的标签数据y的取值范围与模型预期不符。具体来说,模型预期标签数据的取值为0或1,但实际获取到的标签数据取值为2或4。

解决方法

要解决这个问题,你需要检查数据集中类别标签的取值范围,并将其转换为模型期望的取值范围 (0 或 1)。

你可以使用pandas库中的replace()方法进行转换,例如:

import pandas as pd

# 假设你的数据存储在名为'data'的DataFrame中,类别标签存储在'类别'列
data = pd.DataFrame({'类别': [2, 4, 2, 4]})  # 示例数据

# 将类别2转换为0,将类别4转换为1
data['类别'] = data['类别'].replace({2: 0, 4: 1})

# 现在,你的'类别'列的取值范围为[0, 1]
print(data)

在进行标签转换后,再次运行你的XGBoost模型训练代码,应该就不会再出现这个错误了。

总结

在进行机器学习模型训练时,确保数据预处理正确至关重要。及时检查和处理数据中的异常值和不一致性,可以避免很多潜在的错误和问题。


原文地址: http://www.cveoy.top/t/topic/f1Za 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录