1.一种跨项目软件缺陷预测方法,其特征在于:包括以下步骤:步骤1:从软件缺陷数据库中筛选出不同于目标项目T的所有项目,将其整合成一个源项目S,将源项目S作为训练集,目标项目T作为测试集;
步骤2:采用先min‑max再自然对数变换相结合的变换方法,对训练集及测试集的各个特征列进行归一化处理,得到新的训练集P和测试集Q;
步骤3:采用训练集P构建朴素贝叶斯分类器,对测试集Q进行预测,朴素贝叶斯分类器输出测试集Q中每个实例存在缺陷的可能性值a;采用训练集P构建最近邻分类器,对测试集Q进行预测,最近邻分类器输出测试集Q中每个实例存在缺陷的可能性值b;
步骤4:利用可能性值a和可能性值b对测试集Q中所有实例进行标记,得到标记结果c,所述标记结果c的标记值为0时,表示实例没有缺陷,标记值为0.5时,表示实例存在普通缺陷,标记值为1时,表示实例存在严重缺陷;
步骤5:根据标记结果c,判断实例是否存在缺陷;
其中,所述步骤3中采用式(2)计算得到可能性值a:式中,输入空间 为n维向量的集合,输出空间为类标记集合ψ={0,1},输入为特征
1 2 n
向量x∈χ,x=(x ,x ,...,x),即测试集Q中的每一个实例,输出为类标记ck∈ψ,ck=1表示实例存在缺陷,ck=0表示实例没有缺陷,X是定义在输入空间χ上的随机向量,Y是定义在输出空间ψ上的随机变量,P(X,Y)是X和Y的联合概率分布,训练集P={(x1,y1),(x2,y2),...,(xn,yn)}由P(X,Y)独立同分布产生;
所述步骤3中计算可能性值b的步骤为:最近邻分类器使用欧式距离来度量距离,欧式距离计算公式如下:式中,
根据给定的距离度量,在训练集P中找出与测试集Q中每个实例x最近邻的实例向量xt,得到该实例向量xt所属的类yt,则可能性值b的计算公式如下:b=yt (4)。
2.根据权利要求1所述的一种跨项目软件缺陷预测方法,其特征在于:所述源项目中不得有与目标项目中同项目的数据。
3.根据权利要求1所述的一种跨项目软件缺陷预测方法,其特征在于:所述步骤2中采用式(1)对训练集的各个特征列进行归一化处理;
j
式中,向量S为源项目S中第j个度量元,其第i个程序模块对应的度量元取值为 maxj j
(S)和min(Sj)分别为向量S中的最大值和最小值;
采用式(1)对测试集的各个特征列进行归一化处理,生成测试集Q。
4.根据权利要求1所述的一种跨项目软件缺陷预测方法,其特征在于:所述步骤5中采用式(5)计算得到标记结果c:式中,I为指示函数,当a≥0.5时I为1,否则I为0。
5.基于权利要求1至4任意一项所述的一种跨项目软件缺陷预测方法的预测系统,其特征在于:包括:
源项目整合模块,用于对从软件缺陷数据库中筛选出不同于目标项目T的所有项目进行整合,得到源项目;
归一化处理模块,用于对源项目和目标项目中的各个特征列进行归一化处理,得到训练集P和测试集Q;
朴素贝叶斯分类器,用于对测试集Q进行预测,根据下式输出测试集Q中每个实例存在缺陷的可能性值a:
式中,输入空间 为n维向量的集合,输出空间为类标记集合ψ={0,1},输入为特征
1 2 n
向量x∈χ,x=(x ,x ,...,x),即测试集Q中的每一个实例,输出为类标记ck∈ψ,ck=1表示实例存在缺陷,ck=0表示实例没有缺陷,X是定义在输入空间χ上的随机向量,Y是定义在输出空间ψ上的随机变量,P(X,Y)是X和Y的联合概率分布,训练集P={(x1,y1),(x2,y2),...,(xn,yn)}由P(X,Y)独立同分布产生;
最近邻分类器,用于对测试集Q进行预测,根据下式输出测试集Q中每个实例存在缺陷的可能性值b:
通过欧式距离来得到距离度量:
式中,xi,xj∈χ,
根据给定的距离度量,在训练集P中找出与测试集Q中每个实例x最近邻的实例向量xt,得到该实例向量xt所属的类yt,则可能性值b的计算公式如下:b=yt (4);
标记模块,用于利用可能性值a和可能性值b对测试集Q中所有实例进行标记,得到标记结果;
显示模块,用于根据标记结果,显示实例的缺陷程度,包括没有缺陷、普通缺陷和严重缺陷。
6.根据权利要求5所述的预测系统,其特征在于:采用训练集P构建朴素贝叶斯分类器。
7.根据权利要求5所述的预测系统,其特征在于:采用训练集P构建最近邻分类器。