欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于半監(jiān)督聚類數(shù)據(jù)篩選的跨項(xiàng)目缺陷預(yù)測(cè)方法與流程

文檔序號(hào):11386437閱讀:387來(lái)源:國(guó)知局
一種基于半監(jiān)督聚類數(shù)據(jù)篩選的跨項(xiàng)目缺陷預(yù)測(cè)方法與流程

本發(fā)明屬于軟件缺陷預(yù)測(cè)技術(shù)領(lǐng)域,特別是涉及一種基于半監(jiān)督聚類數(shù)據(jù)篩選的跨項(xiàng)目缺陷預(yù)測(cè)方法。



背景技術(shù):

(1)軟件缺陷預(yù)測(cè)技術(shù)

軟件已經(jīng)成為影響國(guó)民經(jīng)濟(jì)、軍事、政治乃至社會(huì)生活的重要因素。高可靠和復(fù)雜的軟件系統(tǒng)依賴于其采用的軟件的可靠性。軟件的缺陷是導(dǎo)致相關(guān)系統(tǒng)出錯(cuò)、失效、崩潰甚至機(jī)毀人亡的潛在根源。所謂缺陷,到目前為止,學(xué)術(shù)界,產(chǎn)業(yè)界有很多相關(guān)的術(shù)語(yǔ)和定義,比如故障、缺陷、bug、錯(cuò)誤、失誤、失效、失敗等。根據(jù)iso9000對(duì)缺陷的定義為:滿足與預(yù)期或者規(guī)定用途有關(guān)的要求,缺陷是軟件中已經(jīng)存在的一個(gè)部分,可以通過(guò)修改軟件而消除。然而軟件技術(shù)發(fā)展至今,任何檢驗(yàn)、驗(yàn)證手段都不可能發(fā)現(xiàn)并排除所有的缺陷,軟件作為一種無(wú)形的產(chǎn)物,雖然不會(huì)磨損用壞,卻隨時(shí)可能因?yàn)槲覀儾灰撞橹脑虺霈F(xiàn)故障甚至失效。事實(shí)上,從第一個(gè)軟件誕生,就伴隨出現(xiàn)軟件缺陷的檢測(cè)和預(yù)測(cè)技術(shù)。檢測(cè)技術(shù)在于發(fā)現(xiàn)缺陷,而預(yù)測(cè)技術(shù)則在于預(yù)測(cè)還未發(fā)現(xiàn)的缺陷。

20世紀(jì)70年代,出現(xiàn)了利用統(tǒng)計(jì)學(xué)習(xí)技術(shù),根據(jù)歷史數(shù)據(jù)以及已經(jīng)發(fā)現(xiàn)的缺陷等軟件度量數(shù)據(jù)預(yù)測(cè)軟件系統(tǒng)的缺陷數(shù)目及類型。缺陷預(yù)測(cè)技術(shù)的目的在于統(tǒng)計(jì)計(jì)算機(jī)軟件系統(tǒng)的缺陷數(shù),以決定系統(tǒng)是否可以交付使用。缺陷預(yù)測(cè)技術(shù)為軟件質(zhì)量的提高和保證起著非常重要的作用,同時(shí)也促進(jìn)了軟件工程技術(shù)向前大大的發(fā)展了一步。

