参数包
param |
描述 |
输入/输出 |
类型 |
取值范围 |
默认值 |
---|---|---|---|---|---|
is_diff_feature |
特征工程参数, 是否增加差分特征 |
输入 |
bool |
True/False |
True |
is_diff_roll_feature |
特征工程参数, 是否增加差分滚动周期求和特征、长周期差分特征、 周期内差分最大/最小值特征 |
输入 |
bool |
True/False |
True |
is_min_max_feature |
特征工程参数, 是否增加周期内原始值最大/最小值特征 |
输入 |
bool |
True/False |
True |
long_period |
特征工程参数, 差分滚动计算的周期长度 |
输入 |
int |
[1 ~ sys.maxsize] |
14 |
alert_threshold |
故障判断参数, 当sn报警次数超过此阈值时认定为故障盘 |
输入 |
int |
[1 ~ ∞) |
5 |
data_tail |
数据预处理参数, 对每个sn只保留末尾data_tail条数据进行训练 |
输入 |
int |
[1 ~ ∞) |
10 |
model |
源数据参数,SSD SMART信息不同厂家之间差异较大,需要指定厂家确定使用的SMART列信息 |
输入 |
String |
['DEFAULT', 'MA1', 'MA2', 'MB1', 'MB2', 'MC1', 'MC2', ] |
'DEFAULT' |
log_file |
日志文件路径 |
输入 |
String |
- |
/var/log/smartmaintainkit.log |
- Python中sys.maxsize代表int类型的最大值。
- 仅当“is_diff_feature”为True时,“is_diff_roll_sum_feature”参数才起作用,“is_diff_feature”为False时,“is_diff_roll_sum_feature”无意义,不产生任何影响。
参数使用举例如下。
- 默认调用方式需要执行以下命令。
fault_train(r'fault_test.data', r'model.pkl')
- 执行以下命令修改日志路径到temp.log。
param = {'log_file': 'temp.log'} fault_train(r'fault_test.data', r'model.pkl', param)
- 默认调用方式需要执行以下命令。
SMART ID |
MA1 |
MA2 |
MB1 |
MB2 |
MC1 |
MC2 |
---|---|---|---|---|---|---|
1 |
√ |
- |
- |
- |
√ |
√ |
5 |
√ |
√ |
√ |
√ |
√ |
√ |
9 |
√ |
√ |
√ |
√ |
√ |
√ |
12 |
√ |
√ |
√ |
√ |
√ |
√ |
170 |
- |
√ |
- |
- |
√ |
√ |
171 |
√ |
√ |
- |
- |
√ |
√ |
172 |
√ |
√ |
- |
- |
√ |
√ |
173 |
√ |
- |
- |
- |
√ |
√ |
174 |
√ |
√ |
- |
- |
√ |
√ |
175 |
√ |
√ |
- |
- |
- |
- |
177 |
- |
- |
√ |
√ |
- |
- |
180 |
√ |
- |
√ |
√ |
√ |
√ |
181 |
- |
- |
√ |
√ |
- |
- |
182 |
- |
- |
√ |
√ |
- |
- |
183 |
√ |
√ |
√ |
√ |
√ |
|
184 |
√ |
√ |
√ |
√ |
√ |
√ |
187 |
√ |
√ |
√ |
√ |
√ |
√ |
188 |
√ |
- |
- |
- |
√ |
√ |
190 |
√ |
√ |
√ |
√ |
- |
- |
192 |
- |
√ |
- |
- |
- |
- |
194 |
√ |
√ |
√ |
- |
√ |
√ |
195 |
√ |
- |
√ |
√ |
√ |
√ |
196 |
√ |
- |
- |
- |
√ |
√ |
197 |
√ |
√ |
√ |
√ |
- |
- |
198 |
√ |
- |
- |
- |
√ |
√ |
199 |
√ |
√ |
√ |
√ |
√ |
√ |
206 |
- |
- |
- |
- |
√ |
√ |
232 |
- |
√ |
- |
- |
- |
- |
233 |
- |
√ |
- |
- |
- |
- |
241 |
- |
√ |
√ |
√ |
- |
- |
242 |
- |
√ |
√ |
√ |
- |
- |
244 |
- |
- |
√ |
√ |
- |
- |
245 |
- |
- |
√ |
√ |
- |
- |
备注 |
√:模型需要的数据集中需要包含的SMART ID。 |
'DEFAULT'参数为上表每个模型所含所有SMART ID的集合。
以下提供一个便于快速检测一个数据集中适用各种模型的数据量。
import pandas as pd smart_id_dict = { 'MA1': [1, 5, 9, 12, 171, 172, 173, 174, 175, 180, 184, 187, 188, 190, 194, 195, 196, 197, 198, 199], # MA1 'MA2': [5, 9, 12, 170, 171, 172, 174, 183, 184, 187, 190, 192, 194, 197, 199, 233, 241, 242, 175, 232], # MA2 'MB1': [5, 9, 12, 177, 180, 181, 182, 183, 184, 187, 190, 194, 195, 197, 199, 241, 242, 244, 245], # MB1 'MB2': [5, 9, 12, 177, 180, 181, 182, 183, 184, 187, 190, 195, 197, 199, 241, 242, 244, 245], # MB2 'MC1': [1, 5, 9, 12, 170, 171, 172, 173, 174, 180, 183, 184, 187, 188, 194, 195, 196, 198, 199, 206], # MC1 'MC2': [1, 5, 9, 12, 170, 171, 172, 173, 174, 180, 183, 184, 187, 188, 194, 195, 196, 198, 199, 206] # MC2 } smart_id_dict['DEFAULT'] = list(set(smart_id_dict['MA1']).intersection( smart_id_dict['MA2'], smart_id_dict['MB1'], smart_id_dict['MB2'], smart_id_dict['MC1'], smart_id_dict['MC2'])) data = pd.read_csv(r'ssd_fault_data.csv', low_memory=False) # 在此处填入待检测数据文件路径 for key, value in smart_id_dict.items(): feature_smart_col = [f'ssdSmart.smart_{value}_value' for value in value] + \ [f'ssdSmart.smart_{value}_raw_value' for value in value] feature_col = ['disk_sn', 'timestamp', 'fault'] + feature_smart_col try: count = data[feature_col].dropna(axis=0, subset=feature_col).shape[0] except KeyError: count = 0 print(key + ': ' + str(count))
输出数据集ssd_fault_data.csv中适用各种模型的数据量。
MA1: 15068 MA2: 80597 MB1: 39963 MB2: 83407 MC1: 191758 MC2: 191758 DEFAULT: 370840
默认推荐的参数
MA1
param = {'model': 'MA1'} fault_train(r'ssd_MA1_fault_train.csv', r'model.pkl', param)
MA2
param = {'model': 'MA2'} fault_train(r'ssd_MA2_fault_train.csv', r'model.pkl', param)
MB1
param = {'model': 'MB1'} fault_train(r'ssd_MB1_fault_train.csv', r'model.pkl', param)
MB2
param = {'model': 'MB2'} fault_train(r'ssd_MB2_fault_train.csv', r'model.pkl', param)
MC1
param ={'model': 'MC1', 'long_period': 100} fault_train(r'ssd_MC1_fault_train.csv', r'model.pkl', param)
MC2
param = {'model': 'MC2', 'long_period': 100} fault_train(r'ssd_MC2_fault_train.csv', r'model.pkl', param)