Профилактическое обслуживание.

Профилактическое обслуживание - это процесс, который помогает нам узнать оставшийся срок службы или статус неисправности в ближайшие дни. Таким образом, мы можем начать профилактическое обслуживание и сэкономить время и средства от любых серьезных проблем.

«Он автоматизирует механизм выявления потенциального отказа оборудования и может рекомендовать действия для решения проблемы».

Машины заменяют человека и могут работать быстрее и точнее. Но он требует технического обслуживания, и отказ может остановить сборочную линию или может повлиять на весь процесс, чтобы остановить. Чтобы избежать такой ситуации, в эту область приходит искусственный интеллект, который помогает нашим сотрудникам следить за производительностью и останавливать работу, проводить профилактическое обслуживание и экономить время и деньги.

ИИ совершает революцию в этой области, где мы можем определить, остановится ли какая-либо машина по какой-либо причине. В промышленности мы можем прогнозировать утечку газа, изучая трубы, аварии можно предотвращать, используя исторические данные машины, чтобы найти закономерность и спрогнозировать будущую проблему, чтобы сэкономить деньги и человеческие жизни.

Данные

Очень важная и важная часть в этой теме - данные. Чем больше у нас правильных и актуальных данных по нашей проблеме, тем ближе мы ответим на наш вопрос. Мы можем использовать доступный набор данных с открытым исходным кодом для начальной фазы и можем использовать наш собственный набор данных для конкретной проблемы.

Как мы можем найти лучшие данные для нашей проблемы?

Нам нужно изучить нашу проблему. Развивайте понимание того, на что мы стремимся ответить. Акционеры в проблеме. Что касается данных, мы должны убедиться, что мы собираемся потратить больше времени на эту часть. Для большей точности и надежных результатов нам нужны точные и актуальные данные. Это могут быть данные датчиков временных рядов, подробные отчеты, данные из прошлого анализа. Достоверность и детализация данных - это преимущество нашего проекта.

«Наша модель будет не хуже наших данных»

Например, если мы хотим спрогнозировать любой отказ автомобиля, чтобы избежать аварии, нам нужно изучить данные его датчиков как можно больше. Это помогает понять обычную рутинную аналитику и поведение или транспортное средство, а также влияние различных показаний (с датчика) на фактическую производительность транспортного средства. Та же логика может быть применена к различным отраслевым решениям, таким как прогнозирование отказов трансформатора и т. Д.

Как работает профилактическое обслуживание в Transformer.

Автомобильные датчики подключены к модели машинного обучения и непрерывно отправляют данные временных рядов в реальном времени. Модель обучается на исторических данных для данного варианта использования и способна предсказать любую аномалию до того, как она повлияет на характеристики вашего автомобиля. Рекомендация может быть предупреждением, указанием узнать нашего акционера о своевременном профилактическом обслуживании.

Цель.

Следуя этому подходу, мы можем достичь двух вещей.
1. Уберечь наш актив от сбоев и получить профилактическое обслуживание.

2. Во-вторых, мы можем спрогнозировать оставшийся срок полезного использования, то есть сколько времени эта машина может работать должным образом.

Машинное обучение.

У нас есть данные, поэтому нам нужно только вычислить, чтобы найти закономерность или выявить аномалию в нашем сценарии. Модели машинного обучения помогают нам выполнять нашу работу очень эффективно.

«Мы можем предсказать статус отказа, используя алгоритмы классификации.

Мы можем предсказать оставшийся срок полезного использования, используя методы регрессии ».

Профилактическое обслуживание с использованием LSTM.

В этом примере вы можете использовать свой собственный набор данных. Если ваша целевая переменная «Неисправна» будет двоичной (1,0). Входной обучающий набор «X» может иметь разные особенности с числовыми данными.

импортировать панд как pd

импортировать numpy как np

из sklearn.preprocessing import MinMaxScaler

из sklearn.metrics импортировать confusion_matrix, precision_score

из keras.models импорт Последовательный

from keras.layers import Dense, Dropout, LSTM, Activation