軟件缺陷預(yù)測(cè)過(guò)程的第一步是收集和標(biāo)注軟件實(shí)例。一個(gè)軟件實(shí)例能夠被標(biāo)記為有缺陷和無(wú)缺陷。第二步,抽取軟件實(shí)例的度量屬性。到目前為止,研究人員從不同的角度提出了許多軟件度量屬性,而與軟件缺陷預(yù)測(cè)密切相關(guān)的度量屬性主要有代碼度量、mccabe度量和halstead度量三種。代碼度量是最直接、應(yīng)用最普遍的度量屬性。通過(guò)對(duì)程序進(jìn)行簡(jiǎn)單的計(jì)數(shù),我們可以得到相關(guān)代碼的度量值。它包含總行數(shù)(loc)、空白行數(shù)目(locb)、注釋行數(shù)目(locc)、代碼行數(shù)目(loce)和代碼和注釋總數(shù)目(locec)。(文獻(xiàn):[1]包曉露,王小娟,賈有良、申來(lái)安。軟件測(cè)試基礎(chǔ):方法與度量[m].北京:人民郵電出版社,2007:74-76.)。軟件復(fù)雜性通過(guò)程序結(jié)構(gòu)的復(fù)雜性表現(xiàn)出來(lái),而程序結(jié)構(gòu)的復(fù)雜性主要值的是實(shí)例內(nèi)部程序的復(fù)雜性。macabe度量的正是實(shí)例內(nèi)部程序的復(fù)雜性。它由三種度量組成,分別為環(huán)形復(fù)雜度(cyclomaticcomplexity)、基本復(fù)雜度(essentialcomplexity)和設(shè)計(jì)復(fù)雜度(dessigncomplexity)。halstead度量不僅度量了程序長(zhǎng)度,還描述了程序的最小實(shí)現(xiàn)和實(shí)際實(shí)現(xiàn)之間的關(guān)系,并據(jù)此闡述程序語(yǔ)言的等級(jí)高低。halstead度量方法充分考慮了程序中出現(xiàn)的算子和操作數(shù),它包括軟件長(zhǎng)度(n)、容量(v)、級(jí)別(l)、難度(d)、工作量(e)、時(shí)間(t)、誤差估計(jì)(b)、程序消息(i)等度量。第三步,建立缺陷預(yù)測(cè)模型,缺陷預(yù)測(cè)模型本質(zhì)上屬于模式識(shí)別的范疇。而缺陷預(yù)測(cè)模型的建立過(guò)程就是通過(guò)一定的機(jī)器學(xué)習(xí)算法來(lái)搭建模型結(jié)構(gòu)并確定度量屬性之間依賴強(qiáng)度的過(guò)程,即為模型的結(jié)構(gòu)學(xué)習(xí)和參數(shù)學(xué)習(xí)過(guò)程。第四步,通過(guò)模型預(yù)測(cè)結(jié)果,由于建立好的缺陷預(yù)測(cè)模型可以通過(guò)自身模型結(jié)構(gòu)和模型參數(shù)來(lái)量化描述度量屬性與預(yù)測(cè)結(jié)果之間的因果關(guān)系,這樣給定一個(gè)軟件實(shí)例的度量屬性數(shù)據(jù)集,使用訓(xùn)練好的預(yù)測(cè)模型就可以得到該實(shí)例是否存在缺陷,即完成軟件缺陷預(yù)測(cè)的過(guò)程。

(2)跨項(xiàng)目軟件缺陷預(yù)測(cè)技術(shù)

到目前為止,許多高效的軟件缺陷預(yù)測(cè)方法已經(jīng)被提出,通常利用軟件實(shí)例的歷史數(shù)據(jù)并運(yùn)用統(tǒng)計(jì)分析、機(jī)器學(xué)習(xí)以及機(jī)器學(xué)習(xí)聯(lián)合統(tǒng)計(jì)分析等技術(shù)來(lái)進(jìn)行預(yù)測(cè)。但它們通常僅限于本項(xiàng)目的缺陷預(yù)測(cè)。當(dāng)有足夠的歷史數(shù)據(jù)可用來(lái)建立缺陷預(yù)測(cè)模型時(shí),本項(xiàng)目的缺陷預(yù)測(cè)效果很好。但對(duì)于一些新的項(xiàng)目來(lái)說(shuō),項(xiàng)目?jī)?nèi)的歷史數(shù)據(jù)是非常有限且不具有高可信度的,所以本項(xiàng)目缺陷預(yù)測(cè)很難順利進(jìn)行??珥?xiàng)目軟件缺陷預(yù)測(cè)是解決項(xiàng)目初期缺乏歷史數(shù)據(jù)來(lái)構(gòu)建模型的有效途徑。它通過(guò)利用一個(gè)或多個(gè)已有的其他項(xiàng)目(稱之為跨項(xiàng)目)數(shù)據(jù)來(lái)訓(xùn)練預(yù)測(cè)模型,然后將模型應(yīng)用到本項(xiàng)目,從而解決本項(xiàng)目沒有足夠的歷史數(shù)據(jù)來(lái)訓(xùn)練模型的問(wèn)題。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明提供的技術(shù)方案是一種基于半監(jiān)督聚類數(shù)據(jù)篩選的跨項(xiàng)目缺陷預(yù)測(cè)方法,包括以下步驟:

