Практическая работа 丨 Прогнозирование отказа жесткого диска на основе алгоритма случайного леса

машинное обучение

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

Эта статья опубликована в сообществе HUAWEI CLOUD.«Прогнозирование отказа жесткого диска на основе алгоритма случайного леса», Автор оригинала: Свет гор и морей.

Экспериментальная цель

1. Освоить базовый процесс использования методов машинного обучения для обучения моделей;

2. Освоить основные методы использования панд для анализа данных;

3. Освоить метод использования scikit-learn для построения, обучения, сохранения, загрузки, прогнозирования, индекса статистической точности и просмотра матрицы путаницы модели случайного леса;

Введение в содержание дела

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

Жизненный цикл механических жестких дисков обычно составляет от 3 до 5 лет, а частота отказов значительно возрастает через 2–3 года, что приводит к резкому увеличению количества замен дисков. По статистике, среди отказов серверного оборудования отказы жесткого диска составляют 48%+, что является важным фактором, влияющим на надежность работы серверов. Еще в 1990-х годах люди поняли, что ценность данных гораздо выше, чем ценность самого жесткого диска, и они жаждали технологии, которая могла бы предсказать отказ жестких дисков и обеспечить относительно безопасную защиту данных, поэтому технология SMART возник.

S.M.A.R.T., полное название «Технологии самоконтроля, анализа и отчетности», а именно «Технология самоконтроля, анализа и отчетности», представляет собой автоматическое определение состояния жесткого диска, систему раннего предупреждения и спецификацию. Контролируйте, записывайте и сравнивайте условия работы оборудования жесткого диска, такого как магнитные головки, пластины, двигатели и схемы, с предустановленными значениями безопасности, установленными производителем с помощью инструкций по обнаружению в оборудовании жесткого диска. значения безопасности, аппаратное или программное обеспечение мониторинга хоста может автоматически предупреждать пользователя и выполнять незначительный автоматический ремонт, чтобы заранее обеспечить безопасность данных на жестком диске. За исключением некоторых жестких дисков, которые поставлялись очень рано, большинство жестких дисков теперь оснащены этой технологией. Для получения дополнительной информации об этой технологии ознакомьтесь с S.M.A.R.T. — энциклопедией Baidu.

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

В этом случае вам потребуется использовать набор данных S.M.A.R.T. с открытым исходным кодом и алгоритм случайного леса в машинном обучении для обучения модели прогнозирования отказа жесткого диска и проверки эффекта.

Теоретическое объяснение алгоритма случайного леса см.это видео.

Меры предосторожности

1. Если вы используете JupyterLab впервые, см.«Руководство пользователя ModelAtrs JupyterLab»понять, как им пользоваться;

2. Если вы столкнулись с ошибкой при использовании JupyterLab, см.«Часто задаваемые вопросы о ModelAtrs JupyterLab»Попробуйте решить проблему.

Экспериментальная процедура

1. Введение в набор данных

Набор данных, используемый в этом случае, представляет собой набор данных с открытым исходным кодом от Backblaze, поставщика услуг резервного копирования компьютеров и облачных хранилищ. С 2013 года Backbreze ежегодно публикует данные журналов S.M.A.R.T. жестких дисков, используемых в их центрах обработки данных, эффективно продвигая использование методов машинного обучения для прогнозирования отказов жестких дисков.

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

Примечание. Код для загрузки данных на этом этапе должен находиться в HUAWEI CLOUD.ModelArts Codelabзапускать на

import os
import moxing as mox
if not os.path.exists('./dataset_2020.zip'):
    mox.file.copy('obs://modelarts-labs-bj4/course/ai_in_action/2021/machine_learning/hard_drive_disk_fail_prediction/dataset_2020.zip', './dataset_2020.zip')
    os.system('unzip dataset_2020.zip')

if not os.path.exists('./dataset_2020'):
    raise Exception('错误!数据不存在!')

!ls -lh ./dataset_2020
INFO:root:Using MoXing-v1.17.3-
INFO:root:Using OBS-Python-SDK-3.20.7
total 102M
-rw-r--r-- 1 ma-user ma-group  51M Mar 21 11:56 2020-12-08.csv
-rw-r--r-- 1 ma-user ma-group  51M Mar 21 11:56 2020-12-09.csv
-rw-r--r-- 1 ma-user ma-group 1.2M Mar 21 11:55 dataset_2020.csv
-rw-r--r-- 1 ma-user ma-group 3.5K Mar 22 15:59 prepare_data.py

