赛题A是一道算不上“大数据”的数据题目(维度<10数据量只有9000条),背景性较强。
下面放上题目:
赛题A-背景及数据介绍部分
赛题A-任务要求部分
由以上题目分析可以看出,虽然背景介绍给的很长,但是题意只有一个,就是“提前预测设备生产中的故障风险”,故该数据题可定位为预测类题目。
根据具体任务的分析可以将五个任务概括为:
1.数据预处理+特征提取
2.建立二分类模型并评价
3.拓展成多分类模型并评价
4.预测补全给出的数据
5.探究各类型与特征间的关系
下面针对五个任务一一进行思路分析:
完整的思路代码见:2022 年中国高校大数据挑战赛-赛题 A 工业机械设备故障预测-解题思路分享
题目背景分析
在实际预测机械设备故障时,传统故障预测方法由于方法相对简单、且较少保存数据,导致最终故障预测准确率过低,针对这一问题,目前可以检索到多种基于深度学习、机器学习等多算法融合的机械设备故障预测方法。由此,题目给的数据量不多,其实是符合实际情况的,这也需要我们注意在选择分类模型时,要慎用那些依赖于大量数据的模型。
1.数据预处理+特征提取
数据预处理中重要的一环就是缺失值的处理,但是经查询,数据集中不存在空缺值。
import pandas as pd
import numpy as np
df=pd.read_excel('train data.xlsx')
print(np.any(df.isnull()))
注意到题目给出:“其中质量等级分为高、中、低(H\M\L)三个等 级。”故需要把此字符串转化成数字便于后续的训练。
df=df.drop(labels=['机器编号','统一规范代码','具体故障类别'],axis=1)#删除不需要的列
df.replace('L',1.0,inplace=True)
df.replace('M',2.0,inplace=True)
df.replace('H',3.0,inplace=True)
print(df)
输出结果
接着我们需要对数据进行初步的查看分析,采用散点图进行可视化即可(这里对两个T值分析示例)。
from matplotlib import pyplot as plt
# 输入变量数据(参数)
n=df.index
x=df['厂房室温(K)']
y=df['机器工作温度(K)']
# 设置图形大小
plt.figure(figsize=(20, 8), dpi=80)
# 使用scatter绘制散点图,和之前绘制折线图一样只用将plot更改成scatter
plt.scatter(n,x, label='厂房室温(K)')
plt.scatter(n,y, label='机器工作温度(K)')
# 添加描述信息
plt.xlabel('机器')
plt.ylabel('温度')
plt.title('温度散点图')
#用来正常显示中文标签
plt.rcParams['font.sans-serif']=['SimHei']
# 添加图例
plt.legend(loc='upper left') # 要在绘制图像那一步添加标签
# 展示图形
plt.show()
得到图像:
温度散点图
根据图像结果,我们可以发现两种温度都在一定范围内波动,但是存在少量离群值(可视作异常值),有些算法对异常值很敏感,如逻辑回归算法。如果不处理,用该算法拟合出来的模型的效果、精确度会很低。有些算法对异常值不敏感,可以不处理异常值。由于目前常用到的3种算法(线性回归、逻辑回归、随机森林),所以还是需要处理异常值,不妨采用箱线图对其进行剔除。
特征提取部分则可以采用方差过滤的方法,把方差(即波动程度小)的特征剔除。
2.建立二分类模型并评价
常用的二分类模型有支持向量机、逻辑回归、朴素贝叶斯、Xgboost等模型,本文采用支持向量机(部分代码如下)。
data = np.loadtxt("train data.csv",dtype=float,delimiter=',',skiprows=1)
#svm训练
from sklearn import svm
评价体系:有很多指标可以衡量机器学习模型的效果,不同的任务使用的评价指标也不尽相同。本文对二分类任务的评价指标加以总结。全文系作者原创,仅供学习参考使用,转载授权请私信联系,否则将视为侵权行为。码字不易,感谢支持。
在二分类问题中,数据的标签通常用(0/1)来表示,在模型训练完成后进行测试时,会对测试集的每个样本计算一个介于0~1之间的概率,表征模型认为该样本为阳性的概率,我们可以选定一个阈值
,将模型计算出的概率进行二值化,比如选定阈值=0.5
,那么当模型输出的值大于等于0.5时,我们就认为模型将该样本预测为阳性,也就是标签为1,反之亦然。选定的阈值不同,模型预测的结果也会相应地改变。二元分类模型的单个样本预测有四种结果:
- 真阳性(TP):判断为阳性,实际也是阳性。
- 伪阳性(FP):判断为阳性,实际却是阴性。
- 真阴性(TN):判断为阴性,实际也是阴性。
- 伪阴性(FN):判断为阴性,实际却是阳性。
这四种结果可以画成2 × 2的混淆矩阵
:
有了混淆矩阵
,就可以定义各种指标了。
- TPR(真阳性率) = TP / (TP + FN)
- FPR(假阳性率) = FP / (FP + TN)
- Accuracy(准确率)= (TP + TN) / (TP+TN+FP+FN)
- Precision(精确率)= TP / (TP + FP)
- Recall(召回率)= TP / (TP + FN)
- F1值 = 2TP / (2TP+FP+FN)
- PPV(positive predictive value)= TP / (TP + FP)
- sensitivity(敏感性)= TP / (TP + FN)
- specificity(特异性)= TN / (TN + FP)
3.拓展成多分类模型并评价
多分类模型可以采用MLP模型,这里我们依旧使用的是 sklearn 中的库,模型如下:
使用的库
多层感知机(MLP,Multilayer Perceptron)也叫人工神经网络(ANN,Artificial Neural Network), 除了输入输出层,它中间可以有多个隐层,最简单的 MLP 只含一个隐层,即三层的结构.
多层感知器 (multilayer Perceptron,MLP) 是指可以是感知器的人工神经元组成的多个层次。MPL 的层次结构是一个有向无环图。通常,每一层都全连接到下一层,某一层上的每个人工神经元的输出成 为下一层若干人工神经元的输入。MLP 至少有三层人工神经元。
输入层 (input layer) 由简单的输入人工神经元构成。每个输入神经元至少连接一个隐藏层 (hidden layer) 的人工神经元。隐藏层表示潜在的变量;层的输入和输出都不会出现在训练集中。隐藏层后面连接的是输出层 (output layer)。
隐藏层中的人工神经元,也称单元 (units) 通常用非线性激励函数,如双曲正切函数 (hyperbolic tangent function) 和逻辑函数 (logistic function). 我们的目标是找到成本函数最小化的权重值。通常,MLP 的成本函数是残差平方和的均值.
五种类型故障预测正确率
4.预测补全给出的数据
直接套入模型即可。
5.探究各类型与特征间的关系
绘制热力图、求皮尔逊相关系数、进行显著性相关分析。
#__________________________________________求出各故障对应的指标均值等统计量进行对比量化分析
各指标均值