步驟1,挖掘本項(xiàng)目軟件歷史倉(cāng)庫(kù),從中抽取出有用的軟件模塊。軟件模塊粒度可根據(jù)實(shí)際應(yīng)用場(chǎng)景,可設(shè)置為文件、包、類或函數(shù)等。標(biāo)注所有的本項(xiàng)目軟件模塊是否有缺陷,標(biāo)記有缺陷的軟件模塊的類標(biāo)號(hào)為y,標(biāo)記無(wú)缺陷的軟件模塊的類標(biāo)號(hào)為n;

步驟2,抽取本項(xiàng)目現(xiàn)有的待預(yù)測(cè)的軟件模塊。這些待預(yù)測(cè)的本項(xiàng)目軟件模塊標(biāo)記為“?”;

步驟3,提取本項(xiàng)目軟件模塊的度量屬性,提取了20個(gè)度量屬性:加權(quán)方法數(shù)(wmc),繼承樹深度(dit),孩子數(shù)(noc),對(duì)象類之間的耦合度(cbo),類的響應(yīng)(rfc),內(nèi)聚缺乏度(lcom),傳入耦合(ca),傳出耦合(ce),公開方法數(shù)(npm),代碼行數(shù)(loc),數(shù)據(jù)訪問(wèn)度量(dam),聚合度量(moa),功能抽象度量(mfa),方法間的內(nèi)聚度(cam),繼承耦合(ic),方法間耦合(cbm),平均方法復(fù)雜度(amc),最大mccabe環(huán)形復(fù)雜度(max_cc),平均mccabe環(huán)形復(fù)雜度(avg_cc);

步驟4,由于在一個(gè)項(xiàng)目剛進(jìn)行開發(fā)時(shí),本項(xiàng)目歷史軟件模塊數(shù)據(jù)很少,不能訓(xùn)練本項(xiàng)目缺陷預(yù)測(cè)模型。因此需要借用跨項(xiàng)目歷史軟件模塊數(shù)據(jù)。從跨項(xiàng)目軟件歷史倉(cāng)庫(kù)中抽取有用的軟件模塊,將有缺陷的軟件模塊標(biāo)記為y,無(wú)缺陷的軟件模塊標(biāo)記為n;

步驟5,提取跨項(xiàng)目所有軟件模塊與步驟3中相同的20個(gè)度量屬性;

步驟6,對(duì)所有跨項(xiàng)目軟件模塊數(shù)據(jù)和所有本項(xiàng)目軟件模塊數(shù)據(jù)執(zhí)行半監(jiān)督聚類,獲得篩選后的跨項(xiàng)目軟件模塊數(shù)據(jù)。執(zhí)行以下子步驟,

步驟6.1,標(biāo)記所有跨項(xiàng)目軟件模塊和所有本項(xiàng)目軟件模塊未為訪問(wèn),隨機(jī)選擇一個(gè)未被訪問(wèn)的已被標(biāo)記為y或n的本項(xiàng)目歷史軟件模塊,將其邊界權(quán)值賦為0,并將其余未被訪問(wèn)所有本項(xiàng)目軟件模塊和所有跨項(xiàng)目軟件模塊的邊界權(quán)值賦為無(wú)窮。邊界權(quán)值定義了兩個(gè)實(shí)例密度相連的最小半徑值;

步驟6.2,循環(huán)選擇未被訪問(wèn)的已被標(biāo)記為y或n的本項(xiàng)目歷史軟件模塊創(chuàng)建簇,并逐漸擴(kuò)充簇,直至所有的已被標(biāo)記為y或n的本項(xiàng)目歷史軟件模塊均有其所屬簇。每次循環(huán)中,選擇邊界權(quán)值最小的軟件模塊加入簇,一旦在當(dāng)前簇中出現(xiàn)類標(biāo)號(hào)不同的本項(xiàng)目歷史軟件模塊,表明兩個(gè)需要被分離的簇即將被連接,此時(shí)停止對(duì)簇的擴(kuò)充,將當(dāng)前簇中所有軟件模塊標(biāo)記為已訪問(wèn),并重新選擇下一個(gè)未被訪問(wèn)的已被標(biāo)記為y或n的本項(xiàng)目歷史軟件模塊創(chuàng)建簇;利用邊界權(quán)值計(jì)算公式更新所有未被訪問(wèn)的軟件模塊的邊界權(quán)值,以推動(dòng)循環(huán);當(dāng)所有已被標(biāo)記為y或n的本項(xiàng)目歷史軟件模塊均有所屬簇,半監(jiān)督聚類過(guò)程結(jié)束;

