赛题A是一道算不上“大数据”的数据题目(维度<10数据量只有9000条),背景性较强。

下面放上题目:

竞赛数据分析 国赛数据分析题_竞赛数据分析

赛题A-背景及数据介绍部分

竞赛数据分析 国赛数据分析题_numpy_02

赛题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)

竞赛数据分析 国赛数据分析题_人工神经元_03

输出结果

接着我们需要对数据进行初步的查看分析,采用散点图进行可视化即可(这里对两个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()

得到图像:

竞赛数据分析 国赛数据分析题_竞赛数据分析_04

温度散点图

根据图像结果,我们可以发现两种温度都在一定范围内波动,但是存在少量离群值(可视作异常值),有些算法对异常值很敏感,如逻辑回归算法。如果不处理,用该算法拟合出来的模型的效果、精确度会很低。有些算法对异常值不敏感,可以不处理异常值。由于目前常用到的3种算法(线性回归、逻辑回归、随机森林),所以还是需要处理异常值,不妨采用箱线图对其进行剔除。

竞赛数据分析 国赛数据分析题_python_05

竞赛数据分析 国赛数据分析题_numpy_06

特征提取部分则可以采用方差过滤的方法,把方差(即波动程度小)的特征剔除。

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,反之亦然。选定的阈值不同,模型预测的结果也会相应地改变。二元分类模型的单个样本预测有四种结果:

  1. 真阳性(TP):判断为阳性,实际也是阳性。
  2. 伪阳性(FP):判断为阳性,实际却是阴性。
  3. 真阴性(TN):判断为阴性,实际也是阴性。
  4. 伪阴性(FN):判断为阴性,实际却是阳性。

这四种结果可以画成2 × 2的混淆矩阵

竞赛数据分析 国赛数据分析题_人工神经元_07

有了混淆矩阵,就可以定义各种指标了。

  • 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 中的库,模型如下:

竞赛数据分析 国赛数据分析题_竞赛数据分析_08

使用的库

多层感知机(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 的成本函数是残差平方和的均值.

竞赛数据分析 国赛数据分析题_人工神经元_09

五种类型故障预测正确率

4.预测补全给出的数据

直接套入模型即可。

5.探究各类型与特征间的关系

绘制热力图、求皮尔逊相关系数、进行显著性相关分析。

#__________________________________________求出各故障对应的指标均值等统计量进行对比量化分析

竞赛数据分析 国赛数据分析题_python_10

各指标均值

竞赛数据分析 国赛数据分析题_大数据_11