软件缺陷预测通过学习软件缺陷历史数据建立缺陷预测模型,是开发可信软件的重要手段。现有的研究在学习不平衡软件缺陷数据时,确定合理的误分类代价是一个难以解决的问题。在代价敏感朴素贝叶斯方法的基础上拓展,提出一种动态调整模型参数的半监督学习方法——CSNB-EM(EM based Cost-Sensitive Naive Bayes)。该方法通过交叉验证搜索适合训练数据集的最优误分类代价,将搜索到的误分类代价用于建立分类模型,利用未标记数据迭代修正模型参数。方法利用未标记数据提高模型性能,同时克服了传统的软件缺陷预测中确定误分类代价的困难。基于AUC与GeoM评测指标在MDP软件缺陷数据集的5个项目上进行比较实验。实验结果表明,CSNB-EM与CS-NB、CS-NN等现有的代价敏感软件缺陷预测方法相比,其预测性能有明显提高。