| import pandas as pd |
| import numpy as np |
| from catboost import CatBoostClassifier |
| from pathlib import Path |
|
|
|
|
| |
| def predict(dataframe): |
| dataframe = dataframe.replace(r'^\s*-', np.nan, regex=True) |
|
|
| dataframe.reset_index(drop=True, inplace=True) |
|
|
| dataframe.drop_duplicates(inplace=True) |
|
|
| data_time = dataframe['Дата и время'] |
|
|
| dataframe.drop(columns=['Дата и время', 'iButton2', 'Нагрузка на двигатель, %', 'Крутящий момент (spn513), Нм', |
| 'Положение рейки ТНВД (spn51), %', 'Расход топлива (spn183), л/ч', |
| 'ДВС. Температура наддувочного воздуха, °С', |
| 'Давление наддувочного воздуха двигателя (spn106), кПа', 'Текущая передача (spn523)', |
| 'Температура масла гидравлики (spn5536), С', 'Педаль слива (spn598)'], inplace=True) |
|
|
| dataframe.drop(['Нейтраль КПП (spn3843)', 'Стояночный тормоз (spn3842)', |
| 'Аварийная температура охлаждающей жидкости (spn3841)', 'Засоренность воздушного фильтра (spn3840)', |
| 'Засоренность фильтра КПП (spn3847)', 'Аварийное давление масла ДВС (spn3846)', |
| 'Засоренность фильтра ДВС (spn3845)', |
| 'Засоренность фильтра рулевого управления (spn3844)', |
| 'Засоренность фильтра навесного оборудования (spn3851)', |
| 'Недопустимый уровень масла в гидробаке (spn3850)', |
| 'Аварийная температура масла в гидросистеме (spn3849)', |
| 'Аварийное давление в I контуре тормозной системы (spn3848)', |
| 'Аварийное давление в II контуре тормозной системы (spn3855)', |
| 'Зарядка АКБ (spn3854)', 'Отопитель (spn3853)', |
| 'Выход блока управления двигателем (spn3852)', |
| 'Включение тормозков (spn3859)', 'Засоренность фильтра слива (spn3858)', |
| 'Аварийное давление масла КПП (spn3857)', |
| 'Аварийная температура масла ДВС(spn3856)', |
| 'Неисправность тормозной системы (spn3863)', 'Термостарт (spn3862)', |
| 'Разрешение запуска двигателя (spn3861)', 'Низкий уровень ОЖ (spn3860)', |
| 'Аварийная температура масла ГТР (spn3867)', |
| 'Необходимость сервисного обслуживания (spn3866)', |
| 'Подогрев топливного фильтра (spn3865)', 'Вода в топливе (spn3864)', |
| 'Холодный старт (spn3871)'], axis=1, inplace=True) |
|
|
| dataframe = dataframe.astype(str) |
|
|
| dataframe["Сост.пед.сцепл."] = dataframe["Сост.пед.сцепл."].astype(bool) |
|
|
| dataframe['Обор.двиг.,об/мин'] = dataframe['Обор.двиг.,об/мин'].str.replace(',', '.').astype(float) |
|
|
| dataframe['Значение счетчика моточасов, час:мин'] = dataframe['Значение счетчика моточасов, час:мин'].str.replace( |
| ':', '').astype(float) |
|
|
| dataframe['Сост.пед.сцепл.'] = dataframe['Сост.пед.сцепл.'].replace(',', '.').astype(float) |
| dataframe['Сост.пед.сцепл.'] = dataframe['Сост.пед.сцепл.'].astype(str) |
|
|
| dataframe['Полож.пед.акселер.,%'] = dataframe['Полож.пед.акселер.,%'].str.replace(',', '.').astype(float) |
|
|
| dataframe['Темп.масла двиг.,°С'] = dataframe['Темп.масла двиг.,°С'].str.replace(',', '.').astype(float) |
|
|
| dataframe['КПП. Температура масла'] = dataframe['КПП. Температура масла'].astype(float) |
|
|
| model = CatBoostClassifier() |
|
|
| model.load_model(Path().joinpath(*['forecasting', 'model.cbm'])) |
|
|
| dataframe['predict'] = model.predict(dataframe) |
|
|
| dataframe['datetime'] = data_time |
|
|
| return dataframe |
|
|