乳腺癌分類器及數(shù)據(jù)樣本驗(yàn)證(Python)_第1頁(yè)
乳腺癌分類器及數(shù)據(jù)樣本驗(yàn)證(Python)_第2頁(yè)
乳腺癌分類器及數(shù)據(jù)樣本驗(yàn)證(Python)_第3頁(yè)
乳腺癌分類器及數(shù)據(jù)樣本驗(yàn)證(Python)_第4頁(yè)
乳腺癌分類器及數(shù)據(jù)樣本驗(yàn)證(Python)_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、乳腺癌分類器及數(shù)據(jù)樣本驗(yàn)證By TobyQQ: 231469242歡迎愛好者交流,并改進(jìn)代碼數(shù)據(jù)下載地址 uci mach ine leari ng/breast cancer詞匯:Malignancy 惡性biopsy活組織檢查benign良性的diag no sis 診斷periodic exam in atio n 定期檢查Clump Thick ness腫塊厚度Un iformity of Cell Size細(xì)胞大小的均勻性Uni formity of Cell Shape 細(xì)胞形狀的均勻性Margi nal Adhesion 邊緣粘Si ngle Epithelial Cell Si

2、ze單上皮細(xì)胞的大小Bare Nuclei 裸核Bla nd Chromat in乏味染色體Normal Nucleoli 正常核Mitoses有絲分裂背景知識(shí)isconsin Breast Cancer Database (WBCD)Jan uary 8, 1991Revised Nomeber 3, 1994This is a description of the Wisconsin Breast Cancer Database, collected by Dr. William H. Wolberg, Uni versity of Wisc onsin Hospitals, Madis

3、on. The actual database is contained in ano ther file (datacum). Samples were collected periodically as Dr. Wolberg reported his cli ni cal cases. The database therefore reflects this chrono logical group ing of the data. The samples con sist of visually assessed nuclear features of fine needle aspi

4、rates (FNAs) taken from patients' breasts. Each sample has bee n assig ned a 9-dime nsional vector (attributes 3 to 9 below) by Dr. Wolberg. Each comp onent is in the in terval 1 to 10, with value 1 corresp onding to a no rmal state and 10 to a most abnormal state. Attribute 1 is sample number,

5、while attribute 2 desig nates whether the sample is benign or malignant. Malignancy 惡,性 is determined by taking a sample tissue from the patient's breast and perform ing a biopsy on it. A benign 良性的 diag no sis 診斷 is con firmed either by biopsy活組織檢查or by periodic exam in ati on 定期檢查,depe nding o

6、n the patie nt's choice.All groups are in the same file. We have separated the groups感謝剩下的是9個(gè)屬性(field3-11),每個(gè)屬Wisconsin醫(yī)學(xué)院的william H.Wolberg博士提供乳腺癌數(shù)據(jù)樣本。所欲數(shù)據(jù)來(lái)自真實(shí)臨床案 例,每個(gè)案例有9個(gè)屬性FieldAttribute1234567891011Sample code number(病人 ID)Class: 2 for benign, 4 formalig nant (惡性或良性分類)Clump Thick ness腫塊厚度Un

7、iformity of Cell Size細(xì)胞大小的均勻性Un iformity of Cell Shape 細(xì)胞形狀的均勻性Margi nal Adhesion邊緣粘Si ngle Epithelial Cell Size 單上皮細(xì)胞的大小Bare Nuclei裸核Bla nd Chromat in乏味染色體Normal Nucleoli 正常核Mitoses有絲分裂這就是判斷乳腺癌的 9個(gè)屬性(翻譯非全部準(zhǔn)確)數(shù)據(jù)樣本示例說(shuō)明:病人ID惡性或良性(2是良性,4是惡性)性用數(shù)字表示1000025,2,5,1,1,1,2,1,3,1,1NOTE:16poi nts with missi ng

8、attributes (in dicated by a 0) 有 16 個(gè)遺失的屬性,會(huì)造成統(tǒng)計(jì)不準(zhǔn)確,用0表示classifier 分類器分類器是一種計(jì)算機(jī)程序。他的設(shè)計(jì)目標(biāo)是在通過學(xué)習(xí)后,可自動(dòng)將數(shù)據(jù)分到已知類別。應(yīng)用在搜索引擎以及各種檢索程序中。同時(shí)也大量應(yīng)于數(shù)據(jù)分析與預(yù)測(cè)領(lǐng)域。分類器是一種機(jī)器學(xué)習(xí)程序,因此歸為人工智能的范疇中。人工智能的多個(gè)領(lǐng)域,包括數(shù)據(jù)挖掘,專家系統(tǒng),模式識(shí)別都用到此類程序。對(duì)于分類器,其實(shí)質(zhì)為數(shù)學(xué)模型。 針對(duì)模型的不同,目前有多種分支,包括:Bayes分類器, BP神經(jīng)網(wǎng)絡(luò)分類器,決策樹算法,SVM (支持向量機(jī))算法等。參考數(shù)據(jù)挖掘的各類文章,其中會(huì)對(duì)各種分類器