步驟6.3,獲得篩選后的跨項(xiàng)目軟件模塊。在步驟6.2中產(chǎn)生的每個(gè)簇中一定會(huì)包含已被標(biāo)記為y或n的本項(xiàng)目歷史軟件模塊,有可能包含已被標(biāo)記為y或n的跨項(xiàng)目歷史軟件模塊,有可能包含標(biāo)記為“?”的待預(yù)測(cè)本項(xiàng)目軟件模塊。選擇所有生成的簇中與本項(xiàng)目歷史軟件模塊類標(biāo)號(hào)相同的所有跨項(xiàng)目歷史軟件模塊即為篩選后的跨項(xiàng)目軟件模塊數(shù)據(jù);

步驟7,對(duì)通過(guò)半監(jiān)督聚類算法篩選出的跨項(xiàng)目軟件模塊數(shù)據(jù)和本項(xiàng)目歷史軟件模塊數(shù)據(jù)混合形成混合訓(xùn)練集d,訓(xùn)練出樸素貝葉斯預(yù)測(cè)模型。由于軟件模塊屬于有缺陷的類(y)和無(wú)缺陷的類(n)的先驗(yàn)概率未知,則假定兩個(gè)類是等概率的,因此訓(xùn)練樸素貝葉斯算法模型只需對(duì)混合訓(xùn)練集d計(jì)算類標(biāo)號(hào)為y的軟件模塊在每個(gè)特征ak上的均值μky和標(biāo)準(zhǔn)差σky,計(jì)算類標(biāo)號(hào)為n的軟件模塊在每個(gè)特征ak上的均值μkn和標(biāo)準(zhǔn)差σkn;

步驟8,用訓(xùn)練得到的預(yù)測(cè)模型預(yù)測(cè)待預(yù)測(cè)的本項(xiàng)目軟件模塊x;

步驟8.1,計(jì)算待預(yù)測(cè)本項(xiàng)目軟件模塊x有缺陷的后驗(yàn)概率:

計(jì)算待預(yù)測(cè)本項(xiàng)目軟件模塊x無(wú)缺陷的后驗(yàn)概率:

步驟8.2,判定待預(yù)測(cè)的本項(xiàng)目軟件模塊是否有缺陷。如果p(x|n)>p(x|y),樸素貝葉斯分類方法判斷其類標(biāo)號(hào)為n,即該軟件模塊為無(wú)缺陷的軟件模塊。如果p(x|n)<p(x|y),樸素貝葉斯分類方法判斷其類標(biāo)記為y,即該軟件模塊為有缺陷的軟件模塊。

相對(duì)于國(guó)內(nèi)外已有的跨項(xiàng)目軟件缺陷預(yù)測(cè)方法,本發(fā)明針對(duì)跨項(xiàng)目軟件缺陷預(yù)測(cè)中大量不相關(guān)的跨項(xiàng)目軟件模塊數(shù)據(jù)損害了跨項(xiàng)目軟件缺陷預(yù)測(cè)模型性能的問(wèn)題,提出了一種基于半監(jiān)督聚類數(shù)據(jù)篩選的跨項(xiàng)目缺陷預(yù)測(cè)方法。首先,該方法結(jié)合全部本項(xiàng)目歷史軟件模塊、全部跨項(xiàng)目歷史軟件模塊和全部待預(yù)測(cè)的本項(xiàng)目軟件模塊;然后,利用半監(jiān)督聚類算法對(duì)這些模塊數(shù)據(jù)進(jìn)行聚類發(fā)現(xiàn)子簇;隨后,收集所有生成的簇中與本項(xiàng)目歷史軟件模塊類標(biāo)號(hào)相同的所有的跨項(xiàng)目歷史軟件模塊即為篩選后的跨項(xiàng)目軟件模塊數(shù)據(jù);最后基于篩選后的跨項(xiàng)目軟件模塊數(shù)據(jù)和所有的本項(xiàng)目歷史軟件模塊數(shù)據(jù)利用樸素貝葉斯分類算法建立跨項(xiàng)目缺陷預(yù)測(cè)模型,預(yù)測(cè)待預(yù)測(cè)的本項(xiàng)目軟件模塊數(shù)據(jù)。因此本發(fā)明具有如下優(yōu)點(diǎn):能夠利用半監(jiān)督聚類算法篩選出真正和本項(xiàng)目模塊數(shù)據(jù)相似的跨項(xiàng)目軟件模塊數(shù)據(jù),使跨項(xiàng)目軟件預(yù)測(cè)模型避免受到不相關(guān)跨項(xiàng)目軟件模塊數(shù)據(jù)的影響,充分利用跨項(xiàng)目歷史軟件模塊信息和本項(xiàng)目歷史軟件模塊信息,增強(qiáng)了跨項(xiàng)目軟件缺陷預(yù)測(cè)模型的性能。

