python - Python xgb:ValueError:“feature_names 不匹配”
问题描述
我正在尝试学习 XGBoost 的基础知识,并设计了一个脚本来拆分我在 Kaggle 上找到的有关中国冠状病毒爆发的一些数据。代码和模型有效,但由于某些原因,当我使用模型进行新预测时,我得到“ValueError:feature_names mismatch”。新的测试数据有一个包含 2 个值的二维数组,就像测试数据一样,但我仍然得到一个值错误。
train = df[['RegionCode','ProvinceCode']].astype(int)
test = df['infected'].astype(int)
X_test, X_train, y_test, y_train = train_test_split(train, test, test_size=0.2, random_state=42)
train = xgb.DMatrix(X_train, label=y_train)
test = xgb.DMatrix(X_test, label=y_test)
param = {
'max_depth':4,
'eta':0.3,
'num_class': 2}
epochs = 10
model = xgb.train(param, train, epochs)
上面的所有代码都有效,但下面的测试给了我错误:
testArray=np.array([[13, 67]])
test_individual = xgb.DMatrix(testArray)
print(model.predict(test_individual))
知道我做错了什么吗?
解决方案
似乎您错过了使用 sklearn 的 train_test_split 函数的基础知识。
X_test, X_train, y_test, y_train = train_test_split(train, test, test_size=0.2, random_state=42)
上面的行期望训练具有用于训练的所有特征,而测试期望目标特征。
尝试先修复它。
推荐阅读
- python - 从列表中选择 3 个随机项目
- c# - 如何在不重新启动应用程序的情况下添加或更新身份提供者详细信息?
- c++ - 读取结构数组上的二进制文件时出现分段错误
- python - 在 Input() 中查找是否列表
- python - 为什么此代码适用于索引超过 16 的任何字母?
- javascript - 从混合字符串/JSON 数据中提取特定变量
- amazon-web-services - AWS Cloudformation - 在 EFS 中创建初始文件夹
- java - 参数化类型的直接超类型集是否应该包含它?
- html - Bootstrap 交叉淡入淡出轮播 - 不同的数据间隔问题
- reactjs - React 美丽的 DND - 在 Droppable 之间自动滚动