9、算法的設(shè)計(jì),性能,做出更為詳細(xì)與準(zhǔn)確的評(píng)價(jià)回到正題,每個(gè)患者有 11個(gè)值,患者ID,9個(gè)腫瘤的屬性值和最終診斷。通過研究這些屬 性,找到腫瘤預(yù)測(cè)模式,根據(jù)腫瘤屬性來(lái)判定腫瘤性質(zhì)。對(duì)沒見過面的患者(甚至不知道她的診斷結(jié)論),我們希望根據(jù)腫瘤的屬性來(lái)判定是否為惡性腫瘤。為了實(shí)現(xiàn),就要用分類器。分類器要使用已知類別樣本進(jìn)行訓(xùn)練。在訓(xùn)練過程中,分類器尋找指示分類 (例如惡性或良性模式)。模式確定后,在已知的新樣本數(shù)據(jù)上進(jìn)行測(cè)試。在已知類別的樣本上進(jìn)行測(cè)試可 以判定分類器準(zhǔn)確性。在此例中,診斷結(jié)果(良性或惡性)是對(duì)患者腫瘤屬性的分類結(jié)果。每個(gè)患者信息都可以用 于建立一個(gè)模式的內(nèi)部模型,模式用于區(qū)分良性或

10、惡性。訓(xùn)練好分類器后,必須要測(cè)試分類器效果。將數(shù)據(jù)分成兩個(gè)部分,即分類器訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù)。在實(shí)踐中,創(chuàng)建兩個(gè)單獨(dú)的文件,大部分?jǐn)?shù)據(jù)放入訓(xùn)練文件,剩余數(shù)據(jù)放入測(cè)試文件。現(xiàn)在要解決問題是:如何編寫從訓(xùn)練數(shù)據(jù)中發(fā)現(xiàn)分類模式的程序?利用分治原理,每次查看患者的一個(gè)腫瘤屬性,然后結(jié)合所屬的類別意見作出決定。例如一個(gè)腫瘤厚度值范圍1-10。較厚的腫瘤(例如大于 7),可預(yù)測(cè)為惡性腫瘤,最后評(píng)估每個(gè)屬 性,得出判定結(jié)果,分類結(jié)果遵循遵循少數(shù)服從多數(shù)原理。舉例(1000025,5,1,1,1,2,1,3,1,1),ID為1000025的患者,先依次判定患者 9個(gè)屬性,分別為5,1,1,1,2,131,1???/p>

11、結(jié)患者9個(gè)屬性,其中大部分都小于中值 5,最后得出患者為良 性腫瘤。如何實(shí)現(xiàn)?對(duì)每個(gè)腫瘤屬性設(shè)置兩個(gè)平均值。第一個(gè)平均值是女性訓(xùn)練數(shù)據(jù)中,良性腫瘤患者平均值;第二個(gè)平均值是訓(xùn)練數(shù)據(jù)中,惡性腫瘤患者平均值。9個(gè)屬性都訓(xùn)練后,應(yīng)該得到18個(gè)平均值,即9個(gè)良性腫瘤平均值和 9個(gè)惡性腫瘤平均值。采用如下方法構(gòu)造分類器:對(duì)每個(gè)屬性的平均值,找出良性平均值和惡性平均值的中值。這個(gè)值就是分類值。分類器包括所有屬性的分類值,即9個(gè)分類值。如果新樣本的某個(gè)屬性值低于該屬性的分類值,預(yù)測(cè)為良性;反正為惡性。要得到整體的分類預(yù)測(cè)結(jié)果,需要將每個(gè)屬性與該屬性的分類值進(jìn)行比較。根據(jù)屬性值是大于或小于分類值對(duì)屬性進(jìn)行標(biāo)記