附圖說(shuō)明

圖1本發(fā)明實(shí)施例的基于半監(jiān)督聚類數(shù)據(jù)篩選的跨項(xiàng)目缺陷預(yù)測(cè)流程圖。

圖2本發(fā)明實(shí)施例的本項(xiàng)目實(shí)例和跨項(xiàng)目實(shí)例在20維空間上的分布圖。

圖3本發(fā)明實(shí)施例的本項(xiàng)目實(shí)例和跨項(xiàng)目實(shí)例聚類結(jié)果圖。

具體實(shí)施方式

本發(fā)明設(shè)計(jì)的基于半監(jiān)督聚類數(shù)據(jù)篩選的跨項(xiàng)目缺陷預(yù)測(cè)方法流程實(shí)施例具體實(shí)現(xiàn)過(guò)程如下:

步驟1,挖掘本項(xiàng)目軟件歷史倉(cāng)庫(kù),從中抽取出有用的軟件模塊。軟件模塊粒度可根據(jù)實(shí)際應(yīng)用場(chǎng)景,可設(shè)置為文件、包、類或函數(shù)等。標(biāo)注所有的本項(xiàng)目軟件模塊是否有缺陷,標(biāo)記有缺陷的軟件模塊的類標(biāo)號(hào)為y,標(biāo)記無(wú)缺陷的軟件模塊的類標(biāo)號(hào)為n。

步驟2,抽取本項(xiàng)目現(xiàn)有的待預(yù)測(cè)的軟件模塊。這些待預(yù)測(cè)的本項(xiàng)目軟件模塊標(biāo)記為“?”。

步驟3,提取本項(xiàng)目軟件模塊的度量屬性,提取了20個(gè)度量屬性:加權(quán)方法數(shù)(wmc),繼承樹深度(dit),孩子數(shù)(noc),對(duì)象類之間的耦合度(cbo),類的響應(yīng)(rfc),內(nèi)聚缺乏度(lcom),傳入耦合(ca),傳出耦合(ce),公開方法數(shù)(npm),代碼行數(shù)(loc),數(shù)據(jù)訪問(wèn)度量(dam),聚合度量(moa),功能抽象度量(mfa),方法間的內(nèi)聚度(cam),繼承耦合(ic),方法間耦合(cbm),平均方法復(fù)雜度(amc),最大mccabe環(huán)形復(fù)雜度(max_cc),平均mccabe環(huán)形復(fù)雜度(avg_cc)。

在經(jīng)過(guò)了步驟1-3后,本實(shí)施例假設(shè)在提取度量屬性和標(biāo)記類標(biāo)號(hào)后形成了8個(gè)本項(xiàng)目模塊數(shù)據(jù):

x1={13,2,0,18,112,76,3,17,1,0.88,1000,1,1,0.4,0.3,1,1,75.8,10,5.2,n},

x2={10,3,0,11,17,33,3,11,9,0.56,79,1,0,0.67,0.267,1,1,6.7,3,1.1,y},

x3={13,1,0,66,13,78,66,1,13,2,13,0,0,0,0.369,0,0,0,1,1,y},

x4={17,1,0,84,17,136,80,7,17,2,17,0,0,0,0.222,0,0,0,1,1,y},

x5={0,1,0,27,0,0,26,1,0,2,0,0,0,0,0,0,0,0,0,0,?},

x6={2,3,0,3,7,1,0,3,1,2,24,0,0,0.833333333,0.667,1,1,11,1,0.5,?},

