Вот картинка с моими данными, интересующий столбец RUL находится справа, имена были обрезаны (я использую набор данных деградации Turbo Engine от NASA), можно найти здесь: https://data.nasa.gov/widgets/vrks-gjie
Я делаю это в Azure ML Studio, но ниже приведен фрагмент кода, у меня есть 2 вспомогательные функции get_engine_last_cycle (которые, когда я выполняю модульное тестирование, похоже, работают должным образом - вычисляют последний цикл для этого механизма, например, двигатель 2 имеет максимумцикл в этом наборе данных 287, когда он терпит неудачу).Последняя вспомогательная функция, которую я вызываю get_engine_remainig_life, принимает двигатель и цикл в качестве аргументов и возвращает максимальный цикл - текущий цикл для этого двигателя (снова я проверил это на модульном уровне, и, похоже, он дает ожидаемые результаты).
По какой-то причине это не работает, когда я запускаю свой ноутбук.Столбец, который я называю «RUL», должен возвращать последовательность убывающих положительных целых чисел, например, 287, 286, 285, 284 и т. Д. Для механизма № 2.Тем не менее, это дает мне отрицательные значения.Я не могу понять, почему, но знаю, что проблема, вероятно, с этим одним куском кода
df['RUL'] = df[['engine', 'cycle']].apply(lambda x: get_engine_remaining_life(*x), axis=1)
def get_engine_last_cycle(engine):
return int(df.loc[engine, ['cycle']].max())
def get_engine_remaining_life(engine, cycle):
return get_engine_last_cycle(engine) - int(cycle)
df['RUL'] = df[['engine', 'cycle']].apply(lambda x: get_engine_remaining_life(*x), axis=1)
return df