Интерпретация данных:

2020-12-08.csv: данные журнала S.M.A.R.T. за 08.12.2020 извлечены из набора данных за четвертый квартал 2020 г., выпущенного компанией backblaze.

2020-12-09.csv: данные журнала S.M.A.R.T. за 9 декабря 2020 г. извлечены из набора данных за 4 квартал 2020 г., выпущенного компанией backblaze.

dataset_2020.csv: Обработанные данные журнала S.M.A.R.T. за весь 2020 год. В следующем разделе «2.6 Анализ баланса категорий» объясняется, как получить эту часть данных.

prepare_data.py: запуск этого скрипта загрузит данные журнала S.M.A.R.T. за весь 2020 год и обработает их, чтобы получить dataset_2020.csv. Для запуска скрипта требуется 20 ГБ локального хранилища.

2. Анализ данных

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

2.1 Чтение CSV-файла

pandas — широко используемый модуль анализа данных Python, мы сначала используем его для загрузки файла csv в набор данных. Взяв в качестве примера 2020-12-08.csv, мы сначала загружаем файл для анализа данных журнала S.M.A.R.T.

import pandas as pd
df_data = pd.read_csv("./dataset_2020/2020-12-08.csv")
type(df_data)
pandas.core.frame.DataFrame

2.2 Просмотр размера данных одного CSV-файла

print('单个csv文件数据的规模,行数:%d, 列数:%d' % (df_data.shape[0], df_data.shape[1]))
单个csv文件数据的规模,行数:162008, 列数:149

2.3 Просмотрите первые 5 строк данных

После использования pandas для загрузки csv вы получаете объект DataFrame, который можно понимать как таблицу, вызовите функцию head() объекта, вы можете просмотреть первые 5 строк данных в таблице.

df_data.head()

5 rows × 149 columns

Как показано выше, это первые 5 строк данных в таблице, заголовок — это имя атрибута, а значение атрибута находится под именем атрибута.Веб-сайт backblaze объясняет значение значения атрибута, которое переводится следующим образом:

2.4 Просмотр статистических показателей данных

После просмотра первых 5 строк данных в таблице вызываем функцию description() объекта DataFrame для расчета статистических показателей табличных данных

df_data.describe()

8 rows × 146 columns

Как показано выше, это статистические показатели табличных данных.Функция description() выполняет статистический анализ по столбцам числового типа по умолчанию.Статистика отсутствует.

Значение каждой строки статистических показателей поясняется следующим образом:
count: сколько ненулевых значений имеет столбец
среднее значение: среднее значение столбца
std: стандартное отклонение значений в этом столбце
min: минимальное значение значения столбца
25%: медианное значение 25% от значения столбца.
50%: 50% медиана значения столбца
75%: медианное значение 75% значения столбца.
max: максимальное значение значения столбца

2.5 Проверка нулевого значения данных

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

df_data.isnull().sum()
date                         0
serial_number                0
model                        0
capacity_bytes               0
failure                      0
smart_1_normalized         179
smart_1_raw                179
smart_2_normalized      103169
smart_2_raw             103169
smart_3_normalized        1261
smart_3_raw               1261
smart_4_normalized        1261
smart_4_raw               1261
smart_5_normalized        1221
smart_5_raw               1221
smart_7_normalized        1261
smart_7_raw               1261
smart_8_normalized      103169
smart_8_raw             103169
smart_9_normalized         179
smart_9_raw                179
smart_10_normalized       1261
smart_10_raw              1261
smart_11_normalized     161290
smart_11_raw            161290
smart_12_normalized        179
smart_12_raw               179
smart_13_normalized     161968
smart_13_raw            161968
smart_15_normalized     162008
                         ...  
smart_232_normalized    160966
smart_232_raw           160966
smart_233_normalized    160926
smart_233_raw           160926
smart_234_normalized    162008
smart_234_raw           162008
smart_235_normalized    160964
smart_235_raw           160964
smart_240_normalized     38968
smart_240_raw            38968
smart_241_normalized     56030
smart_241_raw            56030
smart_242_normalized     56032
smart_242_raw            56032
smart_245_normalized    161968
smart_245_raw           161968
smart_247_normalized    162006
smart_247_raw           162006
smart_248_normalized    162006
smart_248_raw           162006
smart_250_normalized    162008
smart_250_raw           162008
smart_251_normalized    162008
smart_251_raw           162008
smart_252_normalized    162008
smart_252_raw           162008
smart_254_normalized    161725
smart_254_raw           161725
smart_255_normalized    162008
smart_255_raw           162008
Length: 149, dtype: int64

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

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

