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

网友投稿 757 2022-05-28

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

输入账号名和密码。

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

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

点击“进入服务”

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

点击创建

填入以下

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

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

分析数据:

分析数据集:

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

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

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

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

参数名称

参数说明

特征工程名

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

开发平台

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

l JupyterLab

l 旧版体验式开发

环境信息

资源核数。

数据集

数据集路径。

创建人

创建特征工程的用户。

创建时间

特征工程创建的时间。

简介

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

根据名称搜索特征工程。

特征工程详情。

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

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

复制特征工程。

删除特征工程。

选择python3,点击

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

一下步

选择自定义操作

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

算法代码如下:

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类似,可单步执行,也可全量代码一起执行。

单步执行:

全量执行:

生成训练数据

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

下一步:点击模型训练

耐心等待~3-7分钟

创建完成

进入编辑环境

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

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

# -*- 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%

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

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"。

保存后 Ctrl+s,下一步

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

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

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

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

模型打包

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

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

参数配置:

参数名称

参数说明

模型名称

模型包的名称。

模型版本

训练模型的版本。

默认版本为V1.0.0。

模型描述

训练模型的描述信息。

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

至此,模型打包完成。

人工智能

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:redhat5.4 搭建vnc
下一篇:给定一个净值序列,计算年化收益、最大回撤、夏普比率
相关文章