12、。在這例子中,小于分類值表示良性,大于分類值表示惡性。對(duì)于患者最后診斷,采用少數(shù)服從多數(shù) 原則。9個(gè)屬性中,占主導(dǎo)地位的類別即為患者的最終判定結(jié)果。算法:變量多用復(fù)制粘貼,否則大小寫很容易出錯(cuò),不容易檢查將全部699個(gè)例患者數(shù)據(jù)分成兩個(gè)文件, 訓(xùn)練分類器文件和測(cè)試分類器文件。 采用簡(jiǎn)單方法, 349個(gè)患者數(shù)據(jù)用作訓(xùn)練數(shù)據(jù), 350個(gè)患者數(shù)據(jù)用作測(cè)試數(shù)據(jù)。 0代表缺失的統(tǒng)計(jì)數(shù)據(jù),應(yīng) 該忽略含0的病人(1)從訓(xùn)練文件中創(chuàng)建訓(xùn)練集trai nin gSet*打開文件 *初始化訓(xùn)練集為空*對(duì)文件中每一行:將行內(nèi)容解析成各組成部分為患者創(chuàng)建元組將元組添加到訓(xùn)練集列表中(2)創(chuàng)建分類器classifier

13、,使用訓(xùn)練集中確定每個(gè)屬性的分類值*函數(shù)參數(shù)是訓(xùn)練集。*對(duì)每個(gè)訓(xùn)練集中的患者元組:如果元組代表良性腫瘤,則將每個(gè)患者屬性添加到良性屬性總和中,對(duì)良性腫瘤患者計(jì)數(shù)如果元組代表惡性腫瘤,則添加到惡性腫瘤屬性總和中,對(duì)惡性腫瘤患者計(jì)數(shù)最后,得到18個(gè)總和,分別為每種良性腫瘤患者屬性和惡性腫瘤患者屬性的總和。同時(shí)得到良性患者和惡性患者數(shù)量。*計(jì)算9個(gè)良性屬性和9個(gè)惡性屬性的平均值(總和 /總?cè)藬?shù))*計(jì)算9個(gè)屬性的良性平均值和惡性平均值的平均值。這個(gè)中值為分類值,是該屬性屬于良 性還是惡性的診斷標(biāo)準(zhǔn)。這9個(gè)分類值構(gòu)成分類器。*trainClassifier要保存很多個(gè)人的總和和平均值。18個(gè)總和的平均值

14、包含了很多變量,因此可用列表來(lái)進(jìn)行管理。例如benignSums,benignAverage等列表。使用列表代替單個(gè)列表,需要編寫代碼來(lái)添加兩個(gè)列表。因此需要多次求總和,所以利用函數(shù)完成此任務(wù)更容易,此外還需要總和列表計(jì)算平均值列表。由于需要多次計(jì)算平均值,因此將這部分分離出來(lái)用函數(shù)方式實(shí)現(xiàn)更好。兩個(gè)函數(shù)分別為sumList和makeAverages.sumList函數(shù)有兩個(gè)參數(shù),參數(shù)是兩個(gè)同樣大小的列表。函數(shù)返回一個(gè)新列表,該列表包含 兩個(gè)參數(shù)列表中元素的總和,也就是說(shuō)第一個(gè)參數(shù)列表中的第一個(gè)元素和第二個(gè)參數(shù)列表的 第一個(gè)元素相加,并將和作為求和列表中的第一個(gè)元素,以此類推。創(chuàng)建listOf

15、Sums用于存放總和。使用乘法運(yùn)算符創(chuàng)建列表,初始化為9個(gè)0,對(duì)列表而言,乘法是重復(fù)運(yùn)算。創(chuàng)建變量in dex,在三個(gè)列表中用作索引。使用索引遍歷參數(shù)列表,將相同索引的兩個(gè)元素相加,結(jié)果放入listOfSums中。makeAverages和sumLists函數(shù)差別不大,參數(shù)為列表和總和值,將列表中的每個(gè)元素除以 總和,并將計(jì)算結(jié)果作為列表返回。(3)從測(cè)試文件中創(chuàng)建測(cè)試集classifyTestSet判斷定分類器能否只根據(jù)患者的腫瘤屬性,正確預(yù)測(cè)出診斷結(jié)果。這項(xiàng)測(cè)試由classifyTestSet函數(shù)完成。該函數(shù)讀入測(cè)試數(shù)據(jù)集(帶有確診斷結(jié)果的患者腫瘤數(shù)據(jù))。將患者的每個(gè)屬性值與相應(yīng)分類器值進(jìn)