из keras.callbacks import EarlyStopping

импортировать matplotlib.pyplot как plt

plt.style.use ("ggplot")

% matplotlib встроенный

features_col_name = ['Meter_No', 'KVA Rating', 'month', 'Current_L1', 'Current_L2',
'Current_L3', 'Voltage_L1', 'Voltage_L2', 'Voltage_L3', 'PF_L1',
'PF_L2', 'PF_L3', 'Avg_Current', 'Avg_Voltage', 'Average_PF',
'Avg KVA Monthly', 'Avg Peaks Amps', 'Current_Unb', 'DTS_jobs']

target_col_name = ’Неисправный’

sc = MinMaxScaler ()
df_train [features_col_name] = sc.fit_transform (df_train [features_col_name])
df_test [features_col_name] = sc.transform (df_test [features_col_name])

def gen_sequence (id_df, seq_length, seq_cols):
df_zeros = pd.DataFrame (np.zeros ((seq_length-1, id_df.shape [1])), columns = id_df.columns)
id_df = df_zeros.append (id_df, ignore_index = True)
data_array = id_df [seq_cols] .values ​​
num_elements = data_array.shape [0]
lstm_array = []
для запуска, остановки в zip (диапазон (0, num_elements-seq_length), range (seq_length, num_elements)):
lstm_array.append (data_array [start: stop,:])
return np.array (lstm_array)

# функция для генерации меток
def gen_label (id_df, seq_length, seq_cols, label):
df_zeros = pd.DataFrame (np.zeros ((seq_length-1, id_df.shape [1])), columns = id_df.columns)
id_df = df_zeros.append (id_df, ignore_index = True)
data_array = id_df [seq_cols] .values ​​
num_elements = data_array.shape [0]
y_label = []
для запуска, остановки в zip (диапазон (0, num_elements-seq_length), range (seq_length, num_elements)):
y_label.append (id_df [label] [stop])
вернуть np.array (y_label)

# отметка времени или размер окна
seq_length = 50
seq_cols = features_col_name

X_train = np.concatenate (list (list (gen_sequence (df_train [df_train ['month'] == id], seq_length, seq_cols)) для идентификатора в df_train ['month']. Unique ()))
print (X_train.shape)
# генерировать y_train
y_train = np.concatenate (list (list (gen_label (df_train [df_train ['month'] == id], 50, seq_cols, 'Faulty')) для идентификатора в df_train ['month']. unique ()))
print (y_train.shape)

# генерировать X_test
X_test = np.concatenate (list (list (gen_sequence (df_test [df_test ['month'] == id], seq_length, seq_cols)) для id в df_test ['month']. unique () ))
print (X_test.shape)
# генерировать y_test
y_test = np.concatenate (list (list (gen_label (df_test [df_test ['month'] == id], 50, seq_cols, 'Ошибка')) для идентификатора в df_test ['month']. unique ()))
print (y_test.shape)

nb_features = X_train.shape [2]
timestamp = seq_length

model = Последовательный ()

model.add (LSTM (
input_shape = (timestamp, nb_features),
units = 100,
return_sequences = True))
model.add (Dropout (0.2))

model.add (LSTM (
units = 50,
return_sequences = False))
model.add (Dropout (0.2))

model.add (Dense (units = 1, activate = ’sigmoid’))
model.compile (loss = ’binary_crossentropy’, optimizer = ’adam’, metrics = [‘precision’])

model.summary ()

model.fit (X_train, y_train, epochs = 100, batch_size = 200, validation_split = 0.05, verbose = 1,
callbacks = [EarlyStopping (monitor = 'val_loss', min_delta = 0, терпение = 0, подробное = 0) , mode = 'auto')])

# метрики обучения
scores = model.evaluate (X_train, y_train, verbose = 1, batch_size = 200)
print (‘Accurracy: {}’. format (scores [1]))

y_pred = model.predict_classes (X_test)
print ('Точность модели на тестовых данных:', precision_score (y_test, y_pred))
print ('Матрица путаницы: \ n', confusion_matrix (y_test, y_pred ))