df_data_null_num = df_data.isnull().sum()
x = list(range(len(df_data_null_num)))
y = df_data_null_num.values
plt.plot(x, y)
plt.show()

Как видно из приведенных выше результатов, некоторые атрибуты в таблице имеют большое количество нулевых значений.

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

2.6 Категорийный анализ равновесия

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

Например, если выполнить следующий код, то можно увидеть, что в df_data больше 160 000 сэмплов с нормальными жёсткими дисками, но только 8 сэмплов с неисправностями, и категории крайне неравномерны.

valid = df_data[df_data['failure'] == 0]
failed = df_data[df_data['failure'] == 1]
print("valid hdds:",len(valid))
print("failed hdds:",len(failed))
valid hdds: 162000
failed hdds: 8

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

Чтобы получить больше данных выборки ошибок, мы можем выбрать все выборки ошибок из данных журнала SMART за весь 2020 год, выпущенных компанией backblaze, и случайным образом выбрать такое же количество нормальных выборок, которые можно получить с помощью следующего кода. .

Этот код был закомментирован, и для его работы требуется 20 ГБ локального хранилища. Вам не нужно запускать этот код, потому что dataset_2020.zip был загружен в начале этого случая, а dataset_2020.csv уже предоставлен в этом сжатом пакете, который представляет собой файл, полученный при выполнении следующего кода.

# if not os.path.exists('./dataset_2020/dataset_2020.csv'):
#     os.system('python ./dataset_2020/prepare_data.py')
import gc
del df_data   # 删除 df_data 对象
gc.collect()  # 由于接下来的代码将加载日志数据到df_data对象中,为避免内存溢出的风险,可以在此处先手动回收内存,因为jupyterlab在运行过程中不会自动回收环境中的内存

2.7 Загрузите набор данных со сбалансированным классом

dataset_2020.csv — это данные журнала S.M.A.R.T. жесткого диска, которые подверглись обработке баланса категорий. Давайте загрузим этот файл, а затем подтвердим баланс категорий.

df_data = pd.read_csv("./dataset_2020/dataset_2020.csv")
valid = df_data[df_data['failure'] == 0]
failed = df_data[df_data['failure'] == 1]
print("valid hdds:", len(valid))
print("failed hdds:", len(failed))
valid hdds: 1497
failed hdds: 1497

Видно, что имеется 1497 нормальных выборок и выборок неисправностей.

3. Разработка функций

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

3.1 Исследование атрибутов SMART и отказа жесткого диска

(1) Компания BackBlaze проанализировала корреляцию между сбоями жесткого диска и атрибутами SMART и обнаружила, что SMART 5, 187, 188, 197, 198 имеют самую высокую степень корреляции со сбоями жесткого диска. к подсчету проб [1];

(2) Эль-Шими и др. обнаружили, что в дополнение к вышеупомянутым пяти функциям в модели случайного леса есть также пять атрибутов SMART 9, 193, 194, 241 и 242, которые имеют наибольшие веса [2];

(3) Питакрат и др. оценили 21 алгоритм машинного обучения для прогнозирования сбоев жесткого диска и обнаружили, что среди 21 протестированного алгоритма машинного обучения алгоритм случайного леса имел наибольшую площадь под ROC-кривой, а классификатор KNN имел самое высокое значение F1. [3];

(4) Хьюз и др. также изучали методы машинного обучения для прогнозирования отказов жестких дисков.Они проанализировали производительность SVM и наивного байесовского метода.SVM достигла наивысшей производительности с уровнем обнаружения 50,6% и уровнем ложных срабатываний 0% [4]. ] ];

[1] Кляйн, Энди, «О чем на самом деле говорят нам ошибки жесткого диска SMART», Блог Backblaze, облачное хранилище и облачное резервное копирование, 6 октября 2016 г.,ууууууу. назад blaze.com/blog/what-is…

[2] Эль-Шими, Ахмед, «Прогнозирование отказов хранилища», Конференция по хранению и файловым системам VAULT-Linux, Конференция по хранению и файловым системам VAULT-Linux, 22 марта 2017 г., Кембридж.

