r語言課程設(shè)計(jì)_第1頁
r語言課程設(shè)計(jì)_第2頁
r語言課程設(shè)計(jì)_第3頁
r語言課程設(shè)計(jì)_第4頁
r語言課程設(shè)計(jì)_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

本文格式為Word版,下載可任意編輯——r語言課程設(shè)計(jì)library(MASS)

將訓(xùn)練集中的y變量作為判別變量,其他剩余的變量作為特征變量,運(yùn)用lda()函數(shù)來進(jìn)行費(fèi)希爾判別下的線性判別。

>ldaldaCall:

lda(y~.,data=x)

Priorprobabilitiesofgroups:1234

0.648148150.111111110.037037040.20370370Groupmeans:

x1x2x3x4

1-0.03336857-0.007231429-0.0008800-0.228697120.769233330.7488000000.1302167-0.269633330.377650000.4366000000.6406500-0.497350040.565145450.6081909090.2076455-0.2936727Coefficientsoflineardiscriminants:

4

library(nnet)

首先在建模之前,先介紹軟件包nnet中的一個(gè)函數(shù):class.ind()。該函數(shù)可以通過類別變量的因子變量來生成一個(gè)類指標(biāo)矩陣。下面通過一個(gè)簡單的例子來更明白地說明該函數(shù)的功能。

>z=c(1,2,3)#定義一個(gè)水平數(shù)為3的向量>class.ind(z)123[1,]100[2,]010[3,]001

從輸出結(jié)果可以看到,該函數(shù)主要是將向量變成一個(gè)矩陣,其中每行代表一個(gè)樣本。只是將樣本的類別用0和1來表示,即假使是該類,則在該類別名下用1表示,而其余的類別名下面用0表示。

將數(shù)據(jù)框的前4列作為自變量數(shù)據(jù),class.ind(y)作為類別變量數(shù)據(jù),設(shè)置隱蔽層節(jié)點(diǎn)個(gè)數(shù)為4,模型的最大迭代次數(shù)為1000次,用來防止模型的死循環(huán)。之后用核心函數(shù)nnet()來建立神經(jīng)網(wǎng)絡(luò)模型。

>model=nnet(x[1:4],class.ind(y),data=x,size=4,+decay=5e-4,maxit=1000)#神經(jīng)網(wǎng)絡(luò)>p=x[,1:4]#測試集定為原始數(shù)據(jù)

>pred3=predict(model,p)#對測試集進(jìn)行預(yù)計(jì)>head(pred3)#預(yù)計(jì)結(jié)果的部分顯示1234

[1,]0.99999415950.00000000001.474405e-044.459695e-05[2,]0.94903083780.01131001011.454422e-059.221503e-03[3,]0.00496943100.02406255892.918010e-048.973849e-01

7

[4,]0.00025403970.00019419714.926029e-049.982468e-01[5,]0.86827598540.00000000005.810529e-031.975710e-01[6,]0.99998319910.00000000001.631513e-042.351911e-04

上述結(jié)果的每一行代表測試集中的每一個(gè)樣本,其判別準(zhǔn)則為:每一行中最大值所在的列名即為該樣本所屬的類別。

>pnew=max.col(pred3)#確定測試集中每一個(gè)樣本所屬類別>table(y,pnew)#給出混淆矩陣pnew

y12341331012240030011410010

>e_ee_e

[1]0.1111111從結(jié)果可以看出,該模型的誤判率為11.1%,相比較判別分析大幅度降低,說明該模型對測試集的預(yù)計(jì)效果很好。

>names(model)#模型中包含的所有輸出結(jié)果

[1]\\\

[13]\其中:value表示迭代最終值。

wts表示模型在迭代過程中所尋覓到的最優(yōu)權(quán)重值,其取值為系統(tǒng)隨機(jī)生成,即每次建模所使用的迭代初始值都是不一致的。由此可以看出神經(jīng)網(wǎng)絡(luò)模型的靈活性很高。

convergence表示在模型建立的迭代過程中,迭代次數(shù)是否達(dá)到最大迭代次數(shù)。假使結(jié)果為1,則說明達(dá)到最大迭代次數(shù);假使結(jié)果為0,則說明沒有達(dá)到最大迭代次數(shù)。假使結(jié)果沒有達(dá)到最大迭代次數(shù),說明該模型可以被采用,否則,就要增大參數(shù)maxit的設(shè)定值,重新建模。

>model$convergence[1]0

該模型的convergence取值為0,說明該模型可以被采用。

2.模型優(yōu)化

雖然上述模型的各項(xiàng)指標(biāo)可能都滿足要求,但是,隱蔽層中節(jié)點(diǎn)的個(gè)數(shù)和迭代次數(shù)都是人為設(shè)定的,隨著兩者數(shù)值的改變建立的模型也不盡一致,所以我們需要尋覓兩者的最優(yōu)值,使其對應(yīng)的模型最優(yōu)。下面通過編寫函數(shù)來實(shí)現(xiàn)這一目的。

8

(1).尋覓隱蔽層節(jié)點(diǎn)個(gè)數(shù)最優(yōu)值