Логистическая регрессия

# удалить ошибочный столбец, чтобы назначить его X
X = df.drop ('Faulty', axis = 1)
X.Meter_No = pd.to_numeric (X.Meter_No)
# assign faulty colmn в y целевую переменную
y = df ['Faulty']

X_train, X_test, y_train, y_test = train_test_split (X, y, test_size = 0,3, random_state = 100)

# Объект модели
log_reg = LogisticRegression ()
# Подобрать модель на обучающем наборе
log_reg.fit (X_train, y_train)
# прогнозировать результаты на тестовом наборе
y_pred = log_reg.predict (X_test)
# вычислить оценку f1 (разница между нашим прогнозом и фактическим набором тестов.)
f1score = f1_score (y_test, y_pred, average = 'weighted')
print («Логистическая регрессия f1_score:% f»% f1score)

cnf_matrix = metrics.confusion_matrix (y_test, y_pred)
cnf_matrix

Классификатор случайных лесов.

# Создаем объект RandomClassifier
rfc = RandomForestClassifier (class_weight = "сбалансированный")

# Установите модель на x_train, y_train. Мы протестировали вес класса как сбалансированный.
rfc.fit (X_train, y_train)

# Предсказать модель, при тестировании установить X_test
rfc_predict = rfc.predict (X_test)
rfc_predict

Деревья решений

def splitdataset (balance_data):

X = df.iloc [:, 0:19]
Y = df.iloc [:, - 1]
# Разбиение набора данных на обучать и тестировать
X_train, X_test, y_train, y_test = train_test_split (
X, Y, test_size = 0.3, random_state = 100)

вернуть X, Y, X_train, X_test, y_train, y_test

# Функция для выполнения обучения с помощью giniIndex.
def train_using_gini (X_train, X_test, y_train):

# Создание объекта классификатора
clf_gini = DecisionTreeClassifier (criterion = «gini», random_state = 100, max_depth = 3, min_samples_leaf = 5)

# Выполнение тренировки
clf_gini.fit (X_train, y_train)
return clf_gini

# Функция для выполнения тренировки с энтропией.
def tarin_using_entropy (X_train, X_test, y_train):

# Дерево решений с энтропией
clf_entropy = DecisionTreeClassifier (
критерий = «энтропия», random_state = 100, < br /> max_depth = 3, min_samples_leaf = 5)

# Выполнение тренировки
clf_entropy.fit (X_train, y_train)
return clf_entropy

# Функция для прогнозирования
def prediction (X_test, clf_object):

# Predicton при тестировании с giniIndex
y_pred = clf_object.predict (X_test)
print (« Прогнозируемые значения: ”)
print (y_pred)
return y_pred

# Функция для вычисления точности
def cal_accuracy (y_test, y_pred):

print («Матрица неточностей:«,
confusion_matrix (y_test, y_pred))

print («Accuracy:»,
precision_score (y_test, y_pred) * 100) < br />
print («Отчет:«,
отчет_классификации (y_test, y_pred))

# Код драйвера
def main ():

# Этап сборки
#data = importdata ()
X, Y, X_train, X_test, y_train, y_test = splitdataset (df)
clf_gini = train_using_gini (X_train, X_test, y_train)
clf_entropy = tarin_using_entropy (X_train, X_test, y_train)

# Операционная фаза
print («Результаты Использование индекса Джини: ”)

# Прогноз с использованием джини
y_pred_gini = prediction (X_test, clf_gini)
cal_accuracy (y_test, y_pred_gini)

# Вызов основной функции
if __name __ == ”__ main__”:
main ()

Вывод

Мы экспериментировали с LSTM, случайными лесами, деревьями решений и логистической регрессией, чтобы предсказать статус нашего актива. Где Faulty - наша целевая переменная (0,1). Данные временных рядов действительно полезны и обеспечивают точные результаты в этих решениях.

Давайте подключимся к Instagram iamjunaidrana или Fiverr.