[3] Питакрат, Тират, Андре ван Хоорн и Ларс Грунске, «Сравнение алгоритмов машинного обучения для упреждающего обнаружения отказов жестких дисков», Материалы 4-го международного симпозиума ACM Sigsoft по архитектуре критических систем, ACM, 2013.

[4] Хьюз, Гордон Ф. и др. «Улучшенные предупреждения о сбоях дисковода», IEEE Transactions on Reliability 51.3 (2002):350-357.

Выше приведены некоторые из результатов предыдущих исследований. В этом случае планируется использовать модель случайного леса. Поэтому, согласно приведенным выше результатам исследования в статье 2, атрибуты SMART 5, 9, 187, 188, 193, 194, 197, 198, 241, 242 могут быть выбраны как функции, их значения:

SMART 5: количество переназначенных секторов
SMART 9: Совокупное время включения
SMART 187: неисправимая ошибка
SMART 188: счетчик времени ожидания инструкции
SMART 193: Счетчик загрузки/выгрузки головы
SMART 194: Температура
SMART 197: количество секторов, ожидающих сопоставления
SMART 198: операционная система сообщила об ошибке, которую невозможно исправить с помощью аппаратного ECC.
SMART 241: Всего операций записи в режиме адресации логических блоков
SMART 242: Всего операций чтения в режиме адресации логических блоков

Кроме того, поскольку стандарты записи данных журнала SMART могут быть разными для разных моделей производителей жестких дисков, лучше всего выбрать данные одной и той же модели жестких дисков в качестве обучающих данных, и обучить модель прогнозировать, будет ли жесткий диск этой модели неисправен. Если вам нужно предсказать, выйдут ли из строя несколько разных моделей жестких дисков, вам может потребоваться обучить несколько моделей по отдельности.

3.2 Выбор модели жесткого диска

Выполните следующий код, чтобы увидеть, сколько данных каждая модель имеет на жестком диске.

df_data.model.value_counts()
ST12000NM0007                         664
ST4000DM000                           491
ST8000NM0055                          320
ST12000NM0008                         293
TOSHIBA MG07ACA14TA                   212
ST8000DM002                           195
HGST HMS5C4040BLE640                  193
HGST HUH721212ALN604                  153
TOSHIBA MQ01ABF050                     99
ST12000NM001G                          53
HGST HMS5C4040ALE640                   50
ST500LM012 HN                          40
TOSHIBA MQ01ABF050M                    35
HGST HUH721212ALE600                   34
ST10000NM0086                          29
ST14000NM001G                          23
HGST HUH721212ALE604                   21
ST500LM030                             15
HGST HUH728080ALE600                   14
Seagate BarraCuda SSD ZA250CM10002     12
WDC WD5000LPVX                         11
WDC WUH721414ALE6L4                    10
ST6000DX000                             9
TOSHIBA MD04ABA400V                     3
ST8000DM004                             2
ST18000NM000J                           2
Seagate SSD                             2
ST4000DM005                             2
ST8000DM005                             1
ST16000NM001G                           1
DELLBOSS VD                             1
TOSHIBA HDWF180                         1
HGST HDS5C4040ALE630                    1
HGST HUS726040ALE610                    1
WDC WD5000LPCX                          1
Name: model, dtype: int64

Видно, что модель ST12000NM0007 имеет наибольший объем данных жесткого диска, поэтому мы отфильтровываем данные жесткого диска этой модели.

df_data_model = df_data[df_data['model'] == 'ST12000NM0007']

3.3 Выбор функций

Выберите 10 атрибутов, упомянутых выше, в качестве функций

features_specified = []
features = [5, 9, 187, 188, 193, 194, 197, 198, 241, 242]
for feature in features:
    features_specified += ["smart_{0}_raw".format(feature)]
X_data = df_data_model[features_specified]
Y_data = df_data_model['failure']
X_data.isnull().sum()
smart_5_raw      1
smart_9_raw      1
smart_187_raw    1
smart_188_raw    1
smart_193_raw    1
smart_194_raw    1
smart_197_raw    1
smart_198_raw    1
smart_241_raw    1
smart_242_raw    1
dtype: int64

Есть пустые значения, поэтому сначала заполните пустые значения

X_data = X_data.fillna(0) 
print("valid hdds:", len(Y_data) - np.sum(Y_data.values))
print("failed hdds:", np.sum(Y_data.values))
valid hdds: 325
failed hdds: 339

3.4 Разделение обучающего и тестового наборов