16、行比較。如果該屬性值大于分類器平均值,則認(rèn)為該屬性是惡性的證據(jù)。 如果屬性值小于分類器平均值,表明是良性。對(duì)每個(gè)患者的良性和惡性屬性進(jìn)行計(jì)數(shù),然后采用少數(shù)服從多數(shù)規(guī)則。也就是說(shuō)那種類型屬性多,則預(yù)測(cè)為該類型。(4) 使用分類器(分類值),對(duì)測(cè)試集進(jìn)行分類,同時(shí)計(jì)算這些判定的準(zhǔn)確性(5) 數(shù)據(jù)結(jié)構(gòu):(a) trainingSet和testSet:包含每個(gè)患者的信息。患者數(shù)據(jù)是永遠(yuǎn)不會(huì)修改的,因此可以 作為元組的值。所有患者數(shù)據(jù)構(gòu)成元組列表。元組格式:第一項(xiàng):患者ID,字符串類型;第二項(xiàng):患者診斷結(jié)果,但字母字符串(單個(gè)字母m' b'第三至十二項(xiàng):腫瘤屬性,按1-9順序排列,整數(shù)類

17、型。(b) classifier:由9個(gè)不同值構(gòu)成序列,因?yàn)檫@些值是不會(huì)改變的,所以構(gòu)成元組,它包含9個(gè)浮點(diǎn)值,即每個(gè)良性平均值和惡性平均值的中值(兩個(gè)平均值的中點(diǎn))(c) result :為元組列表#生成訓(xùn)練數(shù)據(jù)集def makeTrai nin gSet(fileName):tSet=trainin gFile=ope n( fileName)for line in trai nin gFile:li ne=li ne.strip()if 'O' in line:#0代表缺失的統(tǒng)計(jì)數(shù)據(jù),應(yīng)該忽略含0的病人con ti nueid,diag,a1,a2,a3,a4,a5,a6

18、,a7,a8,a9=li ne.split(',')if diag='4': #diag no sis is malig nantdiagMorB='m'else:diagMorB='b'patie ntTuple=(id,diagMorB,i nt(a1),i nt(a2),i nt(a3),i nt(a4),i nt(a5),i nt(a6),in t(a7),i nt(8),i nt(a9)tSet.appe nd(patie ntTuple)return tSet#求總和函數(shù)def sumLists(list1,list2

19、):"'eleme nt-by-eleme nt sums of lists of 9 items'"listOfSums=0.0*9 #注意0.0表示浮點(diǎn)數(shù),否則python 2.7計(jì)算會(huì)出錯(cuò)for in dex in ran ge(9):listOfSumsi ndex=list1i ndex+list2i ndexreturn listOfSums#求平均數(shù)def makeAverages(listOfSums,total):"'c onvert each list eleme nt into an average by dividi

20、 ng by the total''' averageList=0.0*9for in dex in ran ge(9):averageList in dex=listOfSumsi ndex/float(total)retur n averageList#用訓(xùn)練數(shù)據(jù)計(jì)算分類器def trai nClassifier(trai nin gSet):'''build a classifier using the training set'''benign Sums=0*9 #lists of sums of benign a

21、ttributesbenignCoun t=0 #co unt of benign patie ntsmalig nan tSums=0*9#lists of sums of malig nant attributesmalig nan tCo un t=0#co unt of malig nant patie ntsfor patie ntTup in trainin gSet:if patie ntTup1='b': #if benign#add benign attributes to benign totalbenign Sums=sumLists(be nign Su

22、ms,patie ntTup2:) benignCoun t+=1else:#add malig nant attributes to malig nant totalmalig nan tSums=sumLists(malig nan tSums,patie ntTup2:)malig nan tCo un t+=1benign Avgs=makeAverages(be nign Sums,be nignCount)malig nan tAvgs=makeAverages(malig nan tSums,malig nan tCo unt)classifier=makeAverages(su

23、mLists(be nign Avgs,malig nan tAvgs),2) retur n classifier#分類器測(cè)試集def classifyTestSet(testSet,classifier):results=#for each patie ntfor patie nt in testSet:benignCoun t=0malig nan tCo un t=0#for each attribute of the patie ntfor in dex in ran ge(9):#if actual patie nt attribute is greater tha n separ

24、ator value#no te:the patie nt tuple has two extra eleme nt at the beg inning #so we add 2 to each patie nt in dex to only in dex attributes if patie nt in dex+2>classifieri ndex:#predict malig nant for that attribute malig nan tCo un t+=1else:#predict benign for that attribute benignCoun t+=1#rec

25、ord patie nt id,both coun ts,a nd actual diga no sis resultTuple=(patie nt0,be nignCoun t,malig nan tCo un t,patie nt1) #add patie nt to list of result results.appe nd(resultTuple)return results#生成測(cè)試數(shù)據(jù)的報(bào)告,統(tǒng)計(jì)精確度def reportResults(results):'"determ ine accuracy of classifier and report'''totalCo un t=0#co unt of total nu mber of resultsin accurateCo un t=0#co unt of in correct resultsinaccur

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論