我已经使用XGBoost创建了机器学习模型并将其保存到文件中。现在,当我要进行预测时,我正在加载模型,并如下初始化我的LabelEncoder对象。
my_classes = ['rp12', 'rp15', 'rp16', 'rp24', 'rp27', 'rp3', 'rp32', 'rp4', 'rp6']
le1 = LabelEncoder()
le1.fit(my_classes)
bst1 = xgb.Booster({'nthread':4}) #init model
bst1.load_model("0001.model")
data = [0,97.0,155,143,98,145,102,102,144,100,96,193,90,98,98,122,101,101,101,98,99,96,118,148,98,99,112,94,98,100,96.0,95]
data = [float(val) for val in data]
dtest = xgb.DMatrix(data)
test_pred = bst1.predict(dtest)
test_label = np.argmax(test_pred, axis=1)
final_pred = le1.inverse_transform(test_label)
问题: 1)我手动设置课程,而在培训期间,则通过传递标记的数据“ train_Y”来完成。有什么方法可以在训练期间保存LabelEncoder对象并在预测期间使用?腌制解决方案还是有什么更好的选择?
2)在初始化模型时,需要指定哪些所有参数?是否需要nthread?不能从保存的模型中读取它吗?
3)如果输入值为整数,则我的预测无效。一旦转换为浮点(data = [float(val) for val in data]
),它就可以正常工作。这是必要步骤吗?在训练期间,我只使用了int值。但是,在模型转储中,我看到浮点值发生拆分。也许这就是为什么在预测时,输入需要浮动。有人可以指出我可以进一步阐明这种行为的材料吗?
谢谢。