1.一种基于分层数据筛选的跨项目软件缺陷预测方法,其特征在于:
包括以下步骤:
步骤1:从软件缺陷数据集中选择训练集和测试集,并且对所有项目集数据进行log变换;训练集即源项目集,测试集即目标项目集;
步骤2:提取所有项目属性的分布特征向量和项目分布向量,计算源项目与目标项目之间的相似度,选择与目标项目最相似的k个源项目集得到候选源项目集;
步骤3:合并k个候选源项目集,计算源项目中所有实例与目标项目实例相关程度,选择与目标项目中实例相关程度最高的h个实例得到候选实例集;
步骤4:使用候选实例集训练朴素贝叶斯模型;
步骤5:使用测试数据集测试预测模型;
步骤6:对提出的方法进行显著性检验,看该方法是否明显区别于其他方法。
2.根据权利要求1所述的一种基于分层数据筛选的跨项目软件缺陷预测方法,其特征在于:所述步骤1中采用下式(1)对所有项目集数据进行log变换:
y=ln(1+x)(1)
式中x表示变换前的项目内各个属性数据,y表示变换后的数据。如原数据存在0值,则变换后数据值为1。
3.根据权利要求1所述的一种基于分层数据筛选的跨项目软件缺陷预测方法,其特征在于:所述步骤2中提取的项目属性分布特征向量dj={mean(fj),median(fj),skew(fj),kurt(fj)};项目分布向量v={d1,d2...dm};其中dj表示表示一个软件项目中所有n个实例的第j个度量属性的分布特征,v表示一个项目中所有n个实例的所有m个度量属性的分布特征。
4.根据权利要求1所述的一种基于分层数据筛选的跨项目软件缺陷预测方法,其特征在于:所述步骤2中采用下式(2)计算源项目与目标项目之间的相似度:
式中,dsi表示源项目中属性分布特征向量,dti表示目标项目中属性分布特征向量,依据计算结果选出k个相似度最高的候选源项目。
5.根据权利要求1所述的一种基于分层数据筛选的跨项目软件缺陷预测方法,其特征在于:所述步骤3中采用下式(3)计算源项目中所有实例与目标项目中实例之间的相关程度:
式中,cov(x,y)为实例x与实例y的协方差,var[x]为实例x的方差,var[y]为实例y的方差。
6.根据权利要求1所述的一种基于分层数据筛选的跨项目软件缺陷预测方法,其特征在于:所述步骤5中采用下式(4)对测试数据进行预测:
式中,x=(x1,x2...,xn),y∈{0,1},0表示该软件模块不存在缺陷,1则相反,表示软件模块中有缺陷;
预测结果为一个条件概率值,若p(1|x)>p(0|x),则认为该模块有缺陷。
7.根据权利要求1所述的一种基于分层数据筛选的跨项目软件缺陷预测方法,其特征在于:所述步骤6中采用wilcoxcon符号秩检验对方法进行显著性检验。