x7={5,3,0,8,31,2,1,8,3,0.5,122,1,1,0.8,0.4,0,0,23,3,1.2,?},

x8={26,1,1,10,47,0,5,5,24,0.08,236,1,1,0,0.258,0,0,8.038,2,1,n}

步驟4,由于在一個(gè)項(xiàng)目剛進(jìn)行開發(fā)時(shí),本項(xiàng)目歷史軟件模塊數(shù)據(jù)很少,不能訓(xùn)練本項(xiàng)目缺陷預(yù)測(cè)模型。因此需要借用跨項(xiàng)目歷史軟件模塊數(shù)據(jù)。從跨項(xiàng)目軟件歷史倉(cāng)庫(kù)中抽取有用的軟件模塊,將有缺陷的軟件模塊標(biāo)記為y,無(wú)缺陷的軟件模塊標(biāo)記為n。

步驟5,提取跨項(xiàng)目所有軟件模塊與步驟3中相同的20個(gè)度量屬性。

在經(jīng)過(guò)了步驟4-5后,本實(shí)施例假設(shè)在提取度量屬性和標(biāo)記類標(biāo)號(hào)后形成了14個(gè)跨項(xiàng)目軟件模塊數(shù)據(jù):

x9={3,1,0,8,14,3,3,5,3,2,85,0,0,0,0.5,0,0,27.33333333,9,3.3333,y},

x10={13,1,0,1,17,64,0,1,12,0.917,117,1,0,0,0.462,0,0,7.462,3,1.38,n},

x11={4,1,0,4,4,6,2,2,4,2,4,0,0,0,1,0,0,0,1,1,n},

x12={10,1,0,6,31,1,0,6,9,0.5,156,1,1,0,0.355555556,0,0,14.4,1,0.8,y},

x13={7,1,0,6,19,7,0,6,6,0.75,117.0,1,2,0,0.367,0,0,15.143,3,1.1429,n},

x14={38,1,0,30,155,485,0,30,34,0.9,1564,1,7,0,0.14,0,0,39.6,7,1.5,y},

x15={25,1,0,13,74,0,0,13,23,0.444,901,1,2,0,0.2,0,0,34.92,1,0.92,y},

x16={13,1,0,19,56,54,0,19,11,0.9,224,1,4,0,0.17,0,0,15.54,4,1.1538,y},

x17={7,4,4,48,12,19,47,1,6,0.94,44,0.33,0,0.867,0.458,0,0,4.86,1,0.29,n},

x18={7,1,0,4,7,21,2,2,7,2,7,0,0,0,0.357142857,0,0,0,1,1,y},

x19={4,1,0,2,4,6,2,0,4,2,4,0,0,0,0.875,0,0,0,1,1,n},

x20={35,1,0,29,12,0,373,0,29,31,0.9,1250,1,5,0,0.17,0,0,34.1,5,1.2,y},

x21={8,1,0,16,21,14,13,3,8,0.81,111,1,0,0,0.35,1,1,12.5,7,1.875,y},

x22={11,1,0,8,18,13,7,1,11,0.775,130,1,1,0,0.29,1,1,10.45,7,1.36,n},

這22個(gè)本項(xiàng)目軟件模塊數(shù)據(jù)和跨項(xiàng)目軟件模塊數(shù)據(jù)可以形成如圖2所示的在20維空間上的分布圖。約定:“○”表示類標(biāo)號(hào)為y的跨項(xiàng)目軟件模塊,“●”表示類標(biāo)號(hào)為n的跨項(xiàng)目軟件模塊,“△”表示類標(biāo)號(hào)為y的本項(xiàng)目軟件模塊,表示類標(biāo)號(hào)為n的本項(xiàng)目軟件模塊,表示需要預(yù)測(cè)的本項(xiàng)目軟件模塊。

步驟6,對(duì)所有跨項(xiàng)目軟件模塊數(shù)據(jù)和所有本項(xiàng)目軟件模塊數(shù)據(jù)執(zhí)行半監(jiān)督聚類,獲得篩選后的跨項(xiàng)目軟件模塊數(shù)據(jù)。執(zhí)行以下子步驟,

