我从一些回归器(例如,

voting_regressor = VotingRegressor(estimators=[('xg',xgbregressor),('gb',gradient_boosting_regressor),('et',extra_trees_regressor),('rf',random_forest_regressor)])voting_regressor.fit(X_train, y_train)

回归器在测试集上预测良好

y_pred = voting_regressor.predict(X_test)


但是当我尝试预测特定实例时

voting_regressor.predict(X_test.iloc[0].values.reshape(1,-1))


它显示以下错误


  ValueError:feature_names不匹配:['yearpublished','minplayers','maxplayers','playingtime','minplaytime','maxplaytime','minage','users_rated','total_owners','total_traders','total_wanters', 'total_wishers','total_comments','total_weights','average_weight'] ['f0','f1','f2','f3','f4','f5','f6','f7',' f8”,“ f9”,“ f10”,“ f11”,“ f12”,“ f13”,“ f14”]
  预期的users_rated,total_wishers,发布的年份,maxplayers,maxplaytime,total_owners,total_weights,average_weight,minplaytime,total_wanters,total_traders,游戏时间,minage,total_comments,minplayer在输入数据中
  训练数据没有以下字段:f9,f3,f13,f0,f8,f4,f14,f5,f2,f6,f12,f11,f7,f10,f1

最佳答案

当使用pandas.Series时(如果错误指示需要列名时),您将传递pandas.DataFrame而不是iloc

如果要返回一个示例的数据框,则可以用另一个列表包装它,如下所示:

voting_regressor.predict(X_test.iloc[[0]])


这样可以保留列名

您也可以简单地使用[0, 1, 2, 3]指定许多示例。

08-03 14:38