1.本发明属于软件缺陷预测的技术领域,具体涉及一种基于域特征分布的跨项目软件缺陷预测方法,对已选出的源实例集进行实例选择优化,进一步提高跨项目缺陷预测结果。
背景技术:2.软件缺陷预测技术使用监督机器学习算法建立模型,比如支持向量机、决策树和朴素贝叶斯等,同时也有一些非监督算法被用于无标记数据样本的模型建立,比如knn等。
3.不同项目之间的数据差异较大,为了更好的利用其他项目的历史数据,研究者往往使用一些方法来缩小项目之间的数据分布差异,比如迁移学习等。
技术实现要素:4.本发明要解决的技术问题是提供一种基于域特征分布的跨项目软件缺陷预测方法,对目标项目和源项目中同标签实例的特征去均值化处理然后初步的进行源实例选择,接着由目标实例的去均值化向量构建适应域特征分布的实例集,有助于实现更好的跨项目缺陷预测效果。
5.为解决上述技术问题,本发明的实施例提供一种基于域特征分布的跨项目软件缺陷预测方法,包括如下步骤:
6.s1、构建项目向量集pvs;
7.s2、构建源域实例候选索引集sdci;
8.s3、构建源域实例候选集sdcs;
9.s4、构建适应域特征分布索引dfdi;
10.s5、构建适应域特征分布的训练集dfdd;
11.s6、构建基于域特征分布的跨项目软件缺陷预测方法dfdcp。
12.其中,步骤s1包括如下步骤:
13.s1.1、基于开源网站获取软件项目集合;
14.s1.2、以项目类作为实例构建项目实例集合;
15.s1.3、基于开源数据历史记录、项目源代码语法结构、源代码抽象语法树构建传统度量元集{wmc,dit,noc,cbo,rfc,lcom,lcom3,npm,dam,moa,mfa,cam,ic,cbm,amc,ca,ce,max_cc,avg_cc,loc},其中,wmc代表每个类的加权方法,dit代表继承树的深度,noc代表子类的数目,cbo代表对象类之间的耦合,rfc代表一个类的响应,lcom和lcom3代表在方法上缺少的凝聚力,npm代表公共类的个数,dam代表数据访问指标,moa代表聚合的量度,mfa代表功能抽象的量度,cam代表类方法之间的聚合,ic代表继承耦合,cbw代表方法之间的耦合,amc代表平均方法复杂度,ca代表传入耦合,ce代表传出耦合,max_cc代表mccabe圈复杂性的最大值,avg_cc代表mccabe圈复杂性的平均值,loc代表代码的行数;
16.s1.4、将源项目中的所有实例按步骤s1.3处理得到源项目传统度量元向量集
scpivs=[instance1,instance2,
…
,instancei],其中,i=1,2,3,
…
,n;
[0017]
s1.5、将目标项目中的所有实例按步骤s1.3处理得到目标项目传统度量元向量集tcpivs=[tradition_value1,tradition_value2,
…
,tradition_valuej],其中,j=1,2,3,
…
,m;
[0018]
s1.6、基于开源数据历史记录构建源项目实例标签slabel=[stag1,stag2,
…
,stagi],其中,i=1,2,3,
…
,n;该标签与步骤s1.4源项目传统度量元向量集scpivs中实例对应;
[0019]
s1.7、基于开源数据历史记录构建目标项目实例标签tlabel=[ttag1,ttag2,
…
,ttagj],其中,j=1,2,3,
…
,m;该标签与步骤s1.5目标项目传统度量元向量集tcpivs中实例对应;
[0020]
s1.8、构建项目向量集pvs={scpivs,slabel,tcpivs,tlabel}。
[0021]
其中,步骤s2包括如下步骤:
[0022]
s2.1、获取源项目传统度量元向量集scpivs和源项目实例标签slabel;
[0023]
s2.2、将步骤s2.1的源项目实例标签slabel分类处理,构建源项目正向索引列表sppil和源项目负向索引列表spnil;
[0024]
s2.3、使用sppil对scpivs选择得到源项目正向数据集sdpds,使用spnil对scpivs选择得到源项目负向数据集sdnds;
[0025]
s2.4、将sdpds中每个实例的度量元减去所有实例对应该度量元的平均值,得到源项目正向去均值化数据集sppdm;
[0026]
s2.5、将sdnds中每个实例的度量元减去所有实例对应该度量元的平均值,得到源项目负向去均值化数据集spndm;
[0027]
s2.6、将步骤s2.4的sppdm和步骤s2.5的spndm组合后按原实例顺序排列,计算每一个去均值化实例向量的最小值、最大值、平均值、标准差和中位数,将这五个数值作为实例的新特征向量,最后得到源项目去均值化实例集sdms;
[0028]
s2.7、将步骤s1的目标项目传统度量元向量集tcpivs和目标项目实例标签tlabel执行步骤s2.1~s2.6,得目标项目去均值化实例集tdms;
[0029]
s2.8、设置选择去均值化实例个数为k;
[0030]
s2.9、计算tdms中的一个去均值化实例向量与sdms中所有去均值化源实例向量之间的欧式距离,将欧式距离按从小到大排序并选择前k个欧氏距离对应的源实例索引;
[0031]
s2.10、将tdms中所有去均值化实例向量按照步骤s2.9处理组合并去重,由此构建源域实例候选索引集sdci。
[0032]
其中,步骤s3包括如下步骤:
[0033]
s3.1、使用步骤s2得到的源域实例候选索引集sdci对源项目去均值化实例集sdms进行选择,得到源域实例候选特征集sdcs-d;
[0034]
s3.2、使用步骤s2得到的源域实例候选索引集sdci对源项目实例标签slabel进行选择,得到源域实例候选标签集sdcs-l;
[0035]
s3.3、构建源域实例候选集sdcs={sdcs-d,sdcs-l}。
[0036]
其中,步骤s4包括如下步骤:
[0037]
s4.1、获取步骤s3的源域实例候选数据集sdcs-d;
[0038]
s4.2、获取步骤s2的目标项目去均值化实例集tdms;
[0039]
s4.3、构建单个目标实例域特征分布索引空列表sidfd,构建步骤s4.1的sdcs-d实例索引集;
[0040]
s4.4、选择tdms中的一个实例向量;
[0041]
s4.5、若sidfd为空,则将该目标实例域候选集特征定义为步骤s4.4的实例向量,然后计算该目标实例域候选集特征与sdcs-d中所有源实例的欧氏距离,将最小距离的实例索引加入到sidfd并将该索引从sdcs-d实例索引集中删除;若sidfd不为空,则将该目标实例域候选集特征定义为该目标实例域候选集中所有实例向量按度量元计算标准差得到的标准差列表,然后计算该标准差列表和sdcs-d实例索引集中所有的欧氏距离,将最小距离的实例索引加入到sidfd并将该索引从sdcs-d实例索引集中删除;
[0042]
s4.6、设置选择适应域特征分布索引个数为q;
[0043]
s4.7、当sidfd长度满足q时,停止s4.4目标实例选择源实例;
[0044]
s4.8、将tdms中所有目标实例按照步骤s4.3~s4.5执行得到每个目标实例的单个目标实例域特征分布索引;
[0045]
s4.9、将步骤s4.8得到的每个目标实例的单个目标实例域特征分布索引组合后去重构建适应域特征分布索引dfdi。
[0046]
其中,步骤s5包括如下步骤:
[0047]
s5.1、使用步骤s4得到的适应域特征分布索引dfdi对源域实例候选数据集sdcs-d进行选择,得到适应域特征分布的训练特征集dfdd-d;
[0048]
s5.2、使用步骤s4得到的适应域特征分布索引dfdi对源域实例候选标签集sdcs-l进行选择,得到适应域特征分布的训练标签集dfdd-l;
[0049]
s5.3、构建适应域特征分布的训练集dfdd={dfdd-d,dfdd-l}。
[0050]
其中,步骤s6包括如下步骤:
[0051]
s6.1、通过步骤s1得到项目向量集pvs={scpivs,slabel,tcpivs,tlabel};
[0052]
s6.2、通过步骤s2得到源域实例候选索引集sdci;
[0053]
s6.3、通过步骤s3得到源域实例候选特征集sdcs-d和源域实例候选标签集sdcs-l;
[0054]
s6.4、通过步骤s4得到适应域特征分布索引dfdi;
[0055]
s6.5、通过步骤s5得到适应域特征分布的训练特征集dfdd-d和适应域特征分布的训练标签集dfdd-l;
[0056]
s6.6、使用logistic分类算法对步骤s6.5的适应域特征分布的训练特征集dfdd-d和适应域特征分布的训练标签集dfdd-l进行模型训练;
[0057]
s6.7、将步骤s6.6训练得到的模型对步骤s2的目标项目去均值化实例集tdms进行缺陷预测,得到预测标签集pred_label,结合目标项目实例标签tlabel通过公式计算得到f-score;
[0058]
s6.8、得到基于域特征分布的跨项目软件缺陷预测方法dfdcp。
[0059]
本发明的上述技术方案的有益效果如下:
[0060]
本发明提供一种基于域特征分布的跨项目软件缺陷预测方法,在源域实例候选集中,由目标实例的去均值化向量进行实例再选择,构建适应域特征分布的实例集,将选出的
所有源实例组成训练数据集,使用该训练数据集建立跨项目缺陷预测模型,有助于实现更好的跨项目缺陷预测效果。
附图说明
[0061]
图1为本发明的流程框图;
[0062]
图2为本发明中适应域特征分布的训练集dfdd流程图;
[0063]
图3为本发明中不同k下选中的实例个数图;
[0064]
图4为本发明中不同k下使用logistic得到的f-score图。
具体实施方式
[0065]
为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
[0066]
如图1所示,本发明提供一种基于域特征分布的跨项目软件缺陷预测方法,包括如下步骤:
[0067]
s1、构建项目向量集pvs;
[0068]
s2、构建源域实例候选索引集sdci;
[0069]
s3、构建源域实例候选集sdcs;
[0070]
s4、构建适应域特征分布索引dfdi;
[0071]
s5、构建适应域特征分布的训练集dfdd;
[0072]
s6、构建基于域特征分布的跨项目软件缺陷预测方法dfdcp。
[0073]
步骤s1、构建项目向量集pvs的具体步骤如下:
[0074]
s1.1、基于开源网站获取软件项目集合;
[0075]
s1.2、以项目类作为实例构建项目实例集合;
[0076]
s1.3、基于开源数据历史记录、项目源代码语法结构、源代码抽象语法树构建特征集{wmc,dit,noc,cbo,rfc,lcom,lcom3,npm,dam,moa,mfa,cam,ic,cbm,amc,ca,ce,max_cc,avg_cc,loc},其中,wmc代表每个类的加权方法,dit代表继承树的深度,noc代表子类的数目,cbo代表对象类之间的耦合,rfc代表一个类的响应,lcom和lcom3代表在方法上缺少的凝聚力,npm代表公共类的个数,dam代表数据访问指标,moa代表聚合的量度,mfa代表功能抽象的量度,cam代表类方法之间的聚合,ic代表继承耦合,cbw代表方法之间的耦合,amc代表平均方法复杂度,ca代表传入耦合,ce代表传出耦合,max_cc代表mccabe圈复杂性的最大值,avg_cc代表mccabe圈复杂性的平均值,loc代表代码的行数。
[0077]
s1.4、将源项目中的所有实例按上述步骤处理得到源项目传统度量元向量集scpivs=[tradition_value1,tradition_value2,
…
,tradition_valuei],其中i=1,2,3,
…
,n;
[0078]
s1.5、将目标项目中的所有实例按照相同的步骤处理得到目标项目传统度量元向量集tcpivs=[tradition_value1,tradition_value2,
…
,tradition_valuej],其中,j=1,2,3,
…
,m。
[0079]
s1.6、基于开源数据历史记录构建源项目实例标签slabel=[stag1,stag2,
…
,stagi]。其中i=1,2,3,
…
,n;该标签与源项目传统度量元向量集scpivs中实例对应;
[0080]
s1.7、基于开源数据历史记录构建目标项目实例标签tlabel=[ttag1,ttag2,
…
,ttagj]。其中j=1,2,3,
…
,m;该标签与目标项目传统度量元向量集tcpivs中实例对应。
[0081]
s1.8、构建项目向量集pvs={scpivs,slabel,tcpivs,tlabel}。
[0082]
步骤s2、构建源域实例候选索引集sdci的具体步骤如下:
[0083]
s2.1、获取源项目传统度量元向量集scpivs和源项目实例标签slabel。
[0084]
s2.2、将步骤s2.1的源项目实例标签slabel分类处理,构建源项目正向索引列表sppil和源项目负向索引列表spnil;
[0085]
s2.3、使用sppil对scpivs选择得到源项目正向数据集sdpds,使用spnil对scpivs选择得到源项目负向数据集sdnds。
[0086]
s2.4、将sdpds中每个实例的度量元减去所有实例对应该度量元的平均值,得到源项目正向去均值化数据集sppdm;
[0087]
s2.5、将sdnds中每个实例的度量元减去所有实例对应该度量元的平均值,得到源项目负向去均值化数据集spndm。
[0088]
s2.6、将步骤s2.4的sppdm和步骤s2.5的spndm组合后按原实例顺序排列,计算每一个去均值化实例向量的最小值、最大值、平均值、标准差和中位数,将这五个数值作为实例的新特征向量,最后得到源项目去均值化实例集sdms;
[0089]
s2.7、将步骤s1.5的目标项目传统度量元向量集tcpivs和步骤s1.7目标项目实例标签tlabel执行步骤s2.1~s2.6,得目标项目去均值化实例集tdms。
[0090]
s2.8、设置选择去均值化实例个数为k;
[0091]
s2.9、计算tdms中的一个去均值化实例向量与sdms中所有去均值化源实例向量之间的欧式距离,将欧式距离按从小到大排序并选择前k个欧氏距离对应的源实例索引;
[0092]
s2.10、将tdms中所有去均值化实例向量按照步骤s2.9处理组合并去重,由此构建源域实例候选索引集sdci。
[0093]
步骤s3、构建源域实例候选集sdcs的具体步骤如下:
[0094]
s3.1、使用步骤s2.10得到的源域实例候选索引集sdci对源项目去均值化实例集sdms进行选择,得到源域实例候选特征集sdcs-d。
[0095]
s3.2、使用步骤s2.10得到的源域实例候选索引集sdci对源项目实例标签slabel进行选择,得到源域实例候选标签集sdcs-l。
[0096]
s3.3、由上述步骤构建源域实例候选集sdcs={sdcs-d,sdcs-l}。
[0097]
步骤s4、构建适应域特征分布索引dfdi的具体步骤如下:
[0098]
s4.1、获取步骤s3.3的源域实例候选数据集sdcs-d;
[0099]
s4.2、获取步骤s2.7的目标项目去均值化实例集tdms。
[0100]
s4.3、构建单个目标实例域特征分布索引空列表sidfd,构建步骤s4.1的sdcs-d实例索引集;
[0101]
s4.4、选择tdms中的一个实例向量;
[0102]
s4.5、若sidfd为空,则将该目标实例域候选集特征定义为步骤s4.4的实例向量,然后计算该目标实例域候选集特征与sdcs-d中所有源实例的欧氏距离,将最小距离的实例索引加入到sidfd并将该索引从sdcs-d实例索引集中删除;若sidfd不为空,则将该目标实例域候选集特征定义为该目标实例域候选集中所有实例向量按度量元计算标准差得到的
标准差列表,然后计算该标准差列表和sdcs-d实例索引集中所有的欧氏距离,将最小距离的实例索引加入到sidfd并将该索引从sdcs-d实例索引集中删除;
[0103]
s4.6、设置选择适应域特征分布索引个数为3;
[0104]
s4.7、当sidfd长度满足3时,停止s4.4目标实例选择源实例。
[0105]
s4.8、将tdms中所有目标实例按照步骤s4.3~s4.5执行得到每个目标实例的单个目标实例域特征分布索引。
[0106]
s4.9、将步骤s4.8得到的每个目标实例的单个目标实例域特征分布索引组合后去重,构建适应域特征分布索引dfdi。
[0107]
步骤s5、构建适应域特征分布的训练集dfdd的具体步骤如下:
[0108]
s5.1、使用步骤s4.7得到的适应域特征分布索引dfdi对源域实例候选数据集sdcs-d进行选择,得到适应域特征分布的训练特征集dfdd-d。
[0109]
s5.2、使用步骤s4.7得到的适应域特征分布索引dfdi对源域实例候选标签集sdcs-l进行选择,得到适应域特征分布的训练标签集dfdd-l。
[0110]
s5.3、构建适应域特征分布的训练集dfdd={dfdd-d,dfdd-l}。
[0111]
构建适应域特征分布的训练集dfdd的流程图如图2所示。
[0112]
步骤s6、构建基于域特征分布的跨项目软件缺陷预测方法dfdcp的具体步骤如下:
[0113]
选择poi-3.0作为源项目,选择camel-1.2作为目标项目。根据源项目实例情况构建源项目传统度量元向量集scpivs和源项目实例标签slabel,根据目标项目实例情况构建目标项目传统度量元向量集tcpivs和目标项目实例标签tlabel。
[0114]
按上述定义的构构建源域实例候选索引集方法得到源域实例候选索引集sdci。
[0115]
按上述定义的构建源域实例候选集方法得到源域实例候选集sdcs={sdcs-d,sdcs-l}。
[0116]
按上述定义的构构建适应域特征分布索引方法,得到适应域特征分布索引dfdi。
[0117]
将选择特征个数k设置在1到10范围内,在每一个k下获得适应域特征分布的训练集dfdd={dfdd-d,dfdd-l}。
[0118]
使用logistic分类器对适应域特征分布的训练集dfdd建立分类模型并预测,通过实验表明,该模型得到的f-score值最大为0.708,该值大于没有使用该实例选择方法得到的0.453;通过本发明建立的模型性能优于没有使用该实例选择方法建立的模型,从而表明基于域特征分布的跨项目软件缺陷预测方法的有效性。
[0119]
不同k下选中的实例个数如图3所示。
[0120]
不同k下使用logistic得到的f-score如图4所示。
[0121]
本发明提供一种基于域特征分布的跨项目软件缺陷预测方法,合理的对源项目中实例进行选择,在源域实例候选集中,由目标实例的去均值化向量进行实例再选择,构建适应域特征分布的实例集,将选出的所有源实例组成训练数据集,使用该训练数据集建立跨项目缺陷预测模型,有助于实现更好的跨项目缺陷预测效果。
[0122]
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
技术特征:1.一种基于域特征分布的跨项目软件缺陷预测方法,其特征在于,包括如下步骤:s1、构建项目向量集pvs;s2、构建源域实例候选索引集sdci;s3、构建源域实例候选集sdcs;s4、构建适应域特征分布索引dfdi;s5、构建适应域特征分布的训练集dfdd;s6、构建基于域特征分布的跨项目软件缺陷预测方法dfdcp。2.根据权利要求1所述的基于域特征分布的跨项目软件缺陷预测方法,其特征在于,步骤s1包括如下步骤:s1.1、基于开源网站获取软件项目集合;s1.2、以项目类作为实例构建项目实例集合;s1.3、基于开源数据历史记录、项目源代码语法结构、源代码抽象语法树构建传统度量元集{wmc,dit,noc,cbo,rfc,lcom,lcom3,npm,dam,moa,mfa,cam,ic,cbm,amc,ca,ce,max_cc,avg_cc,loc},其中,wmc代表每个类的加权方法,dit代表继承树的深度,noc代表子类的数目,cbo代表对象类之间的耦合,rfc代表一个类的响应,lcom和lcom3代表在方法上缺少的凝聚力,npm代表公共类的个数,dam代表数据访问指标,moa代表聚合的量度,mfa代表功能抽象的量度,cam代表类方法之间的聚合,ic代表继承耦合,cbw代表方法之间的耦合,amc代表平均方法复杂度,ca代表传入耦合,ce代表传出耦合,max_cc代表mccabe圈复杂性的最大值,avg_cc代表mccabe圈复杂性的平均值,loc代表代码的行数;s1.4、将源项目中的所有实例按步骤s1.3处理得到源项目传统度量元向量集scpivs=[instance1,instance2,
…
,instance
i
],其中,i=1,2,3,
…
,n;s1.5、将目标项目中的所有实例按步骤s1.3处理得到目标项目传统度量元向量集tcpivs=[tradition_value1,tradition_value2,
…
,tradition_value
j
],其中,j=1,2,3,
…
,m;s1.6、基于开源数据历史记录构建源项目实例标签slabel=[stag1,stag2,
…
,stag
i
],其中,i=1,2,3,
…
,n;该标签与步骤s1.4源项目传统度量元向量集scpivs中实例对应;s1.7、基于开源数据历史记录构建目标项目实例标签tlabel=[ttag1,ttag2,
…
,ttag
j
],其中,j=1,2,3,
…
,m;该标签与步骤s1.5目标项目传统度量元向量集tcpivs中实例对应;s1.8、构建项目向量集pvs={scpivs,slabel,tcpivs,tlabel}。3.根据权利要求1所述的基于域特征分布的跨项目软件缺陷预测方法,其特征在于,步骤s2包括如下步骤:s2.1、获取源项目传统度量元向量集scpivs和源项目实例标签slabel;s2.2、将步骤s2.1的源项目实例标签slabel分类处理,构建源项目正向索引列表sppil和源项目负向索引列表spnil;s2.3、使用sppil对scpivs选择得到源项目正向数据集sdpds,使用spnil对scpivs选择得到源项目负向数据集sdnds;s2.4、将sdpds中每个实例的度量元减去所有实例对应该度量元的平均值,得到源项目正向去均值化数据集sppdm;
s2.5、将sdnds中每个实例的度量元减去所有实例对应该度量元的平均值,得到源项目负向去均值化数据集spndm;s2.6、将步骤s2.4的sppdm和步骤s2.5的spndm组合后按原实例顺序排列,计算每一个去均值化实例向量的最小值、最大值、平均值、标准差和中位数,将这五个数值作为实例的新特征向量,最后得到源项目去均值化实例集sdms;s2.7、将步骤s1的目标项目传统度量元向量集tcpivs和目标项目实例标签tlabel执行步骤s2.1~s2.6,得目标项目去均值化实例集tdms;s2.8、设置选择去均值化实例个数为k;s2.9、计算tdms中的一个去均值化实例向量与sdms中所有去均值化源实例向量之间的欧式距离,将欧式距离按从小到大排序并选择前k个欧氏距离对应的源实例索引;s2.10、将tdms中所有去均值化实例向量按照步骤s2.9处理组合并去重,由此构建源域实例候选索引集sdci。4.根据权利要求1所述的基于域特征分布的跨项目软件缺陷预测方法,其特征在于,步骤s3包括如下步骤:s3.1、使用步骤s2得到的源域实例候选索引集sdci对源项目去均值化实例集sdms进行选择,得到源域实例候选特征集sdcs-d;s3.2、使用步骤s2得到的源域实例候选索引集sdci对源项目实例标签slabel进行选择,得到源域实例候选标签集sdcs-l;s3.3、构建源域实例候选集sdcs={sdcs-d,sdcs-l}。5.根据权利要求1所述的基于域特征分布的跨项目软件缺陷预测方法,其特征在于,步骤s4包括如下步骤:s4.1、获取步骤s3的源域实例候选数据集sdcs-d;s4.2、获取步骤s2的目标项目去均值化实例集tdms;s4.3、构建单个目标实例域特征分布索引空列表sidfd,构建步骤s4.1的sdcs-d实例索引集;s4.4、选择tdms中的一个实例向量;s4.5、若sidfd为空,则将该目标实例域候选集特征定义为步骤s4.4的实例向量,然后计算该目标实例域候选集特征与sdcs-d中所有源实例的欧氏距离,将最小距离的实例索引加入到sidfd并将该索引从sdcs-d实例索引集中删除;若sidfd不为空,则将该目标实例域候选集特征定义为该目标实例域候选集中所有实例向量按度量元计算标准差得到的标准差列表,然后计算该标准差列表和sdcs-d实例索引集中所有的欧氏距离,将最小距离的实例索引加入到sidfd并将该索引从sdcs-d实例索引集中删除;s4.6、设置选择适应域特征分布索引个数为q;s4.7、当sidfd长度满足q时,停止s4.4目标实例选择源实例;s4.8、将tdms中所有目标实例按照步骤s4.3~s4.5执行得到每个目标实例的单个目标实例域特征分布索引;s4.9、将步骤s4.8得到的每个目标实例的单个目标实例域特征分布索引组合后去重构建适应域特征分布索引dfdi。6.根据权利要求1所述的基于域特征分布的跨项目软件缺陷预测方法,其特征在于,步
骤s5包括如下步骤:s5.1、使用步骤s4得到的适应域特征分布索引dfdi对源域实例候选数据集sdcs-d进行选择,得到适应域特征分布的训练特征集dfdd-d;s5.2、使用步骤s4得到的适应域特征分布索引dfdi对源域实例候选标签集sdcs-l进行选择,得到适应域特征分布的训练标签集dfdd-l;s5.3、构建适应域特征分布的训练集dfdd={dfdd-d,dfdd-l}。7.根据权利要求1所述的基于域特征分布的跨项目软件缺陷预测方法,其特征在于,步骤s6包括如下步骤:s6.1、通过步骤s1得到项目向量集pvs={scpivs,slabel,tcpivs,tlabel};s6.2、通过步骤s2得到源域实例候选索引集sdci;s6.3、通过步骤s3得到源域实例候选特征集sdcs-d和源域实例候选标签集sdcs-l;s6.4、通过步骤s4得到适应域特征分布索引dfdi;s6.5、通过步骤s5得到适应域特征分布的训练特征集dfdd-d和适应域特征分布的训练标签集dfdd-l;s6.6、使用logistic分类算法对步骤s6.5的适应域特征分布的训练特征集dfdd-d和适应域特征分布的训练标签集dfdd-l进行模型训练;s6.7、将步骤s6.6训练得到的模型对步骤s2的目标项目去均值化实例集tdms进行缺陷预测,得到预测标签集pred_label,结合目标项目实例标签tlabel通过公式计算得到f-score;s6.8、得到基于域特征分布的跨项目软件缺陷预测方法dfdcp。
技术总结本发明提供一种基于域特征分布的跨项目软件缺陷预测方法,包括如下步骤:S1、构建项目向量集PVS;S2、构建源域实例候选索引集SDCI;S3、构建源域实例候选集SDCS;S4、构建适应域特征分布索引DFDI;S5、构建适应域特征分布的训练集DFDD;S6、构建基于域特征分布的跨项目软件缺陷预测方法DFDCP。本发明提出一种基于域特征分布的跨项目软件缺陷预测方法,在源域实例候选集中,由目标实例的去均值化向量进行实例再选择,构建适应域特征分布的实例集,使用该方法构建的训练集有利于进一步建立精确的跨项目缺陷预测模型,实现更好的跨项目缺陷预测效果。测效果。测效果。
技术研发人员:张瑞年 陈义 祁佳篁 尹思文 王超 郭伟琪 文万志 程实
受保护的技术使用者:南通大学
技术研发日:2022.06.23
技术公布日:2022/11/1