步驟6.1,標(biāo)記所有跨項(xiàng)目軟件模塊和所有本項(xiàng)目軟件模塊未為訪問(wèn),隨機(jī)選擇一個(gè)未被訪問(wèn)的已被標(biāo)記為y或n的本項(xiàng)目歷史軟件模塊,將其邊界權(quán)值賦為0,并將其余未被訪問(wèn)所有本項(xiàng)目軟件模塊和所有跨項(xiàng)目軟件模塊的邊界權(quán)值賦為無(wú)窮。邊界權(quán)值定義了兩個(gè)實(shí)例密度相連的最小半徑值。

步驟6.2,循環(huán)選擇未被訪問(wèn)的已被標(biāo)記為y或n的本項(xiàng)目歷史軟件模塊創(chuàng)建簇,并逐漸擴(kuò)充簇,直至所有的已被標(biāo)記為y或n的本項(xiàng)目歷史軟件模塊均有其所屬簇。每次循環(huán)中,選擇邊界權(quán)值最小的軟件模塊加入簇,一旦在當(dāng)前簇中出現(xiàn)類標(biāo)號(hào)不同的本項(xiàng)目歷史軟件模塊,表明兩個(gè)需要被分離的簇即將被連接,此時(shí)停止對(duì)簇的擴(kuò)充,將當(dāng)前簇中所有軟件模塊標(biāo)記為已訪問(wèn),并重新選擇下一個(gè)未被訪問(wèn)的已被標(biāo)記為y或n的本項(xiàng)目歷史軟件模塊創(chuàng)建簇;利用邊界權(quán)值計(jì)算公式更新所有未被訪問(wèn)的軟件模塊的邊界權(quán)值,以推動(dòng)循環(huán);當(dāng)所有已被標(biāo)記為y或n的本項(xiàng)目歷史軟件模塊均有所屬簇,半監(jiān)督聚類過(guò)程結(jié)束。在本實(shí)施例中,首先,x3由于邊界權(quán)值為0被加入簇c1,以x3為中心,更新剩余的未被訪問(wèn)的軟件模塊的邊界權(quán)值,繼續(xù)選取邊界權(quán)值最小的模塊加入簇c1,此時(shí)x13被加入簇c1,以x13為中心,再次更新剩余的未被訪問(wèn)的軟件模塊的邊界權(quán)值,重復(fù)尋找邊界權(quán)值最小的軟件模塊加入簇c1,并以新加入簇的軟件模塊為中心更新剩余軟件模塊的邊界權(quán)值,于是x7,x9,x12,x14也被加入簇c1。直至選擇到x8,由于其類標(biāo)號(hào)與x3不同,停止對(duì)簇c1的擴(kuò)充。同以上步驟,重新創(chuàng)建新的簇。最終,如圖3,我們創(chuàng)建了3個(gè)簇c1,c2,c3。

步驟6.3,獲得篩選后的跨項(xiàng)目軟件模塊。在步驟6.2中產(chǎn)生的每個(gè)簇中一定會(huì)包含已被標(biāo)記為y或n的本項(xiàng)目歷史軟件模塊,有可能包含已被標(biāo)記為y或n的跨項(xiàng)目歷史軟件模塊,有可能包含標(biāo)記為“?”的待預(yù)測(cè)本項(xiàng)目軟件模塊。選擇所有生成的簇中與本項(xiàng)目歷史軟件模塊類標(biāo)號(hào)相同的所有跨項(xiàng)目歷史軟件模塊即為篩選后的跨項(xiàng)目軟件模塊數(shù)據(jù)。本實(shí)施例中所有的本項(xiàng)目軟件模塊數(shù)據(jù)和所有的跨項(xiàng)目軟件模塊數(shù)據(jù)最終被聚類為三個(gè)簇,即c1={x3,x7,x9,x12,x13,x14},c2={x1,x8,x10,x11,x17},c3={x2,x4,x6,x15,x16,x20,x21,x22}。在簇c1中,跨項(xiàng)目軟件模塊x9,x12,x14由于與本公司歷史軟件模塊x3的類標(biāo)號(hào)相同,被選入最終的訓(xùn)練集中,而跨項(xiàng)目軟件模塊x13由于與本公司歷史軟件模塊x3的類標(biāo)號(hào)不同而被拋棄不予采用。簇c2、c3的數(shù)據(jù)篩選同c1。因此最終的跨項(xiàng)目軟件模塊訓(xùn)練集包含模塊x9,x10,x11,x12,x14,x15,x16,x17,x20,x21。

