版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Weka開發(fā)21IBk(KNN)源代碼分析如果你沒有看上一篇IB1,請先看一下,因?yàn)橹貜?fù)的內(nèi)容我在這里不會(huì)介紹了。直接看buildClassifier,這里只列出在IB1中也沒有出現(xiàn)的代碼:trym_NumClasses=instances.numClasses();m_ClassType=instances.classAttribute().type();catch(Exceptionex)thrownewError("Thisshouldneverbereached");/Throwawayinitialinstancesuntilwithinthespecifiedw
2、indowsizeif(m_WindowSize>0)&&(instances.numInstances()>m_WindowSize)m_Train=newInstances(m_Train,m_Train.numInstances()-m_WindowSize,m_WindowSize);/Computethenumberofattributesthatcontribute/toeachpredictionm_NumAttributesUsed=0.0;for(inti=0;i<m_Train.numAttribut
3、es();i)if(i!=m_Train.classIndex()&&(m_Train.attribute(i).isNominal()|m_Train.attribute(i).isNumeric()m_NumAttributesUsed=1.0;/Invalidateanycurrentlycross-validationselectedkm_kNNValid=false;IB1中不關(guān)心m_NumClasses是因?yàn)樗驼乙粋€(gè)鄰居,當(dāng)然就一個(gè)值了。m_WindowSize是指用多少樣本用于分類,這里不是隨機(jī)選擇而是直接選前m_WindowSize個(gè)。這里下面
4、是看有多少屬性參與預(yù)測。KNN也是一個(gè)可以增量學(xué)習(xí)的分器量,下面看一下它的updateClassifier代碼:publicvoidupdateClassifier(Instanceinstance)throwsExceptionif(m_Train.equalHeaders(instance.dataset()=false)thrownewException("Incompatibleinstancetypes");if(instance.classIsMissing()return;if(!m_DontNormalize)updateMinMax(instance);m
5、_Train.add(instance);m_kNNValid=false;if(m_WindowSize>0)&&(m_Train.numInstances()>m_WindowSize)while(m_Train.numInstances()>m_WindowSize)m_Train.delete(0);updateMinMax,如果超出窗口大小,循環(huán)刪除超過窗口大小的第一個(gè)樣本。這里注意IBk沒有實(shí)現(xiàn)classifyInstance,它只實(shí)現(xiàn)了distributionForInstances:publicdoubl
6、edistributionForInstance(Instanceinstance)throwsExceptionif(m_Train.numInstances()=0)thrownewException("Notraininginstances!");if(m_WindowSize>0)&&(m_Train.numInstances()>m_WindowSize)m_kNNValid=false;booleandeletedInstance=false;while(m_Train.numInstances()&a
7、mp;gt;m_WindowSize)m_Train.delete(0);/rebuilddatastructureKDTreecurrentlycan'tdeleteif(deletedInstance=true)m_NNSearch.setInstances(m_Train);/Selectkbycrossvalidationif(!m_kNNValid&&(m_CrossValidate)&&(m_kNNUpper>=1)crossValidate();m_NNSearch.addInstanceInf
8、o(instance);Instancesneighbours=m_NNSearch.kNearestNeighbours(instance,m_kNN);doubledistances=m_NNSearch.getDistances();doubledistribution=makeDistribution(neighbours,distances);returndistribution;前面兩個(gè)判斷不講了,crossValidate()馬上講,尋找K個(gè)鄰居在我第18篇里已經(jīng)講過了,現(xiàn)在我們看一下makeDistribution函數(shù)。protecteddoublemakeDistributi
9、on(Instancesneighbours,doubledistances)throwsExceptiondoubletotal=0,weight;doubledistribution=newdoublem_NumClasses;/Setupacorrectiontotheestimatorif(m_ClassType=Attribute.NOMINAL)for(inti=0;i<m_NumClasses;i)distributioni=1.0/Math.max(1,m_Train.numInstances();total=(double)m_NumClasses/Math.m
10、ax(1,m_Train.numInstances();for(inti=0;i<neighbours.numInstances();i)/CollectclasscountsInstancecurrent=neighbours.instance(i);distancesi=distancesi*distancesi;distancesi=Math.sqrt(distancesi/m_NumAttributesUsed);switch(m_DistanceWeighting)caseWEIGHT_INVERSE:weight=1.0/(distancesi0.001);/toav
11、oiddivbyzerobreak;caseWEIGHT_SIMILARITY:weight=1.0-distancesi;break;default:/WEIGHT_NONE:weight=1.0;break;weight*=current.weight();tryswitch(m_ClassType)caseAttribute.NOMINAL:weight;distribution(int)current.classValue()=break;caseAttribute.NUMERIC:distribution0=current.classValue()*weight;break;catc
12、h(Exceptionex)thrownewError("Datahasnoclassattribute!");total=weight;/Normalisedistributionif(total>0)Utils.normalize(distribution,total);returndistribution;第一行注釋Setupacorrection,我感覺沒什么必要,又不是Bayes還有除0錯(cuò)誤,沒什么可修正的。這里可以看見它實(shí)現(xiàn)了三種距離權(quán)重計(jì)算方法,倒數(shù),與1的差,另外就是固定權(quán)重1。然后如果類別是離散值把對應(yīng)的類值加上權(quán)重,如果是連續(xù)值,就加上當(dāng)前
13、類別值剩權(quán)重。crossValidate簡單地說就是用蠻力找在到底用多少個(gè)鄰居好,它對m_Train中的樣本進(jìn)行循環(huán),對每個(gè)樣本找鄰居,然后統(tǒng)計(jì)看尋找多少個(gè)鄰居時(shí)最好。protectedvoidcrossValidate()doubleperformanceStats=newdoublem_kNNUpper;doubleperformanceStatsSq=newdoublem_kNNUpper;for(inti=0;i<m_kNNUpper;i)performanceStatsi=0;performanceStatsSqi=0;m_kNN=m_kNNUpper;Instance
14、instance;Instancesneighbours;doubleorigDistances,convertedDistances;for(inti=0;i<m_Train.numInstances();i)instance=m_Train.instance(i);neighbours=m_NNSearch.kNearestNeighbours(instance,m_kNN);origDistances=m_NNSearch.getDistances();for(intj=m_kNNUpper-1;j>=0;j-)convertedDistances=newdo
15、ubleorigDistances.length;System.arraycopy(origDistances,0,convertedDistances,0,origDistances.length);doubledistribution=makeDistribution(neighbours,convertedDistances);doublethisPrediction=Utils.maxIndex(distribution);if(m_Train.classAttribute().isNumeric()thisPrediction=distribution0;doubleerr=this
16、Prediction-instance.classValue();performanceStatsSqj=err*err;/SquarederrorperformanceStatsj=Math.abs(err);/Absoluteerrorelseif(thisPrediction!=instance.classValue()performanceStatsj;/Classificationerrorif(j>=1)neighbours=pruneToK(neighbours,convertedDistances,j);/Checkthroughtheperformancesta
17、tsandselectthebest/kvalue(orthelowestkifmorethanonebest)doublesearchStats=performanceStats;if(m_Train.classAttribute().isNumeric()&&m_MeanSquared)searchStats=performanceStatsSq;doublebestPerformance=Double.NaN;intbestK=1;for(inti=0;i<m_kNNUpper;i)if(Double.isNaN(bestPerformance)bestPerformance=searchStatsi;bestK=i1;m_kNN=bestK;m_kNNValid=true;m_kNNUp
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年深圳職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試歷年參考題庫含答案解析
- 二零二五年度高速公路橋梁養(yǎng)護(hù)勞務(wù)承包協(xié)議3篇
- rA公路工程施工測量教學(xué)文案
- 2024年浙江紡織服裝職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測驗(yàn)歷年參考題庫(頻考版)含答案解析
- 九年級數(shù)學(xué)上冊第一章特殊平行四邊形11菱形的性質(zhì)與判定第3課時(shí)菱形的性質(zhì)判定與其他知識的綜合作業(yè)課件新版北師大版
- 2024年瀘州職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測驗(yàn)歷年參考題庫(頻考版)含答案解析
- 2024年河南護(hù)理職業(yè)學(xué)院高職單招職業(yè)技能測驗(yàn)歷年參考題庫(頻考版)含答案解析
- 2024年河北化工醫(yī)藥職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測驗(yàn)歷年參考題庫(頻考版)含答案解析
- 2024年江西青年職業(yè)學(xué)院高職單招語文歷年參考題庫含答案解析
- 二零二五年度新型環(huán)保材料研發(fā)與市場推廣合同3篇
- 江蘇省蘇州市2023-2024學(xué)年高一上學(xué)期期末學(xué)業(yè)質(zhì)量陽光指標(biāo)調(diào)研試題+物理 含解析
- 農(nóng)業(yè)合作社線上線下營銷方案
- 研發(fā)實(shí)驗(yàn)室安全培訓(xùn)
- 地測防治水技能競賽理論考試題庫(含答案)
- 電信公司網(wǎng)絡(luò)安全管理制度
- 湖北省十堰市2025屆高一數(shù)學(xué)第一學(xué)期期末教學(xué)質(zhì)量檢測試題含解析
- 安全生產(chǎn)標(biāo)準(zhǔn)化知識培訓(xùn)考核試卷
- 中考英語復(fù)習(xí)分析如何寫英語高分作文課件
- 以諾書-中英對照
- 2024年中職高考數(shù)學(xué)計(jì)算訓(xùn)練 專題11 平面向量的基本計(jì)算(含答案解析)
- 自然科學(xué)基金項(xiàng)目申報(bào)書(模板)
評論
0/150
提交評論