【技术实现步骤摘要】
一种基于Stacking集成学习的软件缺陷预测方法
[0001]本专利技术涉及一种基于Stacking集成学习的软件缺陷预测方法,属于软件缺陷预测
技术介绍
[0002]计算机行业近年来的迅猛发展,给全世界几乎所有产业带来了新的活力,现代人的生活已经完全被计算机科学所改变。随着计算机科学不断融入人们的生活,人们越来越离不开软件程序。软件不仅仅作为一种不可或缺的工具,给人们的衣食住行提供便利,还改变了人类的工作方式和思维方式,不断推动文明的进步。
[0003]在这样的背景下,软件用户数量不断暴涨,带来了更多的软件需求也带来了一系列问题,如软件系统的功能模块和内部结构愈加复杂、开发人员越来越多、开发难度增加、出现软件缺陷等。其中,软件缺陷是最为严重的问题,轻则影响软件质量导致软件无法实现原有的功能,重则造成经济损失和人身安全。为了避免由软件缺陷导致的经济损失、人身安全等重大事故,对软件进行缺陷预测是很有必要的。在早期就预测出存在缺陷的软件模块,能够使软件从业人员对软件模块进行修改,避免存在缺陷的软件应用到重要的生活领域,提高了软件正确性、可靠性的同时,也保障了软件的安全从而避免了事故的发生。
[0004]软件缺陷预测技术诞生于上世纪70年代,该技术通过软件或者模块产生的以某些度量标准对应的历史缺陷数据进行分析。现如今,软件缺陷预测大多使用统计学领域和机器学习领域的方法来探究软件缺陷和软件度量属性的关系,以预测软件模块中软件是否存在缺陷或对软件缺陷数量进行预测。最近几年的时间,人工智能的课题逐步变
【技术保护点】
【技术特征摘要】
1.一种基于Stacking集成学习的软件缺陷预测方法,其特征在于该方法的步骤包括:第一步,使用代码行数度量法提取测试软件样本的一类特征,使用Halstead科学度量法提取测试软件样本的二类特征,使用McCabe度量法提取测试软件样本的三类特征,使用CK度量法提取测试软件样本的四类特征;第二步,将第一步得到的一类特征、二类特征、三类特征和四类特征进行汇总,得到测试软件的数据集D;第三步,对第二步得到的数据集D进行数据预处理;第四步,用RF模型、XGBoost模型和SVM模型构建初级模型,将数据集D分为训练集D
train
和测试集D
test
,训练集D
train
样本数量为N,测试集D
test
样本数量为M;第五步,构建次级模型LR的新训练集C
train
和新测试集C
test
,将P1,P2,P3合并成为新训练集的样本的C
train
的二次特征集合X
train
,将Y
true_1
作为新训练集C
train
的样本的目标值集合,将T1,T2,T3组合成集合X
test
作为输入到次级模型LR的新测试集C
test
的样本的二次特征集合,将Y
true_2
作为新测试集C
test
的样本的目标值集合,将新训练集{X
train
,Y
true_1
}训练次级模型LR,将新测试集{X
test
,Y
true_2
}的特征值集合输入训练好的次级模型LR得到预测值Y
predict
,初级模型和训练后的次级模型LR形成复合模型;第六步,将待测试软件样本代入到训练好的复合模型中进行预测,得到待测试软件样本的缺陷预测结果;第七步,进行复合模型的预测性能的评估;将Y
predict
和Y
true_2
进行对比计算,得到复合模型的预测的各评价指标,完成基于Stacking集成学习的软件缺陷预测。2.根据权利要求1所述的一种基于Stacking集成学习的软件缺陷预测方法,其特征在于:所述的第一步中,一类特征为与代码行数相关的度量元,包括测试软件样本的代码总行数、注释行数、实际运行行数、方法行数。3.根据权利要求1所述的一种基于Stacking集成学习的软件缺陷预测方法,其特征在于:所述的第一步中,二类特征为测试软件样本的程序长度、程序容量、语言等级、编写效率、编写耗时度量元。4.根据权利要求1所述的一种基于Stacking集成学习的软件缺陷预测方法,其特征在于:所述的第一步中,三类特征为测试软件样本的循环结构数量、程序选择结构的数量度量元。5.根据权利要求1所述的一种基于Stacking集成学习的软件缺陷预测方法,其特征在于:所述的第一步中,四类特征为测试软件样本的类中方法数、类继承深度、类的直接子类个数、类的耦合类个数、类中方法调用总数、类内方法引用实例数度量元。6.根据权利要求1所述的一种基于Stacking集成学习的软件缺陷预测方法,其特征在于:所述的第三步中,对第二步得到的数据集D进行数据预处理的具体步骤包括:(1)去除含有异常值或缺失值的样本;(2)对样本的特征进行标准化处理;(3)统一规范化样本目标
值,将有缺陷类样本的目标值设置为1,无缺陷类样本的目标值设置为0。7.根据权利要求1所述的一种基于Stacking集成学习的软件缺陷预测方法,其特征在于:所述的第四步中,RF模型的训练方法为:首先使用数据集D对RF模型进行训练,采用K折交叉验证法训练,方法为:将训练集均分为K份互斥的子数据集{D
train_1
,D
train_2
,...,D
train_K
},重复K次以下操作:将第i份子数据集D
train_i
作为验证集D
v_i
i∈(1,2,...,K),其余K
‑
1份子数据集作为新训练集D
t_i
输入到RF模型中进行训练,将验证集输入到经过新训练集D
t_i
训练好的RF模型中得到预测结果P
1i
,将测试集输入到经过新训练集D
t_i
训练好的RF模型中得到预测结果T
1i
,直到i>K结束此操作;复完上述的K次操作之后,得到P
11
,P
12
,...,P
1k
共K个...
【专利技术属性】
技术研发人员:单纯,张浩伦,廖书妍,周彦哲,彭哲恒,
申请(专利权)人:北京理工大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。