>f=function(n){

+e=matrix(0,2,n,dimnames=list(c('誤判概率',

+'迭代終值'),c(1:n)))#定義一矩陣,用于存放結(jié)果+for(iin1:n){

+model=nnet(x[1:4],class.ind(y),data=x,size=i,+decay=5e-4,maxit=1000)+pred=predict(model,p)+pnew=max.col(pred)+table(y,pnew)

+e_ef(10)#將n取為10輸出結(jié)果:

12345誤判概率0.25925930.20370370.18518520.07407410.0370371

迭代終值20.70701215.36959815.7799998.23342796.5062853678910

誤判概率0.01851850.03703710.0000000.03703710.0185185迭代終值4.49751954.66498322.7332964.39859893.2961255

9

結(jié)合矩陣以及折線圖,可以看出當(dāng)n=8的時(shí)候,誤判率最小,同時(shí)迭代最終值也達(dá)到最小,說明當(dāng)n=8即隱蔽層節(jié)點(diǎn)個(gè)數(shù)為8時(shí),模型的擬合效果最好,對測試集做出的預(yù)計(jì)效果也最好。

(2).尋覓迭代次數(shù)最優(yōu)值

>ff=function(n){+e=0

+for(iin1:n){

+model=nnet(x[,1:4],class.ind(x$y),data=x,+size=8,decay=5e-4,maxit=i)+e[i]=sum(max.col(predict(model,x[,1:4]))!=+x$y)/nrow(x)+}

+print(plot(1:n,e,'l',ylab='誤判概率',xlab='訓(xùn)練周+期',col='blue',ylim=c(min(e),max(e))))}

ff(1000)

從模型對測試集的誤判率隨訓(xùn)練周期的變化曲線可以看出,誤判概率隨著訓(xùn)練周期的增大先是急速下降,后趨于平穩(wěn)。但是也有出現(xiàn)反向增長的現(xiàn)象,可能與訓(xùn)練集和測試集的選取有關(guān)。不過,從圖中整體的變化趨勢可以看出曲線的拐點(diǎn)在maxit=200處,所以maxit的最優(yōu)值可能為200。

3.建模重建

取size=8,maxit=200,重新建立神經(jīng)網(wǎng)絡(luò)模型,得到如下結(jié)果:

10

>model1=nnet(x[,1:4],class.ind(y),data=x,size=8,+decay=5e-4,maxit=200)>pred4=predict(model1,p)>pnew1=max.col(pred4)

>e_e1e_e1

[1]0.05555556

>model1$convergence[1]1

誤判概率為5.6%,較上次模型有所下降,但是模型的迭代次數(shù)達(dá)到了最大迭代次數(shù),因此該模型可能還不是最優(yōu)的。

取size=8,maxit=1000,重新建立神經(jīng)網(wǎng)絡(luò)模型,得到如下結(jié)果:>model2=nnet(x[1:4],class.ind(y),data=x,size=8,+decay=5e-4,maxit=1000)>pred5=predict(model2,p)>pnew2=max.col(pred5)>table(y,pnew2)Pnew2

y12341350002060030020400011

>e_e2e_e2[1]0

>model2$convergence[1]0

從輸出結(jié)果來看,該模型的誤判率為0,迭代次數(shù)也沒有達(dá)到最大值,說明該模型可以被采用,在樣本量如此小的條件下,建立的模型能有如此高的預(yù)計(jì)精度,確實(shí)不得不讓人佩服神經(jīng)網(wǎng)絡(luò)模型的強(qiáng)大。

然而,由于訓(xùn)練集樣本和測試集樣本完全一致,所以兩者的特征也完全一樣,可能由于這個(gè)原因,才會(huì)使得測試集的預(yù)計(jì)結(jié)果與實(shí)際值重合度如此高;況且由于神經(jīng)網(wǎng)絡(luò)模型太過靈活,當(dāng)訓(xùn)練周期很長的時(shí)候,建立出來的神經(jīng)網(wǎng)絡(luò)模型可能會(huì)記住訓(xùn)練集的幾乎所有信息,而測試集又和訓(xùn)練集一致,所以,模型的誤判率才會(huì)如此低。

盡管在此次建立神經(jīng)網(wǎng)絡(luò)模型的過程中出現(xiàn)了這么多問題,但并不能夠掩蓋神經(jīng)網(wǎng)絡(luò)模型的強(qiáng)大之處,所以,神經(jīng)網(wǎng)絡(luò)模型還是值得我們深入學(xué)習(xí)和深入研究的。

4.模型應(yīng)用

當(dāng)運(yùn)用此模型進(jìn)行預(yù)計(jì)時(shí),需要注意的是,首先必需對用來預(yù)計(jì)的自變量進(jìn)行標(biāo)準(zhǔn)化,以消除數(shù)量級和量綱的影響。然后直接帶入模型給出預(yù)計(jì)結(jié)果。

11

五.總結(jié)與建議

通過此次課程設(shè)計(jì),使我更加扎實(shí)的把握了有關(guān)如何使用R語言進(jìn)行統(tǒng)計(jì)分析方面的知識,在設(shè)計(jì)過程中雖然遇到了一些問題,但經(jīng)過一次又一次的思考,一遍又一遍的檢查終究找出了原因所在,也暴露出了前期我在這方面的知識欠缺和經(jīng)驗(yàn)不足。實(shí)踐出真知,通過親自動(dòng)手制作,讓我根絕把握的知識不再是紙上談兵。

回想這次課程設(shè)計(jì),學(xué)到了好多好多的東西,不僅穩(wěn)定了以前所學(xué)過的知識,而且通過翻閱書籍也學(xué)到了好多在課堂上所沒有學(xué)到過的知識,例如:BP神經(jīng)網(wǎng)絡(luò)模型是如何建立的。通過這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。

通過課程設(shè)計(jì)的訓(xùn)練,讓我進(jìn)一步學(xué)習(xí)和把握了對R語言編程藝術(shù)的更深理解,在對函數(shù)進(jìn)行設(shè)計(jì)和編寫的過程中,

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論