Используйте sklearn train_test_split, чтобы разделить обучающий набор и тестовый набор, test_size представляет собой пропорцию тестового набора, обычно 0,3, 0,2 или 0,1.

from sklearn.model_selection import train_test_split

X_train, X_test, Y_train, Y_test = train_test_split(X_data, Y_data, test_size=0.2, random_state=0) 

4. Начать обучение

4.1 Построение модели

После подготовки обучающего набора и тестового набора вы можете приступить к построению модели.Этапы построения модели очень просты.Вы можете напрямую вызвать RandomForestClassifier в среде машинного обучения sklearn.

from sklearn.ensemble import RandomForestClassifier 

rfc = RandomForestClassifier()

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

4.2 Подгонка данных

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

rfc.fit(X_train, Y_train)
/home/ma-user/anaconda3/envs/XGBoost-Sklearn/lib/python3.6/site-packages/sklearn/ensemble/forest.py:248: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.
  "10 in version 0.20 to 100 in 0.22.", FutureWarning)

RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',
            max_depth=None, max_features='auto', max_leaf_nodes=None,
            min_impurity_decrease=0.0, min_impurity_split=None,
            min_samples_leaf=1, min_samples_split=2,
            min_weight_fraction_leaf=0.0, n_estimators=10, n_jobs=None,
            oob_score=False, random_state=None, verbose=0,
            warm_start=False)

5 Начать прогнозирование

Вызовите функцию прогнозирования, чтобы начать прогнозирование

Y_pred = rfc.predict(X_test) 

5.1 Точность статистического прогноза

В машинном обучении есть четыре часто используемых показателя производительности для задач классификации: точность, точность, отзыв и F1-Score, Чем ближе четыре показателя к 1, тем лучше эффект. Для этих четырех индикаторов в библиотеке sklearn есть функции, которые можно вызывать напрямую.

Теоретическое объяснение четырех индикаторов см.эта статья

from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score

print("Model used is: Random Forest classifier") 
  
acc = accuracy_score(Y_test, Y_pred) 
print("The accuracy is {}".format(acc)) 
  
prec = precision_score(Y_test, Y_pred) 
print("The precision is {}".format(prec)) 
  
rec = recall_score(Y_test, Y_pred) 
print("The recall is {}".format(rec)) 
  
f1 = f1_score(Y_test, Y_pred) 
print("The F1-Score is {}".format(f1)) 
Model used is: Random Forest classifier
The accuracy is 0.849624060150376
The precision is 0.9122807017543859
The recall is 0.7761194029850746
The F1-Score is 0.8387096774193548

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

5.2 Сохранение, загрузка и повторное предсказание модели

сохранить модель

import pickle
with open('hdd_failure_pred.pkl', 'wb') as fw:
    pickle.dump(rfc, fw)

загрузка модели

with open('hdd_failure_pred.pkl', 'rb') as fr:
    new_rfc = pickle.load(fr)

Повторное предсказание модели

new_Y_pred = new_rfc.predict(X_test)
new_prec = precision_score(Y_test, new_Y_pred)
print("The precision is {}".format(new_prec))
The precision is 0.9122807017543859

5.3 Просмотр матрицы путаницы

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

import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.metrics import confusion_matrix 

LABELS = ['Healthy', 'Failed'] 
conf_matrix = confusion_matrix(Y_test, Y_pred) 
plt.figure(figsize =(6, 6)) 
sns.heatmap(conf_matrix, xticklabels = LABELS,  
            yticklabels = LABELS, annot = True, fmt ="d"); 
plt.title("Confusion matrix") 
plt.ylabel('True class') 
plt.xlabel('Predicted class') 
plt.show() 

6. Идеи по улучшению модели

Приведенное выше содержание является демонстрацией процесса построения модели прогнозирования отказа жесткого диска с использованием алгоритма случайного леса. Точность модели невысока. Следующие идеи могут повысить точность модели:

(1) В этом случае используются только данные Backblaze в 2020 году, вы можете попробовать использовать больше обучающих данных;
(2) В этом случае в качестве функций используются только 10 атрибутов SMART, вы можете попробовать другие методы для создания функций;
(3) В этом случае для обучения модели используется алгоритм случайного леса, вы можете попробовать другие алгоритмы машинного обучения;

Нажмите, чтобы войти в HUAWEI CLOUDModelArts CodelabЭтот код случая может быть запущен напрямую

Нажмите «Подписаться», чтобы впервые узнать о новых технологиях HUAWEI CLOUD~