freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于文本的數(shù)據(jù)挖掘論文(編輯修改稿)

2025-07-24 20:46 本頁面
 

【文章內(nèi)容簡介】 新界面的工作。因為在界面中顯示文字是一個追加的過程,所以顯示文字就是保留已經(jīng)顯示的文字,讀取界面上的原有文字字符串,同時在原有文字后面添加新的字符串。涉及到的系統(tǒng)函數(shù)有CWnd類中的GetWindowText()、SetWindowText()、FlashWindow()函數(shù),以及CView類中的GetActiveView()函數(shù)。同時還要能夠?qū)崿F(xiàn)文字的回車換行功能,所以在每次要輸出到界面的字符全的首尾都自動添加了回車換行符,這樣在程序中調(diào)用PrintView()函數(shù)時就無需用使用“\n”強制換行。作為該文本分類器的基本輸入的樣本數(shù)據(jù)集的特征決定了程序文本處理階段主要的任務是解決如何對從文本文件中讀取字符串進行分類,如何將讀取的數(shù)據(jù)保存到內(nèi)存塊中以及如何在文本文檔中記錄程序運行結(jié)果的問題。文本處理涉及到的函數(shù)有ReadLine()、ReadFile()、Tokenizer()、WriteModel()和ScanModel()函數(shù)。文本處理函數(shù)中跟數(shù)據(jù)集處理有關(guān)的是ReadLine(),ReadFile(),和Tokenizer()。除此之外,WriteModel()函數(shù)負責記錄分類機通過訓練得到的模式。ScanModel()函數(shù)負責在測試分類器時讀入該模式并將其保存在MODEL model 結(jié)構(gòu)體中。下面就文本處理中的各個函數(shù)的功能作以說明:1. ReadLine()函數(shù)通過掃描數(shù)據(jù)集文檔得到數(shù)據(jù)集中所含樣本數(shù)。樣本要求以分類值開頭,以特征分量結(jié)尾,樣本中間不能換行顯示,因為程序以回車換行符作為識別一個樣本是否結(jié)束的標志。通過逐一掃描樣本得到數(shù)據(jù)集中最長的樣本,同時利用特征分量序號后的冒號作為識別標志得到樣本中最多所含的特征分量數(shù)。2. ReadFile()函數(shù)則與Tokenizer()函數(shù)配合實現(xiàn)對文檔的分詞化和讀入數(shù)據(jù)到內(nèi)存塊。ReadFile()首先利用ReadLine()計算出的樣本最長值(字符值)設置內(nèi)存塊,該內(nèi)存用來存貯Tokenizer()所掃描的每一個樣本中的字符串。ReadFile()函數(shù)最終得到每個樣本的分類值,同時統(tǒng)計正類、負類和未分配分類值的樣本的個數(shù)。同時也保存了Tokenizer()提取到的特征分量值。3. Tokenizer()用來實現(xiàn)分詞化,即對每一個樣本進行拆分,得到樣本的分類值和特征分量值。主要的功能段是一個循環(huán),循環(huán)條件是一個樣本的還有未提取的特征分量。函數(shù)首先由ReadFile()得到樣本最長的長度,分類值保存指針,特征分量保存指針,最大分詞數(shù)等參數(shù),然后按照最大分詞數(shù)確定循環(huán)的終止條件,并總是把當前特征分量值保存到指針中供ReadFile()調(diào)用。4. WriteModel()除了在界面上顯示“在文本文檔中記錄模式.”,主要是負責記錄模式,其中包括了支持向量機的類型,使用的核函數(shù),樣本中最多含有的特征分量數(shù),支持向量數(shù),閾值b(,),以及所有的支持向量。以上涉及的所有數(shù)據(jù)都由MODEL model結(jié)構(gòu)體保存。5. ScanModel()由SvmTest()函數(shù)調(diào)用。ScanModel()函數(shù)會在界面上顯示文字以說明運行進度,同時它掃描模式文檔得到于支持向量機有關(guān)的參數(shù)和信息(WriteModel()函數(shù)寫入的參數(shù)),并把支持向量保存到MODEL model結(jié)構(gòu)體中,以便SvmTest()使用它進行分類。支持向量機的訓練階段又稱學習階段,所完成的任務就是通過對訓練集中樣本的學習得到對應的分類決策函數(shù)(模式),也就是利用二次分化方法(Quadratic Programming Problem)求出映射函數(shù)中的和,同時得到支持向量。訓練分類機的準備工作主要是對訓練集的處理,這些工作在CMainFrame::OnFileTrain()中進行。OnFileTrian()調(diào)用SvmTrain()完成對分類機的訓練工作。訓練完畢時OnFileTrain()調(diào)用WriteModel()函數(shù)記錄模式文檔。CMainFrame::OnFileTrain()設置訓練分類器所需參數(shù)設定訓練集和模式的路徑,調(diào)用文本處理函數(shù):ReadLine(), ReadFile(), Tokenzier()為指針分配內(nèi)存塊調(diào)用SvmTrain()調(diào)用SvmTrain()前的準備工作完成分類后調(diào)用WriteModel()記錄模式123圖32 分類準備階段圖示作為支持向量分類器訓練階段的主函數(shù), SvmTrain()直接調(diào)用到的函數(shù)有InitShrink(),Converge(),CleanShrink()。其中InitShrink()函數(shù)用來初始化和分配內(nèi)存給用來減小支持向量運算量的Shrinkage()函數(shù),CleanShrink()函數(shù)則回收initshrink()分配的內(nèi)存塊。Shrinkage()函數(shù)由Converge()函數(shù)調(diào)用,使用基于拉格朗日乘子評價(Lagrange Multiplier Estimate)的啟發(fā)式方法決削減一些對模式計算不起明顯作用的樣本。Converge()函數(shù)利用細分最優(yōu)化算式得到次級二次分化方法的(Sub Quadratic Programming方法)得到的值。Converge()調(diào)用SvmOptimizer()完成對閾值retrain的設置,retrain決定了支持向量分類機是否被優(yōu)化以及哪些特征向量會被優(yōu)化。(去掉不可能成為支持向量的特征向量)。同時SvmTrain()還要在界面上顯示程序運行的進度,并顯示訓練文本由于OnFileTrain()中的ReadLine(),ReadFile(),WriteModel()。下面就對訓練支持向量分類器階段的主要函數(shù)的功能作一說明:1. SvmTrain()函數(shù)。訓練支持向量分類器的主函數(shù)。在初始化一些與訓練和優(yōu)化有關(guān)的參數(shù)后,SvmTrain()調(diào)用InitShrik()函數(shù)完成縮減訓練集前的準備工作,縮減工作由Converge()調(diào)用Shrinkage()完成。Shrinkage()使用啟發(fā)式規(guī)則來判斷是否可以對訓練集進行縮減,同時決定那些支持向量是在上界上的。SvmTrain()調(diào)用Converge()函數(shù)完成對支持向量機的優(yōu)化工作,同時計算出的值。SvmTrain()函數(shù)還要初始化MODEL model 結(jié)構(gòu)體,訓練結(jié)束時模式先存入MODEL結(jié)構(gòu)體,然后再由OnFileTrain()函數(shù)調(diào)用WriteModel()把model中的數(shù)據(jù)寫入模式文檔。2. InitShrink()函數(shù)。為Shrinkage()函數(shù)初始化用來存儲固定部分的數(shù)組和用來存貯非固定部分的數(shù)組,分配內(nèi)存塊。分配完的內(nèi)存指針成為Converge()函數(shù)的參數(shù)。3. Converge()函數(shù)。主要用于在訓練階段使用一些對支持向量機進行優(yōu)化的算法。其目的是加快分類器訓練速度,提高效率。Converge()函數(shù)就成為調(diào)用優(yōu)化函數(shù)的主函數(shù)。為了方便程序運行,對訓練集中的樣本進行了限制,即所有的特征分量的序號一定要從小到大排列,這樣有利于優(yōu)化處理,同時也免去程序再次進行排序所花費的額外時間。在得到本次實驗的數(shù)據(jù)集時,實際上是由Reuters21578經(jīng)過向量化和降維,并按照從小到大的順序排列所有的特征分量得到的。Converge()函數(shù)主要調(diào)用的函數(shù)有Selectqp_prob(),Shrinkage(),Svmoptimizer(),Ktcheck(),Computesvmnum()等。其中Selectqp_prob()用來決定下一次應該選取的非固定樣本,為細分最優(yōu)化問題選定用來做分割的樣本子集。Shrinkage()用來判斷一個樣本是否有可能成為支持向量甚至上界支持向量,舍棄一些不可能成為支持向量的樣本,減小SvmTrain()的運算量,加快分類機訓練速度。Svmoptimizer()是在當前樣本運算中進行優(yōu)化,去掉固定樣本部分,同時調(diào)用二次分化函數(shù)進行優(yōu)化。Ktcheck()與Shrinkage()配合在保證KT條件下優(yōu)化上界上的支持向量。4. CleanShrink()函數(shù)。由SvmTrain()調(diào)用清除用來存儲固定部分樣本的數(shù)組和存儲非固定部分的樣本的數(shù)組,回收內(nèi)存。為了方便地得到分類準確率,測試分類器時使用了帶有分類值的樣本。該程序也可以對無分類值的樣本進行分類,或者同時對有分類值和無分類值的混合樣本進行分類。對測試集和模式文檔的路徑的指定是在CMainFrame::OnFileTest()函數(shù)中完成的,同時也聲明了測試結(jié)果保存的路徑, OnFileTest()調(diào)用SvmTest()函數(shù)完成分類測試工作。測試分類機以及如何利用分類機進行分類的原理參見圖31。各種測試結(jié)果參見圖46,圖47,圖49等。支持向量機分類主要就是使用決策函數(shù)求解分類值y。分類測試過程中涉及到的主要函數(shù)有SvmTest(),ReadLine(),Tokenizer(),Product(),ScanModel()和StoreVector()。其中SvmTest()是測試用的主要函數(shù),它調(diào)用其它函數(shù)來完成分類測試或分類過程。ReadLine()完成對測試集和模式文檔的掃描,得到數(shù)據(jù)集大小,樣本屬性等數(shù)據(jù),Tokenizer()完成從測試集中提取特征分量和分類值的工作。ScanModel()函數(shù)掃描模式文檔,并把支持向量保存在MODEL model結(jié)構(gòu)體中。CMainFrame::OnFileTest()指定測試集,模式文檔和測試結(jié)果文檔的路徑調(diào)用SvmTest()設置參數(shù)為指針分配內(nèi)存塊調(diào)用ReadLine()讀取測試集和模式文檔調(diào)用StoreVector()對樣本逐條分類,調(diào)用Productor()計算分類值每處理完一條樣本,就在結(jié)果文檔中記錄分類結(jié)果和準確率圖 33 分類器測試過程圖示ReadLine(),Tokenizer()和ScanModel()已經(jīng)在文本處理一節(jié)說明過了,下面就測試支持向量分類器階段的其他函的功能作以說明:1. SvmTest()函數(shù)。SvmTest()是支持向量分類機進行分類時的主函數(shù)。在SvmTest()函數(shù)中首先調(diào)用ReadLine()函數(shù)獲得“”和“”的行數(shù)信息,再利用ScanModel()函數(shù)從模式文本中得到模式參數(shù),包括向量機的類型,核的類型,支持向量個數(shù),特征向量個數(shù),學習樣本個數(shù),全部的支持向量等,得到的數(shù)據(jù)存儲在MODEL model結(jié)構(gòu)體中。在利用Tokenizer()函數(shù)得到測試集中的特征分量后,在SvmTest()中利用StoreVector()和Product()函數(shù)分階段求出樣本的近似分類值,然后按照 來決定樣本所屬類別。最后與測試集中已有的分類值進行對比,求出分類正確率。2. StoreVector()函數(shù)。計算并在MODEL 結(jié)構(gòu)體中保存的值。其中,模式文檔中的已經(jīng)是和分類值相乘后的結(jié)果。其中和來自模式文檔,即由ScanModel()函數(shù)提取的支持向量,保存在MODEL model結(jié)構(gòu)體中。StoreVector()和Product()函數(shù)分階段完成利用決策函數(shù)求解分類值的功能。StoreVector()求出的在分類過程中保持不變。3. Product()函數(shù)。該支持向量分類器使用線性核函數(shù),所以Product()函數(shù)的功能就是求支持向量與測試集中的樣本的點積,即,其中已經(jīng)由StoreVector()函數(shù)求出,來自測試樣本,由Tokenizer()提取。SvmTest()函數(shù)在對樣本逐條分類時首先調(diào)用Tokenizer()提取樣本的特征分量然后調(diào)用Product()進行計算。以上介紹的三個主要功能部分的各個具體函數(shù)的代碼請參看源程序。程序中對各個函數(shù)的功能也作了詳細的注釋。對支持向量機分類器的訓練過程是一個有界的(懲罰參數(shù)C)的二次分化問題(A Quadratic Optimization Problem with Bound Constraints),即把支持向量機的決策函數(shù)變成了求解最優(yōu)化問題: (110). (111)其中n為訓練集中樣本條數(shù),是一個n維的向量,每一個對應一條樣本。求解得到的必須使(110)最小,同時又滿足(111)中的兩個條件。為了敘述方便,設數(shù)組則(110)式寫為:. 可以看到,求解最優(yōu)化問題時計算機的運算效果是與訓練集中樣本個數(shù)有關(guān)的即n條樣本時數(shù)組Q的大小是,就常用的Reuters21578或20 Newsgroups Data Set而言,其中的樣本數(shù)量都已經(jīng)達到10000條以上,對這樣的文本按照支持向量機方法分類會導致最優(yōu)化問題完全耗費內(nèi)存的問題。解決的方法有兩個,一個是實時求解最優(yōu)化問題,但是當求解最優(yōu)化問題的頻率過高時,同樣會引起內(nèi)存完全消耗。所以這里程序中使用的是把大問題分解成小問題的方法。把求解最優(yōu)化計算的過程細分成一系列的小問題來求解,同時對每個小問題進行優(yōu)化,最大限度地簡化計算,獲得更快的分類速度和效果。本程序中的細分最優(yōu)化計算的方法把最優(yōu)化問題分解為固定部分和非固定部分兩部分。固定部分是指那些在當前求解過程中不用被更新的樣本,非固定部分則是指那些在當前求解過程中會被更新的樣本。這樣做的好處是可以把對內(nèi)存需求的指數(shù)級變化方式轉(zhuǎn)換為線性變化方式,而新得到的線性變化方式是與訓練集中樣本個數(shù)和支持向量個數(shù)有關(guān)的。但是,對原始的求解最優(yōu)化問題的細分會延長分類器的訓練時間。在一次求解最優(yōu)化的過程中,非固定部分的數(shù)量是遠遠小于訓練集中樣本總數(shù)的。在本程序中預先設置。這種分割原始問題為固定和非固定兩部分并由此解決二次分化問題的算法是符合KT條件的(KuhnTucker Condition),它可以表述為:1 當最優(yōu)化問題可能引起過大內(nèi)存消耗等運行困難時。 設非固定的樣本有個,則其余個樣本在當前運算中作為固定樣本出現(xiàn)。 將當前運算中的原始問題分解為次一級二次分化(Sub Quadratic Programming),以非固定樣本作為二次分化的輸入樣本集求解。2 把在次一級二次分化中得到的返回上一級的函數(shù)。該算法必須滿足的兩點
點擊復制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1