1.一种面向软件缺陷预测的加权朴素贝叶斯方法,其特征在于包括如下步骤:步骤1)对于测试集的每个特征列,求出该特征列各个的特征值以及每个特征值出现的次数;
步骤2)计算训练集样本每个特征值在测试集同一特征列所占的概率h(aij);
步骤3)计算训练集每个样本与测试集样本的相似度,并把相似度作为每个样本的权重;
相似度的计算方法为训练集样本每个特征值在测试集同一特征列所占的概率之和;计算公式为:其中,n表示训练集样本的个数;
k表示特征的个数;
wi表示训练集第i个样本的权重;
步骤4)基于加权的训练样本建立加权朴素贝叶斯分类器。
2.根据权利要求1所述的一种面向软件缺陷预测的加权朴素贝叶斯方法,其特征是:步骤1)具体如下:用list存放测试集每个特征的特征值及其出现次数的元组,用HashMap来存储每个特征值及其出现次数:list=[dict1,dict2,...,dictk]其中,dictj={
k表示特征个数;
m表示测试集第j个特征中不同特征值的个数;
dictj表示测试集第j个特征的特征值及其出现次数的元组;
keyp表示测试集某列特征的特征值;
valuep表示keyp在该特征列出现的次数。
3.根据权利要求1所述的一种面向软件缺陷预测的加权朴素贝叶斯方法,其特征是:步骤2)具体如下:其中,dictj表示测试集第j个特征的特征值及其出现次数的元组;keyp表示某列特征的特征值;valuep表示keyp在该特征列出现的次数;
dictj.keyp表示第j个特征中的第p个特征值;
count表示测试集样本个数;
aij表示训练集第i个样本的第j个特征。
4.根据权利要求1所述的一种面向软件缺陷预测的加权朴素贝叶斯方法,其特征是:步骤4)具体步骤如下:
4-1.计算先验概率;c类的加权先验概率可以重新写为:其中,wi为训练样本i的权重;
ci为训练样本i类属值;
n为训练样本总个数;
nc为总类别数;在预测模型中n=2;
δ(x,y)是指示函数;如果x=y,则δ(x,y)=1;若x≠y,则δ(x,y)=0;对于类c,相同类的训练数据的样本越多,先验概率越大;
4-2.计算条件概率;根据样本加权方法,第j个特征aj的条件概率为:其中,aij为第i个训练样本中的第j个特征的值;
nj是第j个特征的不同值的数量;
4-3.计算测试集中样本u有无缺陷的概率,从而判断测试集样本的类别c(u);若样本u的有缺陷概率大于无缺陷概率,则视样本u的类别为有缺陷;否则,视为无缺陷;类别c(u)公式如下: