基于支持向量机(SVM)的齿轮箱轴承故障识别
一、轴承故障诊断
1、概述
轴承是旋转设备的一个重要部件,它提供重要的负载承受能力,以支撑转子系统抵抗静
态的和动态的外力。轴承构件,由于它的使用寿命长、负载能力高、能量损失低而被广泛应
用于工业和公用设施,是大型机械装备(包括动力机械、机车车辆、泵与风机等)中的关键部 件。高速运转的大型机械装备,其轴承的载荷重且为交变载荷,而且工作环境恶劣,经常发 生轴承性能劣化和损坏,影响整个装置的安全可靠性,一旦出现故障将导致严重的损失,有 必要对轴承工作状态进行模式识别与诊断。
轴承根据工作的摩擦性质不同可分为滑动摩擦轴承(简称滑动轴承)和滚动摩擦轴承 (简称滚动轴承)两大类。本文所测得的数据来自实验室齿轮箱的滑动轴承,滑动轴承的特
点有:(1)在高速重载下能正常工作,寿命长。
(2)精度高。
(3)滑动轴承可做成剖分式的,能满足特殊结构的需要。
(4)液体摩擦轴承具有很好的缓冲和阻尼作用,可以吸收震动,缓和冲击。 (5)滑动轴承的径向尺寸比滚动轴承的小。 (6)起动摩擦阻力较大。
通过对轴承进行故障诊断有以下优势:
(1)早期预报、防止事故发生,降低事故发生率;
(2)预知性维修,提高设备管理水平,降低维修费用,减少维修时间,增加运行时间; (3)提高设备的设计、制造水平,改进产品质量; (4)确定复杂机器的最佳工作参数,提高效率; (5)降低噪声,泄露等污染,保护环境。
2、滑动轴承失效形式 (1)磨粒磨损
进入轴承间隙的硬颗粒(如灰尘、砂粒等),在起动、停车或轴颈与轴承发生边缘接触 时,都将加剧轴承磨损,导致几何形状改变、精度丧失,轴承间隙加大,使轴承性能在预期
寿命前急剧恶化。
(2)刮伤
进入轴承间隙中的硬颗粒或轴颈表面粗糙的轮廓峰顶,在轴承上划出线状伤痕,导致
轴承因刮伤失效。
(3)咬合(胶合)
当轴承温升过高,载荷过大,油膜破裂时,或在润滑油供应不足条件下,轴颈和轴承
的相对运动表面材料发生粘附和迁移,从而造成轴承损坏。
(4)疲劳剥蚀
在载荷反复作用下,轴承表面出现与滑动方向垂直的疲劳裂纹,当裂纹向轴承衬与衬背
结合面扩展后,造成轴承衬材料的剥落。
(5)腐蚀
润滑剂在使用中不断氧化,所生成的酸性物质对轴承材料有腐蚀性,特别是对铸造铜铅
合金中的铅,易受腐蚀而形成电状的脱落。
3、轴承故障诊断技术的发展趋势
近几年来,通信技术、电子技术、计算机技术、数据处理技术的飞速发展为轴承故障诊
断的发展提供了强大的支持。轴承故障诊断的发展方向和发展趋势大致如下:
(1)混合故障诊断技术研究
智能诊断技术是滚动轴承故障诊断技术的一个重要的研究方向。将多种不同的智能技术
结合起来的混合诊断系统,是智能故障诊断研究的一个发展趋势。结合方式主要有基于规则
的专家系统与神经网络的结合,实例推理与神经网络的结合模糊逻辑、神经网络与专家系统
的结合等。
(2)多信息量融合,多层次诊断集成
集成知识库中的各种诊断知识,结合数据库中的各种故障数据,按照不同的故障情况进
行综合分析、判断,定位故障点。主要对状态监测所得到的信息进行融合,然后结合层次诊
断模型,按照深浅结合的推理层次进行诊断。它进一步把状态监测中的信号监测处理集成到
诊断系统中,进行在线数据处理与在线诊断推理,实现非实时诊断到实时诊断的转变,也实
现信息诊断与智能诊断的统一。
(3)远程协作诊断
基于因特网的滚动轴承故障远程协作诊断是将滚动轴承诊断技术与计算机网络技术相
结合,用若千台中心计算机作为服务器,在企业的关键设备上建立状态监测点,采集设备状
态数据;在技术力量较强的科研院所建立分析诊断中心,为企业提供远程技术支持和保障。
跨地域远程协作诊断的特点是测试数据、分析方法和诊断知识的网络共享,因此必须使传统
诊断技术的核心部分(即信号采集、信号分析和诊断专家系统)能够在网络上远程运行。
(4)诊断与控制相结合
根据当前设备的健康状况决定设备运行方式或策略,最终预知故障,从而防止故障的发 生,是诊断技术的最高目标。它是把诊断系统和控制系统进一步结合,达到集监测、诊断、
控制、管理于一身.它由单机诊断发展到分布式全系统诊断,信息量大,类型多,相应的也 就需要多种数据处理和诊断推理方法的联合总之 ,在今后的研究中应进一步对诊断理论与 诊断方法加以研究,建立一套完整的故障诊断指导理论和方法体系,将诊断理论和诊断方法 能运用到实际的生成中,同时加强对便携式诊断和监测工具的研究,致力于建立简单的故障 诊断平台,建立更人性化的人机工作环境,提高诊断的效率,提高人们的设备管理意识,促 进滚动轴承及其它设备故障诊断技术的应用和发展。
二、支持向量机(SVM)
1、支持向量机简介
支持向量机(Support Vector Machine 简称SVM)是Cortes和Vapnik于1995年首先提出的,
它在解决小样本、非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数
拟合等其他机器学习问题中。
它是建立在统计学习理论的VC维理论和结构风险最小原理基础上的,根据有限的样本信
息在模型的复杂性和学习能力之间寻求最佳折衷,以期获得最好的推广能力。
所谓VC维是对函数类的一种度量,可以简单的理解为问题的复杂程度,VC维越高,一个
问题就越复杂 。而SVM正是用来解决这个问题的,它基本不关乎维数的多少,和样本的维
数无关(有这样的能力也因为引入了核函数 )。
结构风险最小原理: 机器学习本质上就是一种对问题真实模型的逼近 ,真实风险应该
由两部分内容刻画,一是经验风险,代表了分类器在给定样本上的误差;二是置信风险,代
表了我们在多大程度上可以信任分类器在未知样本上分类的结果。置信风险与两个量有关, 一是样本数量,显然给定的样本数量越大,我们的学习结果越有可能正确,此时置信风险越 小;二是分类函数的VC维,VC维越大,推广能力越差,置信风险会变大。统计学习的目标从 经验风险最小化变为了寻求经验风险与置信风险的和最小,即结构风险最小。
支持向量机在形式上类似于多层前向网络,而且也可以被用于模式识别和非线性回归。
但是,支持向量机方法能够客服多层前向网络的固有缺陷,有以下几个优点:
(l)它是专门针对有限样本情况的,其目标是得到现有信息下的最优解而不仅仅是样本
数趋于无穷大时的最优值。
(2)算法最终将转化成为一个二次型寻优问题,从理论上说,得到的将是全局最优点。
(3)算法将实际问题通过非线性变换转换到高维的特征空间,在高维空间中构造线性判 别函数来实现原空间中的非线性判别函数,这一特殊的性质能保证机器有较好的泛化能力,
同时它巧妙地解决了维数问题,使得其算法复杂度与样本维数无关。
对于分类问题,神经网络仅仅能够解决问题并不能保证得到的分类器是最优的;而基于
统计学习理论的支持向量机方法能够从理论上实现对不同类别间的最优分类,拥 有最好的泛
化性能。
2、支持向量机国内外研究现状
1995年vapnik出版“The Nature of Statistical Learning Theory”,在国际范围内掀
起了学习研究统计学习理论(
Statistical Learning Theory,SLT )和支持向量机算法
(SupportVector Machines,SVM)的热潮,各领域的研究人员也纷纷将SLT理论和SVM算法分 别应用到模式识别、回归分析、函数逼近和信号处理等领域。1992年至1995年间,一种新型 的学习机器——支持向量机(SVM)在统计学习理论的基础上产生了,该算法在解决小样本 问题的同时解决了神经网络算法中的高维问题和局部极值问题。
近几年,支持向量机在故障诊断方面的应用在国内外都有了一定的发展。PoyhonenS等
应用于电子机器方面;Jun Feng Gao等将SVM用于往复式泵故障诊断;肖健华对SVM进行了理
论研究,针对样本不对称情况进行了算法改进,并应用于齿轮故障诊断中;胡寿松将SVM用 于非线性系统故障诊断;重庆大学博士马笑潇对SVM在智能故障诊断中的应用中进行了详细
的探讨;西安交通大学博士祝海龙在其博士学位论文中对统计学习理论的工程应用进行了不
同领域的研究,涉及信号消噪、机械故障诊断和人脸检测,研究了汽车发动机振动故障的自 动诊断;张周锁等对基于支持向量机的机械故障诊断方法进行了研究;董明等将其用于大型 电力变压器故障诊断模型研究;杨云在电子装备系统故障智能诊断中使用了SVM算法;朱凌 云等从数据挖掘的角度,运用SVM分类算法,进行自动缺陷识别的方法研究。
这些诊断研究针对不同故障对象,在理论和仿真方面都取得了基本令人满意的结果,这
表明了支持向量机算法适合于故障智能诊断领域,但是这些研究大都处于实验室阶段,在实
际应用中还存在着许多问题需要解决:①怎样建立更适合具体的问题分析的有效模型,; ② 如何选取最优核函数以及核函数参数。核函数及参数的选择直接影响到支持向量机的性能, 在选取方面还没有完整的理论依据。③如何建立合适的多故障分类器以进行准确快速分类。 ④有效的早期故障诊断等方面还需要进一步的研究和现场实践。
三、支持向量机(SVM)的算法
1、支持向量分类(SVC)算法
1.1 线性可分情形
SVM算法是从线性可分情况下的最优分类面(Optimal Hyperplane)提出的。图中实心
点和空心点分别表示两类训练样本,我们要用一条直线,将下图中实心的点和空心的点分开。
H为把两类没有错误地分开的分类线,H1,H 2分别为过各类样本中离分类线最近的点
且平行于分类线的直线,H1和H 2之间的距离叫做两类的分类空隙或分类间隔。所谓最优分
类线就是要求分类线不但能将两类无错误地分开,而且要使两类的分类空隙最大。前者是保 证经验风险最小(为0),而通过后面的讨论可以看到,使分类空隙最大实际上就是使推广性 的界中的置信范围最小,从而使真实风险最小。推广到高维空间,最优分类线就成为最优分 类面。
一般地, d 维空间中线性判别函数的一般形式为
g x wT x b ,分类面方程是
wT x b 0 ,我们将判别函数进行归一化,使两类所有样本都满足 g x 1,此时离分类
面最近的样本的
g x 1,而要求分类面对所有样本都能正确分类,就是要求它满足
y (wT x b) 1 0, i 1,2, , n 。
i
i
(1)
式(1)中使等号成立的那些样本叫做支持向量(Support Vectors)。两类样本的分类空隙 (Margin)的间隔大小:
Margin= 2 / w
(2)
因此,最优分类面问题可以表示成如下的约束优化问题,即在条件(1)的约束下,求函数
121
w w (wTw)
2 2
(3)
的最小值。为此,可以定义如下的Lagrange函数:
n 1
L(w, b, ) wT w [ y (wT x b) 1]
i i i 2
i1
(4)
其中, ai 0 为Lagrange系数,我们的问题是对w和b求Lagrange函数的最小值。把式(4)
分别对w、b、 求偏微分并令它们等于0,得:
i
L
0 w n
w L
0
b
i i i i1 n
i i i1
y x
y 0
L
0 [ y (wT x b) 1] 0
i i i
i
以上三式加上原约束条件可以把原问题转化为如下凸二次规划的对偶问题:
1nijijijT2maxayyx i1
ni
n
i1 j1
s.t
i
n
a y 0 i i
i1
(5)
这是一个不等式约束下二次函数机制问题,存在唯一最优解。若 * 为最优解,则
n
*w* a y x
i 1
i
i
i i
i
(6)
* 不为零的样本即为支持向量,因此,最优分类面的权系数向量是支持向量的线性组合。
b*可由约束条件 [ y (wT x b) 1] 0 求解,由此求得的最优分类函数是 :
i
i
i
n a* yx*xb*)f x sgn(( w* )T x b* ) sgn(
i1
i i i
(7)
sgn()为符号函数。
1.2 非线性可分情形
当用一个超平面不能把两类点完全分开时(只有少数点被错分) 可以引入松弛变量,
i
( ≥0, i 1, n ),使超平面 wT x b 0 满足:
i
y (wT x b) 1 i (8)
i
i
当0<<1时样本点xi仍旧被正确分类,而当≥1时样本点xi被错分。为此,引入以下目标
i i
函数:
n 1 T
(w, ) w w C i (9)
2
i1
其中C是一个正常数,称为惩罚因子,此时SVM可以通过二次规划(对偶规划)来实现:
n 1n injijijT2maxayyxi i1 j1 i1
s.t
i
n
a y 0 i i
i1
(10)
2、支持向量机(SVM)的核函数
若在原始空间中的简单超平面不能得到满意的分类效果,则必须以复杂的超曲面作为分 界面,SVM算法求得这一复杂超曲面原理如下。
首先通过非线性变换 将输入空间变换到一个高维空间,然后在这个新空间中求取最
优线性分类面,而这种非线性变换是通过定义适当的核函数(内积函数)实现的,令:
K ( x , x ) ( x ) ( x )
i
j
i
j
i
j
i
j
(11)
用核函数 K ( x , x ) 代替最优分类平面中的点积 x T x ,就相当于把原特征空间变换到 了某一新的特征空间,此时优化函数变为:
1 n n Q a a y y K x , x
i i 2 i1 j i j i j
n
(12)
i1 j1
而相应的判别函数式则为:
a*yK(x,x)b*)f x sgn[( w* )T ( x) b* ] sgn(n
i i i i1
(13)
其中 x 为支持向量, x 为未知向量,(13)式就是 SVM,在分类函数形式上类似于一个神经网
i
s 输出y sgn y K x x b
ii
络,其输出是若干中间层节点的线性组合,而每一个中间层节点对应于输入样本与一个支持 向量的内积,因此也被叫做支持向量网络,如下图:
i1 i
S个支持向量的
非线性变换
输入向量X
图:支持向量机网络图
由于最终的判别函数中实际只包含未知向量与支持向量的内积的线性组合,因 此识别时
的计算复杂度取决于支持向量的个数。
目前常用的核函数形式主要有以下三类,它们都与已有的算法有对应关系。
(1) 多项式形式的核函数,即 K x, x xT
x 1 q
i i
,对应
SVM 是一个 q 阶多项式分类器。
K x, x
(2) 径向基形式的核函数,即 exp{
x
x
2
i
i
,对应 2
}
SVM
是一种径向基函数分
类器。
(3)
S 形核函数,如 K x, x i
tanh(v( xT x i)
c),
则 SVM 实现的就是一个两层的感知器
神经网络,只是在这里不但网络的权值、而且网络的隐层节点数目也是由算法自动确定 的。
3、支持向量机的拟合算法
SVM 方法也可以很好地应用于函数拟合问题中,其思路与在模式识别中十分相似。首先
考虑用线性回归函数 f ( x) w x b 拟合数据 {x ,i
y }, i 1,...., n, x i R d , y i
R 的问题,
并假设所有训练数据都可以在精度ε下无误差地用线性函数拟合,即
i
yi w x b ,
i 1,..., n. (14) w xbi
i yi ,
与最优分类面中最大化分类间隔相似,这里控制函数集复杂性的方法是使回归函数最平
1 2
坦,它等价于最小化 w .考虑到允许拟合误差的情况,引入松弛因子 0 和 * 0 ,
i i 2
则条件(14)变成
w x b , y i i i 1,..., n. (15)
wi xby i i i * ,
n 1 2
优化目标变成最小化 w C ( * ) ,常数 C>0 控制对超出误差ε的样本的惩罚
i i 2
i1
程度.采用同样的优化方法可以得到其对偶问题.在条件
(
n i1
i
i
i
*i
) 0 ,
0 , * C , i 1,..., n
i
下,对 Lagrange 因子 , * 最大化目标函数
W ( , * ) ( * ) y ( * )
n
n
i
i
i1
i
i
i1
i
i
i
i
1
2 i, j 1
(
n
*
(16)
)( * ) x x
i i j i i j
(17)
得回归函数为
n f ( x) (w x) b ( * )( x x) b .
i1
i
i
i
(18)
与模式识别中的 SVM 方法一样,这里 , * 也将只有小部分不为 0,它们对应的样本
i
就是支持向量,一般是在函数变化比较剧烈的位置上的样本;而且这里也是只涉及内积运
i
算,只要用核函数 K ( x , x ) 替代(17),(18)中的内积运算就可以实现非线性函数拟合。
i
j
四、基于 SVM 的齿轮箱轴承故障诊断
1、测试诊断方案及原理
本文诊断数据来自故障诊断实验室齿轮箱实验,齿轮箱示意图大致如下:
测点1
测点3 测点5
测点2
测点4
测点6
实验测试时用振动加速度传感器分别测1—6个测点出的6个轴端轴承处的振动值,且每
个测点测垂直、水平和径向三组数据。现已知本齿轮箱测点5出存在一定故障(磨损或腐蚀),
为了达到对轴承故障进行诊断识别的目的,运用SVM分类方法对测得信号进行诊断分析。为
了突出SVM在解决小样本、非线性及高维模式识别中表现出许多特有的优势,在此假设由于
测点5出的轴承引起的故障信号经过轴的传递到达6测点时已经完全衰减,所以选取测点6出
的数据作为正常数据,进行模型的训练。本文选取的5、6两测点在转速600r/min和300r/min,
且加载0.88A也就是100kg的条件下测得的垂直轴向的振动加速度数据。
支持向量机(SVM)的轴承诊断原理流程大致如下图所示:
正常或故障
未知信号
信号采集 特征提取
识别诊断结果
轴承正常
正常信号
SVMstrain函数
诊 断 决
策
信号采集 特征提取
训练 预测
轴承故障
信号采集 (各种典型故
障信号)
状态信号
特征提取
图:轴承故障诊断识别原理图
2、测试数据的特征提取
对于滑动轴承一般采用其时域特征信号,时域信号特征主要有一下几个:
(1)平均值
平均值描述信号的稳定分量,又称直流分量。
1 N
x (t ) X
i N
i1
信号的均值反映信号中的静态部分,一般对诊断不起作用,但对计算其它参数有很大影 响,所以,一般在计算时应先从数据中去除均值,剩下对诊断有用的动态部分。
(2)均方值(有效值)
1 N
x2 (t ) X 2
i rms N
i1
有效值 Xrms 又称均方根值,是机械故障诊断系统中用于判别运转状态是否正常的重要 指标。因为有效值 Xrms 描述振动信号的能量,稳定性、重复性好,因而当这项指标超出正
常值(故障判定限)较多时,可以肯定机械存在故障隐患或故障,但是均方根值对早期故障 不敏感。若有效值 Xrms 的物理参数是速度(mm/s),就成为用于判定机械状态等级的振动烈 度指标。
(3)峰峰值指标
峰峰值(peak-to-peak,pk-pk)是指波形图中最大的正值和最大的负值之间的差。峰 值是以 0 刻度为基准的最大值,有正有负。这对故障信号来说其峰峰值明显要增大。
(4)脉冲指标
脉冲指标 Cf
C f
X
X
p
脉冲指标 Cf 和峰值指标 Ip 都是用来检测信号中是否存在冲击的统计指标。由于峰值 Xp 的稳定性不好,对冲击的敏感度也较差,因此在故障诊断系统中逐步应用减少,被峭度
指标所取代。
(5)峭度指标
峭度指标 Cq 反映振动信号中的冲击特征
1N
( x x )4
i N
i1 峭度指标 C
q X 4
rms
峭度指标 Cq 对信号中的冲击特征很敏感,正常情况下应该其值在 3 左右,如果这个值 接近 4 或超过 4,则说明机械的运动状况中存在冲击性振动。一般情况下是间隙过大、滑动
副表面存在破碎等原因。
一般,随着故障的增大,均方根值、方根幅值、绝对平均值、峭度及峰值会不同程度地
增大,且峭度最为敏感。峭度对探测信号中含有脉冲的故障最敏感、有效,早期故障发生时,
大幅脉冲不很多,此时均方根值变化不大,但峭度指标已增加,当故障发展时,这些指标会 增加,但到一定的程度会逐渐下降。所以它对早期故障敏感,但稳定性不好;
综上所述在轴承故障诊断中选取峰峰值,有效值,方差和峭度指标作为其特征向量。
特征向量的提取过程详见附页 1:SVM_data_feature_extraction.m
3、SVM 进行数据训练和测试
训练和测试的过程详见附页 2:SVMTraintest.m
(1)用 595-5(600r/min,100kg,测点 5)和 595-6(600r/min,100kg,测点 6)测试结 果如下:
testdatalabel = [1 1 1 1 2 2 2
1 1 1 1 2 2 2
1 1 1 1 2 2 2
1 1 1 1 2 2 2
1 1 1 1 2 2 2
1 1 1 2 2 2 2
1 1 1 2 2 2 2
1 1 1 2 2 2 2
1 1 1 2 2 2 2
1 1 1 2 2 2
1 1 1 2 2 2
1 1 1 2 2 2
1 1 1 2 2 2
1 1 1 2 2 2
1 1 1 2 2 2
2] (转置后的向量)
Accuracy = 100% (100/100) (classification)
predictlabel = [1 1 1 1 2 2 2
1 1 1 1 2 2 2
1 1 1 1 2 2 2
1 1 1 1 2 2 2
1 1 1 1 2 2 2
1 1 1 2 2 2 2
1 1 1 2 2 2 2
1 1 1 2 2 2 2
1 1 1 2 2 2 2
1 1 1 2 2 2 2]
1 1 1 2 2 2
1 1 1 2 2 2
1 1 1 2 2 2
1 1 1 2 2 2
1 1 1 2 2 2
(转置后的向量)
accuracy =
100 0 1
%准确率
%%表示均方误差(回归问题使用) %表示平方相关系数(回归问题使用)
(2)用 295-5(300r/min,100kg,测点 5)和 295-6(300r/min,100kg,测点 6)测试结 果如下:
testdatalabel = [ 1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1 2 2 2
1 1 2 2 2
1 2 2 2 2
1 2 2 2
1 2 2 2
1 2 2 2
1 2 2 2
1 2 2 2
1 2 2 2
1 2 2 2
1 2 2 2
1 2 2 2
1 2 2 2
1 2 2 2
1 2 2 2
1 2 2 2
2] (转置后的向量)
Accuracy = 83% (83/100) (classification)
predictlabel = [1 1 1 1 2 2 2
1 1 2 1 2 2 2
1 1 2 2 2 2 2
1 1 2 2 2 2
1 1 2 2 2 2
1 1 2 2 2 1
2 1 2 2 2 2
1 1 2 2 2 2
2 1 2 2 2 2
1 1 2 2 2 2
1 1 2 2 2 2
1 1 1 2 2 2
1 2 1 2 2 2
1 1 1 2 2 2
1 2 1 2 2 2
1 2 1 2 2 2
1] (转置后的向量)
accuracy =
83.0000 0.1700 0.4672
%表示分类准确率(分类问题使用) %表示均方误差(回归问题使用) %表示平方相关系数(回归问题使用)
结果说明:该结果是用 250 组数据进行训练,100 组数据进行测试,testdatalabel 为 定义测试数据真正类别矩阵,predictlabel 为预测结果的类别矩阵,第一组测试准确率 100%,
第二组测试准确率 83%,效果还不错,证明这种方法对齿轮箱滑动轴承的故障具有较好的诊 断识别能力。
附页 1
SVM_data_feature_extraction.m
% 特征提取(计算不同工况下的特征 峰峰值 平均值 均方根值 峭度)建立一个特征矩阵 function y=SVM_data_feature_extraction(p) B300_5=zeros(300,4); for j=1:300
%读取数据 k=j+29999;
sd=p(j:300:k);%save sd.mat; a=length(sd);
%峰峰值的求法
ff=max(sd)-min(sd);%计算并输出“峰峰值” pj=mean(sd);%求平均值
%有效值的求法(即均方根值) yx=0; for i=1:a
yx= yx+sd(i)*sd(i); end
yx = sqrt(yx/a);
%方差的求法
fc=0; for i=1:a
fc = fc+(sd(i) - pj) * (sd(i) - pj);
end
fc = fc /a;
%峭度的求法
qd=0;
for i=1:a
qd= qd+(sd(i) -pj)*(sd(i) -pj)*(sd(i) -pj)*(sd(i) -pj);
end
qd = qd /a; qd=qd/(yx^4);
%定义特征向量
B300_5(j,:)=[ff,yx,fc,qd];
end
y=B300_5;
附页 2
SVMTraintest.m
clear all clc
p=xlsread('data_cz.xlsx','595_5','A1000:A31300');%读取 excel 数据,分别为 excel 文件名,表名,A10000 到 A31300 的数据
%提取 300 个特征向量
B595_5=SVM_data_feature_extraction(p);%方法详见 SVM_data_feature_extraction.m
p=xlsread('data_cz.xlsx','595_6','A1000:A31300');%读取 excel 数据,分别为 excel 文件名,表名,A10000 到 A31300 的数据
B595_6=SVM_data_feature_extraction(p);%提取 300 个特征向量
%libsvm 利用提取的特征向量进行二分类实验(调用 svmtrain 和 svmpredict) data=zeros(500,4);%定义训练数据矩阵 %给训练矩阵赋值
data(1:250,:)=B595_5(1:250,:);%B595_5 的前 250 个特征向量赋给 data 的前 250 行 data(251:500,:)=B595_6(1:250,:);%B595_5 的后 250 个特征向量赋给 data 的后 250 行
%定义训练集标签矩阵 label,给不同的工况加标签 label=zeros(500,4); label=zeros(500,1);
label(1:250,:)=1;%1 表示 595_5 工况 label(251:500,:)=2;%2 表示 595_6 工况
%训练
model=svmtrain(label,data,'-s 0 -t 2 -c 1 -g 0.1');%调用 svmtrain 函数训练,label 为训练集标签,data 为训 练数据,最后一项核函数参数
%测试数据
testdata=zeros(100,4);
testdata(1:50,:)=B595_5(251:300,:);%B595_5 的后 50 个特征向量赋给 testdata 的前 50 行作为测试数据 testdata(51:100,:)=B595_6(251:300,:);%B595_6 的后 50 个特征向量赋给 testdata 的后 50 行作为测试数据
%设定测试标签
testdatalabel=zeros(100,1);
testdatalabel(1:50,:)=1;%属于 B595_5 定义为 1 testdatalabel(51:100,:)=2;%属于 B595_6 定义为 2 testdatalabel
%调用 svmprdict 进行预测
[predictlabel,accuracy]=svmpredict(testdatalabel,testdata,model)
因篇幅问题不能全部显示,请点此查看更多更全内容