У меня есть индекс временного ряда с несколькими переменными и показаниями влажности. Я уже обучил модель машинного обучения предсказывать значения влажности на основе X, Y и Z. Теперь, когда я загружаю сохраненную модель с помощью pickle, я хотел бы заполнить недостающие значения влажности с помощью X, Y и Z. Однако он должен учтите тот факт, что сами по себе X, Y и Z не должны отсутствовать.
Time X Y Z Humidity
1/2/2017 13:00 31 22 21 48
1/2/2017 14:00 NaN 12 NaN NaN
1/2/2017 15:00 25 55 33 NaN
В этом примере последняя строка влажности будет заполнена с использованием модели. В то время как 2-я строка не должна предсказываться моделью, так как X и Z также отсутствуют.
Я пробовал это до сих пор:
with open('model_pickle','rb') as f:
mp = pickle.load(f)
for i, value in enumerate(df['Humidity'].values):
if np.isnan(value):
df['Humidity'][i] = mp.predict(df['X'][i],df['Y'][i],df['Z'][i])
* 1008 принимает от 2 до 5 позиционных аргументов, но было дано 6 », а также я не рассматривал значения столбцов X, Y и Z. Ниже приведен код, который я использовал для обучения модели и сохранения ее в файл:
df = df.dropna()
dfTest = df.loc['2017-01-01':'2019-02-28']
dfTrain = df.loc['2019-03-01':'2019-03-18']
features = [ 'X', 'Y', 'Z']
train_X = dfTrain[features]
train_y = dfTrain.Humidity
test_X = dfTest[features]
test_y = dfTest.Humidity
model = xgb.XGBRegressor(max_depth=10,learning_rate=0.07)
model.fit(train_X,train_y)
predXGB = model.predict(test_X)
mae = mean_absolute_error(predXGB,test_y)
import pickle
with open('model_pickle','wb') as f:
pickle.dump(model,f)
У меня не было ошибок во время обучения и сохранения модели.