步驟7,對(duì)通過(guò)半監(jiān)督聚類算法篩選出的跨項(xiàng)目軟件模塊數(shù)據(jù)和本項(xiàng)目歷史軟件模塊數(shù)據(jù)混合形成混合訓(xùn)練集d,訓(xùn)練出樸素貝葉斯預(yù)測(cè)模型。由于軟件模塊屬于有缺陷的類(y)和無(wú)缺陷的類(n)的先驗(yàn)概率未知,則假定兩個(gè)類是等概率的,因此訓(xùn)練樸素貝葉斯算法模型只需對(duì)混合訓(xùn)練集d計(jì)算類標(biāo)號(hào)為y的軟件模塊在每個(gè)特征ak上的均值μky和標(biāo)準(zhǔn)差σky,計(jì)算類標(biāo)號(hào)為n的軟件模塊在每個(gè)特征ak上的均值μkn和標(biāo)準(zhǔn)差σkn。本實(shí)施例中d={x1,x2,x3,x4,x8,x9,x10,x11,x12,x14,x15,x16,x17,x20,x21},求得類標(biāo)號(hào)為y的軟件模塊在特征a1上的均值μ1y=17.2和標(biāo)準(zhǔn)差σ1y=11.12。同理求得類標(biāo)號(hào)為n的軟件模塊在特征a1上的均值μ1n和標(biāo)準(zhǔn)差σ1n,類標(biāo)號(hào)為y的軟件模塊在特征a2上的均值μ2y和標(biāo)準(zhǔn)差σ2y,類標(biāo)號(hào)為n的軟件模塊在特征a2上的均值μ2n和標(biāo)準(zhǔn)差σ2n,…,類標(biāo)號(hào)為y的軟件模塊在特征a20上的均值μ20y和標(biāo)準(zhǔn)差σ20y,類標(biāo)號(hào)為n的軟件模塊在特征a20上的均值μ20n和標(biāo)準(zhǔn)差σ20n。

步驟8,用訓(xùn)練得到的預(yù)測(cè)模型預(yù)測(cè)待預(yù)測(cè)的本項(xiàng)目軟件模塊x。

步驟8.1,計(jì)算待預(yù)測(cè)本項(xiàng)目軟件模塊x有缺陷的后驗(yàn)概率:

計(jì)算待預(yù)測(cè)本項(xiàng)目軟件模塊x無(wú)缺陷的后驗(yàn)概率:

本實(shí)施例預(yù)測(cè)待預(yù)測(cè)本項(xiàng)目模塊x6是否有缺陷,其特征a1的值為2。按照公式計(jì)算出同樣計(jì)算出p(x2|y)…p(x20|y),p(x1|n),p(x2|n)…,p(x20|n),于是p(x6|n)=7.084701372070163e-25。

步驟8.2,判定待預(yù)測(cè)的本項(xiàng)目軟件模塊是否有缺陷。如果p(x|n)>p(x|y),樸素貝葉斯分類方法判斷其類標(biāo)號(hào)為n,即該軟件模塊為無(wú)缺陷的軟件模塊。如果p(x|n)<p(x|y),樸素貝葉斯分類方法判斷其類標(biāo)記為y,即該軟件模塊為有缺陷的軟件模塊。本實(shí)施例步驟8.1中求得軟件模塊x6的p(x6|y)=3.172014388856017e-32,p(x6|n)=7.084701372070163e-25,由于p(x6|n)>p(x6|y),樸素貝葉斯分類方法判斷其類標(biāo)記為n,即預(yù)測(cè)該軟件模塊為無(wú)缺陷的軟件模塊。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
宝鸡市| 修文县| 云浮市| 梓潼县| 九龙县| 库伦旗| 肃宁县| 尚义县| 桐梓县| 斗六市| 横峰县| 新民市| 灵宝市| 巴林右旗| 北海市| 喀喇| 门源| 六安市| 长沙市| 班玛县| 澳门| 聂拉木县| 吉木萨尔县| 延津县| 鱼台县| 纳雍县| 大丰市| 自贡市| 通山县| 南涧| 宁远县| 墨竹工卡县| 万全县| 白山市| 仙游县| 横峰县| 吉隆县| 易门县| 当涂县| 天津市| 微山县|