AI网络人工智能-硬盘故障检测

举报
QGS 发表于 2020/07/11 00:10:28 2020/07/11
【摘要】 转载https://developer.huaweicloud.com/hero/forum.php?mod=viewthread&tid=60682&page=1&extra=#pid231242【网络人工智能】硬盘故障检测模型认证指导.docx

在用户终端PC上打开浏览器,用户在地址栏中输入“https://console.huaweicloud.com/naie/”,进入AI市场。单击界面右上角的“登录”,进入登录界面。

 1.jpg

输入账号名和密码。

2.png

单击“登录”,进入AI市场。

依次选择“AI服务 > 平台服务 > 训练平台 > 模型训练服务”,进入模型训练服务介绍页面。

3.png4.png

需要华为云主账号购买“模型训练服务”,然后才能才这里进入“模型训练服务”中。

点击“进入服务”

在数据集哪里点击“查看全部”

5.png

点击创建

6.png

填入以下

7.png


 

 8.png

“数据来源”选择“本地上传”:

选择本地的磁盘数据(路径:https://bbs.huaweicloud.com/forum/thread-56568-1-1.html),然后点击“创建”。


9.png


分析数据:

分析数据集:

10.png

11.png


点击菜单栏特征工程,进入特征工程页面:12.png


点击特征处理按钮“i”进行特征工程创建14.png

 

如果没有实例,就创建一个新的实例

创建完成后,点击进入编辑环境


参数名称

参数说明

特征工程名

特征工程的名称。可以在创建特征工程时配置。

开发平台

特征工程处理数据集的计算平台。

l JupyterLab

l 旧版体验式开发

环境信息

资源核数。

数据集

数据集路径。

创建人

创建特征工程的用户。

创建时间

特征工程创建的时间。

简介

特征工程的描述。可以在创建特征工程时配置。

根据名称搜索特征工程。

特征工程详情。

进入特征工程编辑页面,执行特征处理操作。

导出特征处理脚本到用户本地。

复制特征工程。

删除特征工程。

 

选择python3,点击

 15.png

官方给的是绑定数据,但是由于版本的升级,我们选择“选择数据”进行数据的绑定即可

16.png

一下步


选择自定义操作

17.png

先将自定义操作里面的代码清空,后复制如下代码后粘贴,然后点击运行,(最好每做一步都点击运行,这样能检测出来哪里出错~)

18.png

算法代码如下:

I

mport pandas as pd

data = dataflow.to_pandas_dataframe()

# Your code here

#去掉列名

data = data.loc[1:]

data.sort_values(['disk_sn'], inplace=True)

 

# 只包含一个值的列,无用

cols_only_one_value = data.nunique().to_frame(   name='num').query('num==1').index.tolist()

# 保留的列

cols_keep = [i for i in data if i not in   cols_only_one_value]

# 硬盘smart特征列

cols_smart = [i for i in cols_keep if   i.startswith('smart')]

 

#特征选择

colums = cols_smart+['capacity_bytes','failure','disk_sn']

processed_data = data[colums]

dataflow =   data_flow.create_dataflow_from_df(processed_data) #@return   {"type":"dataflow","attrs":{"source":"dataframe"}}

下一步:

选择数据集:DATASET,数据集实例:processed_disk_data,与原始数据集DISK-data不同名。

运行完成后点击保存

执行代码同jupyter类似,可单步执行,也可全量代码一起执行。

单步执行:

 19.png

全量执行:

 20.png

生成训练数据

21.png

点击执行特诊工程之后,返回数据集界面,查看数据集,我们发现生成了清洗后的新数据集了。新数据集的来源是FEATURE,代表着是特征工程生成的数据集。

下一步:点击模型训练

22.png

耐心等待~3-7分钟

23.png

创建完成

24.png

进入编辑环境

25.png

 

点击编辑1c9091746f226d7f12744885143cba7.png进入编辑环境进行训练代码的准备。

26.png27.png

先将里面的代码清空,后复制如下代码后粘贴,然后点击运行,(最好每做一步都点击运行,这样能检测出来哪里出错~)

# -*- coding: utf-8 -*-

from __future__ import print_function

from sklearn.model_selection import cross_val_score, train_test_split

from sklearn.metrics import confusion_matrix, accuracy_score, roc_curve

from naie.metrics import report

from naie.datasets import get_data_reference

from naie.context import Context

 

import warnings

warnings.filterwarnings('ignore')

 

import pandas as pd

import numpy as np

import lightgbm as lgb

 

import os

import pickle

 

# naie sdk主要用于文件、路径、日志等操作,详见训练平台又上角问号处帮助中心内sdk文档说明

def load_dataset(dataset, dataset_entity):

    '''

    从数据集中加载数据为DataFrame

    '''

    data_reference = get_data_reference(

        dataset=dataset, dataset_entity=dataset_entity)

    df = data_reference.to_pandas_dataframe()

    return df

 

 

def model_fn():

    model = lgb.LGBMClassifier(random_state=1)

    return model

 

 

def train(x_train, y_train, model):

    model.fit(x_train, y_train, categorical_feature=cate_cols)

 

 

def save_model(model):

    """

    模型存储的固定路径,生成的pkl文件要与推理代码predict.py中的路径对应

    """

    model_path = os.path.join(Context.get_model_path(), 'model.pkl')

    with open(model_path, 'wb') as ff:

        pickle.dump(model, ff)

 

 

def save_features(features):

    """

    模型存储的固定路径,生成的pkl文件要与推理代码predict.py中的路径对应

    """

    features_path = os.path.join(Context.get_model_path(), 'features.pkl')

    with open(features_path, 'wb') as ff:

        pickle.dump(features, ff)

 

 

def score_model(x_validation, y_validation, model):

    """

    返回验证得分并通过logs保存在训练任务中

    """

    score = accuracy_score(y_validation, model.predict(x_validation))

    with report(True) as logs:

        logs.log_property("score", score)

    return score

 

def main():

    # dataset dataset_entity需要修改为项目数据集对应的参数

    data = load_dataset(dataset="DATASET", dataset_entity="processed_disk_data")

 

    features = data.columns.tolist()[:-2]

   

    #因为硬盘容量的数值较大,可以先转化成类别特征的数据

    data['capacity_bytes'] = data['capacity_bytes'].astype('category')

    # 按照硬盘划分训练集和测试集

    train_disks, test_disks = train_test_split(

        data['disk_sn'].unique(), shuffle=True, random_state=2019, test_size=0.2)

    train_data = data[data['disk_sn'].isin(train_disks)]

    test_data = data[data['disk_sn'].isin(test_disks)]   

 

   #创建模型

    model = lgb.LGBMClassifier(random_state=1,objective = 'binary',num_leaves = 64,n_estimators = 1000,is_unbalance=True) 

    # 交叉验证

    cv_score = cross_val_score(

        model, train_data[features], train_data.failure, cv=5, scoring='accuracy', fit_params={'categorical_feature': ['capacity_bytes']})

    print(f'CV accuracy score: {cv_score}')

    model.fit(train_data[features], train_data.failure,categorical_feature=['capacity_bytes'])  # lightgbm处理分类变量

 

    # 评分时是对每个盘进行预测,根据历史数据预测这个盘会不会坏

    test_y = test_data.groupby('disk_sn').failure.nth(-1)

    test_X = test_data.groupby('disk_sn').nth(-1)[features]

 

    print('test set confusion matrix:')   

    conf_matrix=confusion_matrix(test_y, model.predict(test_X))

    print(conf_matrix)

   

    # 输出误报率FAR,即一块硬盘实际为好盘,而模型预测为坏盘的概率,业务目标 <= 0.1%

    print(f'FAR : {conf_matrix[0][1]/sum(conf_matrix[0])}')

 

    #输出查全率FDR,即一块硬盘实际为坏盘,而模型预测为坏盘的概率,业务目标 > 80%

    print(f'FDR : {conf_matrix[1][1]/sum(conf_matrix[1])}')

 

    score = score_model(test_X, test_y, model)

    print(f'test accuracy score: {score}')  

    #保留特征

    save_features(features)

   

    #保存模型

    save_model(model)

    # return the score for hyperparameter tuning

    return score

 

 

if __name__ == "__main__":

    main()

代码中的数据位置是DATASET下的processed_disk_data文件,如果数据不是在该位置,请修改上述训练代码中的main函数中load_dataset的参数dataset="DATASET"和dataset_entity="processed_disk_data"。

 28.png

保存后 Ctrl+s,下一步

然后点击下图的调试按钮:

29.png


点击确定,自动进入算法的模型训练页面,如下图所示。

30.png

 

训练完成后,状态如下,会显示训练状态和评估报


33.png



如果训练失败,可以通过点击上图右侧的详情来查看系统日志和运行日志:

34.png

 

模型打包

35.png

36.png

系统支持将训练好的模型训练任务进行归档。用户可以将归档包编排成应用包发布到应用市场,或者基于归档包创建验证服务、训练服务。

步骤1:单击的,弹出“归档”对话框。

参数配置:

参数名称

参数说明

模型名称

模型包的名称。

模型版本

训练模型的版本。

默认版本为V1.0.0。

模型描述

训练模型的描述信息。

可以在“模型管理”界面确认是否已经有了我们打包的模型,通过下载按钮进行下载:

至此,模型打包完成。

 

 38.png

 

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。