Несоответствие функции прогнозирования XGBRegressor - PullRequest
0 голосов
/ 19 сентября 2018

Я хочу использовать XGBRegressor для прогнозирования некоторых данных.Поэтому я загружаю тренировочные данные и тестовые данные.

iowa_file_path = '../input/train.csv'
test_data_path = '../input/test.csv'

data = pd.read_csv(iowa_file_path)
test_data = pd.read_csv(test_data_path)

Содержимое данных

enter image description here

Содержимое test_data

enter image description here

Затем я выполняю некоторую очистку данных

data.dropna(axis=0, subset=['SalePrice'], inplace=True)
y = data.SalePrice
X = data.drop(['SalePrice'], axis=1).select_dtypes(exclude=['object'])

train_X, val_X, train_y, val_y = train_test_split(X.values, y.values, test_size =0.25)
my_imputer = SimpleImputer()
train_X = my_imputer.fit_transform(train_X)
val_X = my_imputer.transform(val_X)

my_model = XGBRegressor(n_estimators=100, learning_rate=0.1)
my_model.fit(train_X, train_y, early_stopping_rounds=None, 
    eval_set=[(val_X, val_y)], verbose=False)

test_data_process = test_data.select_dtypes(exclude=['object'])
predictions = my_model.predict(test_data_process)

Но я получаю следующее сообщение об ошибке при запуске функции predict:


ValueError Traceback (последний последний вызов) в () 1 test_data_process = test_data.select_dtypes (exclude = ['object']) ----> 2 предсказания = my_model.predict (test_data_process)

/ opt / conda / lib / python3.6 / site-packages / xgboost-0.80-py3.6.egg / xgboost / sklearn.py в предикате (self, data, output_margin, ntree_limit, validate_features) 395 output_margin= output_margin, 396 ntree_limit = ntree_limit, -> 397 validate_features = validate_features) 398 399 def применяются (self, X, ntree_limit = 0):

/ opt / conda / lib / python3.6 / site-packages/xgboost-0.80-py3.6.egg/xgboost/core.py в предикате (self, data, output_margin, ntree_limit, pred_leaf, pred_contribs, ок_контрibs, pred_interactions, validate_features) 1206 1207, если validate_features: -> 1208 self._validate_features (data) 1209 1210 length = c_bst_ulong ()

/ opt / conda / lib / python3.6 / site-packages / xgboost-0.80-py3.6.egg / xgboost / core.py в _validate_features (self, data) 1508 1509 повысить ValueError (msg.format (self.feature_names, -> 1510 data.feature_names)) 1511 1512 def get_split_value_histogram (self, feature,fmap = '', bins = None, as_pandas = True):

ValueError: несоответствие feature_names: ['f0', 'f1', 'f2', 'f3', 'f4', 'f5','f6', 'f7', 'f8', 'f9', 'f10', 'f11', 'f12', 'f13', 'f14', 'f15', 'f16', 'f17', 'f18',' F19 ',' F20 ',' F21 ',' F22 ',' F23 ',' F24 ',' F25 ',' F26 ',' F27 ',' F28 ',' F29 ',' F30 ','f31', 'f32', 'f33', 'f34', 'f35', 'f36'] ['Id', 'MSSubClass', 'LotFrontage', 'LotArea', 'GeneralQual', 'GeneralCond', 'YearBuilt »,« YearRemodAdd »,« MasVnrArea »,« BsmtFinSF1 »,« BsmtFinSF2 »,« BsmtUnfSF »,« TotalBsmtSF »,« 1stFlrSF »,« 2ndFlrSF »,« LowQualFaths BF », BFFfBath ',' FullBath ',' HalfBath ',' BedroomAbvGr ',' KitchenAbvGr ',' TotRmsAbvGrd ',' Камины ',' GarageYrBlt ',' GarageCars ',' GarageArea ',' WoodDeckSF ',' OpenPorchSP '' Encore, '3SsnPorch', 'ScreenPorch', 'PoolArea', 'MiscVal', 'MoSold', 'YrSold'] ожидаемые f9, f6, f14, f27, f18, f7, f8, f23, f17, f22, f35, f0,F28, F29, F20, F31, F36, F25, F11, F21, F12, F24, F34, F10, F5, F32, F15, F26, F1, F2, F16, F19, F3, F4, F33, F13 вучебные данные для входных данных не имели следующих полей: BsmtUnfSF, 1stFlrSF, LowQualFinSF, MSSubClass, WoodDeckSF, GrLivArea, MiscVal, YearBuilt, BsmtFinSF1, Fireplaces, MoSold, BsmtHalfBathFFBRFFFF, Half-Life-GFYF, Half-Life-GFYF, Half-Life-GFY, Id, EnclosedPorch, ScreenPorch, GarageArea, BsmtFullBath, MasVnrArea, TotRmsAbvGrd, TotalCond, BedroomAbvGr, GarageCars, OpenPorchSF, YearRemodAdd, TotalBsmtSF, BsmtFinSF2, Lot * 5 * 36 * 3, бесполезные * 10, 3-й, 3-й, 3-й, 3-й, 3-й, 3-й, 3-й, 3, 3, 3, 3, 3, 3, 3-й, 3тот У меня нет этих полей в данных обучения.Но когда я проверяю содержимое data, оно имеет эти столбцы.Как это решить?

1 Ответ

0 голосов
/ 19 сентября 2018

Просто чтобы закрыть вопрос:

Проблема в том, что SimpleImputer использовалось для данных обучения и проверки, но не для данных испытаний.

Обсуждение причин такой ошибки можно найти здесь: https://github.com/dmlc/xgboost/issues/2334#issuecomment-333195491

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...