版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 目錄</b></p><p><b> 第一章 緒論1</b></p><p> 第二章 數(shù)據(jù)基本分析2</p><p><b> 2.1數(shù)據(jù)說(shuō)明2</b></p><p><b> 2.2質(zhì)量分析2</b>&
2、lt;/p><p> 2.3 基本描述分析2</p><p> 第三章 數(shù)據(jù)預(yù)處理4</p><p> 3.1 數(shù)據(jù)處理過(guò)程4</p><p> 3.2 數(shù)據(jù)預(yù)處理方法4</p><p> 3.3 數(shù)據(jù)預(yù)處理結(jié)果6</p><p> 第四章 數(shù)據(jù)模型構(gòu)建8</p>
3、<p> 4.1 數(shù)據(jù)流的構(gòu)建8</p><p> 第五章 模型結(jié)果分析12</p><p> 5.1結(jié)果的分析處理12</p><p> 5.2 結(jié)果合理性分析13</p><p> 第六章 應(yīng)用系統(tǒng)設(shè)計(jì)16</p><p> 6.1模型接口16</p><p
4、> 6.2人機(jī)接口19</p><p> 6.3軟件測(cè)試24</p><p><b> 結(jié)論30</b></p><p><b> 參考文獻(xiàn)31</b></p><p><b> 結(jié)束語(yǔ)32</b></p><p><b&
5、gt; 第一章 緒論</b></p><p> 由于網(wǎng)站的結(jié)構(gòu)設(shè)計(jì),對(duì)特定用戶而言信息獲取的代價(jià)與所經(jīng)過(guò)的瀏覽路徑長(zhǎng)度成正比,這些位于路徑中間的不必要的文檔就無(wú)疑增加了用戶獲取信息的代價(jià)。本文利用Clementine數(shù)據(jù)挖掘的方法和技術(shù)對(duì)用戶所訪問(wèn)的頁(yè)面序列進(jìn)行挖掘,構(gòu)建網(wǎng)頁(yè)推薦的模型,實(shí)現(xiàn)對(duì)當(dāng)前站點(diǎn)排序方式的優(yōu)化,從而最大限度地優(yōu)化用戶訪問(wèn)體驗(yàn),提高當(dāng)前站點(diǎn)信息獲取的整體效率。</p>
6、;<p> [關(guān)鍵詞] 網(wǎng)頁(yè)推薦;Clememtine數(shù)據(jù)挖掘;訪問(wèn)序列 </p><p> 傳統(tǒng)的Web網(wǎng)站以系統(tǒng)自身為中心,為了容納大量的信息,以圖結(jié)構(gòu)組織網(wǎng)站,頁(yè)面之間存在著比較復(fù)雜的層次關(guān)系。這些預(yù)先設(shè)計(jì)好的瀏覽路徑(網(wǎng)站的結(jié)構(gòu))嚴(yán)格按照設(shè)計(jì)者編輯好的層次返回頁(yè)面,因此,為了獲取特定的信息,從同一頁(yè)面出發(fā)的所有用戶都不得不重復(fù)地經(jīng)過(guò)很多與自己毫無(wú)關(guān)系的、不希望看到的中間鏈接頁(yè)面,使得用戶
7、為了獲取少量的信息付出較大的代價(jià)。如果在確保網(wǎng)頁(yè)內(nèi)容的前提下,實(shí)現(xiàn)網(wǎng)站物理結(jié)構(gòu)的調(diào)整和再組織,就可以避免混亂。站點(diǎn)路徑優(yōu)化實(shí)際上就是站點(diǎn)管理者優(yōu)化其站點(diǎn)結(jié)構(gòu),它的出現(xiàn)就是為了提高用戶的訪問(wèn)效率以及用戶對(duì)站點(diǎn)的忠誠(chéng)度。 </p><p> 第二章 數(shù)據(jù)基本分析</p><p><b> 2.1數(shù)據(jù)說(shuō)明</b></p><p> 本數(shù)據(jù)來(lái)自網(wǎng)
8、絡(luò)信息服務(wù)(IIS)網(wǎng)站msnbc.com和msn.com1999年9月28日全天日志記錄,每行連續(xù)數(shù)據(jù)表示單個(gè)用戶24小時(shí)內(nèi)瀏覽網(wǎng)頁(yè)的記錄,連續(xù)數(shù)據(jù)中的數(shù)字表示用戶對(duì)相應(yīng)網(wǎng)頁(yè)的瀏覽請(qǐng)求,該訪問(wèn)請(qǐng)求不會(huì)被記錄成詳細(xì)的記錄,即具體的網(wǎng)址,而只是單單記錄了網(wǎng)頁(yè)類型。這些網(wǎng)頁(yè)類型分別是 "frontpage", "news", "tech", "local", &
9、quot;opinion", "on-air", "misc", "weather", "health", "living", "business", "sports", "summary", "bbs" (bulletin board servic
10、e), "travel", "msn-news", and "msn-sports"。通過(guò)超高速緩沖器(寄存器)每個(gè)網(wǎng)頁(yè)的服務(wù)請(qǐng)求不會(huì)被記錄到服務(wù)日志,因此,它不會(huì)體現(xiàn)在數(shù)據(jù)中。</p><p><b> 2.2質(zhì)量分析</b></p><p> 此次分析的數(shù)據(jù)總共有989818,平均每個(gè)用戶點(diǎn)擊網(wǎng)頁(yè)的次
11、數(shù)是5.7次,每個(gè)不同類型的網(wǎng)頁(yè)有10到5000個(gè)不同的URL(網(wǎng)頁(yè)地址)。從數(shù)據(jù)的質(zhì)量上看,這是一個(gè)較大的數(shù)據(jù)集,數(shù)據(jù)的量足夠大,可以用于數(shù)據(jù)的挖掘分析,且數(shù)據(jù)來(lái)源于Internet Information Server (IIS),有足夠可信度。用戶平均點(diǎn)擊網(wǎng)頁(yè)的數(shù)據(jù)也有5.7次,適合用于分析點(diǎn)擊網(wǎng)頁(yè)序列,每種類型的網(wǎng)頁(yè)也有足夠多的不同網(wǎng)址,符合客觀要求。因此從數(shù)據(jù)質(zhì)量上看,所選取的數(shù)據(jù)有分析的必要。</p><
12、p> 2.3 基本描述分析</p><p><b> 截取部分?jǐn)?shù)據(jù)如下:</b></p><p><b> 1 1 </b></p><p><b> 2 </b></p><p> 3 2 2 4 2 2 2 3 3 </p><p>
13、<b> 5 </b></p><p><b> 1 </b></p><p><b> 6 </b></p><p><b> 1 1 </b></p><p><b> 6 </b></p><p&g
14、t; 6 7 7 7 6 6 8 8 8 8 </p><p> 6 9 4 4 4 10 3 10 5 10 4 4 4 </p><p> 1 1 1 11 1 1 1 </p><p><b> 12 12 </b></p><p><b> 1 1</b></p>&
15、lt;p> 每一行代表一個(gè)用戶所點(diǎn)擊的網(wǎng)頁(yè),此次選取的數(shù)據(jù)之中一共有17個(gè)不同類型的網(wǎng)頁(yè),分別是:frontpage news tech local opinion on-air misc weather msn-news health living business msn-sports sports summary bbs travel</p><p> 為了方便處理,將以上各個(gè)網(wǎng)頁(yè)進(jìn)行編號(hào),分別為
16、1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17。一第三行數(shù)據(jù)為例對(duì)單個(gè)用戶的數(shù)據(jù)進(jìn)行說(shuō)明。用戶3第一次點(diǎn)擊3號(hào)網(wǎng)頁(yè),第二次點(diǎn)擊2號(hào)網(wǎng)頁(yè),第三次點(diǎn)擊2號(hào)網(wǎng)頁(yè),第四次點(diǎn)擊4號(hào)網(wǎng)頁(yè)等一次類推下去。每一行都是一個(gè)用戶的記錄</p><p><b> 第三章 數(shù)據(jù)預(yù)處理</b></p><p> 3.1 數(shù)據(jù)處理過(guò)程</p>
17、<p> 此次任務(wù)是設(shè)計(jì)基于網(wǎng)頁(yè)點(diǎn)擊次序來(lái)推送下一次可能點(diǎn)擊的網(wǎng)頁(yè)。選取的方法是Clementine 的序列關(guān)聯(lián),所以要將數(shù)據(jù)處理成Clementine可讀取的格式,并且要?jiǎng)h減不必要的數(shù)據(jù),改寫數(shù)據(jù)的格式,這樣才能達(dá)到分析處理的要求。</p><p> 結(jié)合mnsbc.com提供的數(shù)據(jù)具體分析:每行數(shù)據(jù)是一個(gè)用戶的信息記錄,表示的含義是第n號(hào)用戶點(diǎn)擊了哪個(gè)網(wǎng)頁(yè),是第幾次點(diǎn)擊的。</p>
18、<p> 舉出部分?jǐn)?shù)據(jù)樣例如下:</p><p><b> 1 1 </b></p><p><b> 2 </b></p><p> 3 2 2 4 2 2 2 3 3 </p><p><b> 5 </b></p><p>
19、<b> 1 </b></p><p><b> 6 </b></p><p><b> 1 1 </b></p><p><b> 6 </b></p><p> 6 7 7 7 6 6 8 8 8 8 </p><p>
20、; 6 9 4 4 4 10 3 10 5 10 4 4 4 </p><p> 1 1 1 11 1 1 1 </p><p><b> 12 12 </b></p><p><b> 1 1</b></p><p> 因?yàn)榇舜稳蝿?wù)是進(jìn)行序列關(guān)聯(lián)分析,所以用戶只進(jìn)行了一次點(diǎn)擊情況的記錄可
21、以直接刪除,比如樣例中2,4,5,6,8號(hào)用戶。又因?yàn)樽罱K要進(jìn)行的操作是推送下一個(gè)可能點(diǎn)擊的網(wǎng)頁(yè),如果用戶只是在不斷的點(diǎn)擊同一個(gè)網(wǎng)頁(yè),這樣的記錄也無(wú)法分析可推送的網(wǎng)頁(yè),故也要剔去,如樣例中1號(hào)用戶。還有一種情況就是在多次點(diǎn)擊過(guò)程中有重復(fù)點(diǎn)擊的網(wǎng)頁(yè),這樣的情況只需選取一次即可,因?yàn)槲覀兯P(guān)系的是網(wǎng)頁(yè)點(diǎn)擊的次序而不是次數(shù),現(xiàn)對(duì)樣例中9號(hào)用戶的數(shù)據(jù)進(jìn)行分析,用戶9第一次點(diǎn)擊6號(hào)網(wǎng)頁(yè),第二次點(diǎn)擊7號(hào)網(wǎng)頁(yè),第三次點(diǎn)擊6號(hào)網(wǎng)頁(yè),第四次點(diǎn)擊8號(hào)網(wǎng)頁(yè)。
22、</p><p> 根據(jù)以上的要求,可將數(shù)據(jù)處理成三列,分別表示用戶號(hào),用戶點(diǎn)擊的網(wǎng)頁(yè)號(hào),此次點(diǎn)擊的次序號(hào)。將處理好的數(shù)據(jù)保存在文件中等待處理即可。</p><p> 3.2 數(shù)據(jù)預(yù)處理方法</p><p> 根據(jù)數(shù)據(jù)處理過(guò)程,決定運(yùn)用microsoft visual c++軟件,進(jìn)行編程處理,程序分析過(guò)程如下:</p><p> 1
23、.先取數(shù)據(jù)文本中一行數(shù)據(jù)賦值給數(shù)組msn</p><p> 2.將msn數(shù)組按照空格分隔符分割,并將分割后數(shù)據(jù)轉(zhuǎn)換為整型,賦值給msn1數(shù)組。</p><p> 3.對(duì)msn1數(shù)組中數(shù)據(jù)進(jìn)行前后比較,如若相等,則將前一個(gè)賦值為0</p><p> 4.將數(shù)組msn1中數(shù)據(jù)進(jìn)行判斷,大于0,則將數(shù)據(jù)賦值給數(shù)組msn2。</p><p>
24、 5.將數(shù)組msn2中數(shù)據(jù)個(gè)數(shù)大于1的,按形式為三列,分別是用戶號(hào),用戶點(diǎn)擊的網(wǎng)頁(yè)號(hào),點(diǎn)擊網(wǎng)頁(yè)的次序號(hào)的格式寫入e.txt文本文件。</p><p> 6.具體代碼分析如下:</p><p> #include <iostream></p><p> #include <fstream></p><p> #i
25、nclude "memory.h"</p><p> #include "stdlib.h"</p><p> using namespace std;</p><p> void main()</p><p><b> {</b></p><p>
26、 cout<<"正在處理,請(qǐng)稍等.....";</p><p> //void quchu();</p><p> int i=0,count=0; </p><p> char msn[100000];//保存字符型數(shù)據(jù)數(shù)組</p><p> int msn1[100000];//保存一行int型
27、數(shù)據(jù)數(shù)組</p><p> int msn2[10000];//保存無(wú)重復(fù)數(shù)據(jù)數(shù)組</p><p> fstream out;</p><p> ofstream in;//定義文本輸入輸出流</p><p> out.open("msnbc990928.seq",ios::in);//打開(kāi)文本數(shù)據(jù)</p&
28、gt;<p> in.open("e.txt",ios::trunc); //ios::trunc表示在打開(kāi)文件前將文件清空,由于是寫入,文件不存在則創(chuàng)建</p><p> while(!out.eof())</p><p><b> { </b></p><p> out.getline(msn,
29、100000,'\n');//getline(char *,int,char) 表示該行字符達(dá)到100個(gè)或遇到換行就結(jié)束</p><p> const char * split=" "; //將數(shù)據(jù)變?yōu)閕nt型</p><p><b> char * p;</b></p><p><b>
30、 i=0;</b></p><p> p=strtok(msn,split);</p><p> while(p!=NULL)</p><p><b> {</b></p><p> msn1[i]=atoi(p); //將截取數(shù)字轉(zhuǎn)換為整型,賦值給數(shù)組</p><p> p
31、=strtok(NULL,split);</p><p><b> i++;</b></p><p><b> }</b></p><p><b> int ii=i;</b></p><p><b> int a=0;</b></p>
32、<p> for(i=0;i<ii;i++) </p><p><b> {</b></p><p> if(msn1[i]==msn1[i+1]) //判斷是否重復(fù),重復(fù)則將前一值賦值為0</p><p> msn1[i]=0;</p><p> if(msn1[i]>0)//將符
33、合條件的賦值給數(shù)組</p><p><b> {</b></p><p> msn2[a]=msn1[i];</p><p><b> a++;</b></p><p><b> }</b></p><p><b> }</b&
34、gt;</p><p> int aa=a;//保存一行數(shù)字個(gè)數(shù)</p><p> if(aa>1)//將一行的個(gè)數(shù)大于1的按要求寫入文件</p><p><b> {</b></p><p> for(i=0;i<aa;i++)</p><p> in<<cou
35、nt+1<<','<<msn2[i]<<','<<i+1<<"\n";</p><p><b> count++;</b></p><p><b> }</b></p><p><b> }<
36、;/b></p><p> out.close();//關(guān)閉文件</p><p><b> }</b></p><p> 3.3 數(shù)據(jù)預(yù)處理結(jié)果</p><p> 數(shù)據(jù)處理好之后,形式為三列,分別是用戶號(hào),用戶點(diǎn)擊的網(wǎng)頁(yè)號(hào),點(diǎn)擊網(wǎng)頁(yè)的次序號(hào)。</p><p> 取部分處理好的結(jié)果如
37、下:</p><p> ID,CONTENT,TIME</p><p><b> 1,3,1</b></p><p><b> 1,2,2</b></p><p><b> 1,4,3</b></p><p><b> 1,2,4&l
38、t;/b></p><p><b> 1,3,5</b></p><p><b> 2,6,1</b></p><p><b> 2,7,2</b></p><p><b> 2,6,3</b></p><p><
39、;b> 2,8,4</b></p><p><b> 3,6,1</b></p><p><b> 3,9,2</b></p><p><b> 3,4,3</b></p><p> 開(kāi)頭是加上的字段名。表達(dá)的含義是一號(hào)用戶第一到第五次分別點(diǎn)擊3,2
40、,4,2,3號(hào)網(wǎng)頁(yè)。這個(gè)數(shù)據(jù)就可以用Clementine進(jìn)行處理分析了。</p><p> 第四章 數(shù)據(jù)模型構(gòu)建</p><p> 4.1 數(shù)據(jù)流的構(gòu)建</p><p> 打開(kāi)Clementine軟件,在源選項(xiàng)卡中選擇“可變文件”節(jié)點(diǎn),單擊編輯,進(jìn)行如下設(shè)置:在文件設(shè)置中,導(dǎo)入處理好的數(shù)據(jù),勾選“讀取文件中的字段名”,在定“界符中”選項(xiàng)框中勾選“逗號(hào)”,“新行
41、”;在類型設(shè)置中,將ID字段設(shè)為無(wú)類型,CONTENT設(shè)為集,TIME設(shè)為范圍。</p><p><b> 設(shè)置過(guò)程截圖如下:</b></p><p><b> 圖1 導(dǎo)入數(shù)據(jù)</b></p><p><b> 圖2 數(shù)據(jù)類型設(shè)置</b></p><p> 再點(diǎn)擊選取表
42、節(jié)點(diǎn),連接可變文件,執(zhí)行,觀察數(shù)據(jù)是否正確導(dǎo)入了。然后在數(shù)學(xué)建模選項(xiàng)卡中選擇“序列”節(jié)點(diǎn),連接可變文件,點(diǎn)擊編輯,進(jìn)行如下設(shè)置:在字段設(shè)置中,將ID字段設(shè)置為ID,勾選“設(shè)置時(shí)間字段”,選擇TIME,內(nèi)容字段中選擇CONTENT。在模型設(shè)置中,設(shè)置合適的最小規(guī)則支持度,最小規(guī)則置信度,最大序列大小,要添加到流的預(yù)測(cè)。</p><p><b> 設(shè)置過(guò)程截圖如下:</b></p>
43、<p> 圖3 序列分析字段設(shè)置</p><p> 圖4 序列分析模型參數(shù)設(shè)置</p><p> 以上過(guò)程設(shè)置好后,對(duì)“序列”字段點(diǎn)擊執(zhí)行,產(chǎn)生結(jié)果。</p><p> 數(shù)據(jù)流的構(gòu)建過(guò)程截圖如下:</p><p><b> 圖5 數(shù)據(jù)流構(gòu)建</b></p><p> 第五
44、章 模型結(jié)果分析</p><p> 5.1結(jié)果的分析處理</p><p> 首先在“序列”節(jié)點(diǎn)的模型設(shè)置中設(shè)置好合適的最小支持度,最小置信度?,F(xiàn)在將最小支持度設(shè)置為3%,,最小置信度設(shè)置為60%,取其結(jié)果進(jìn)行相應(yīng)的分析。結(jié)果如下:</p><p><b> 圖6 測(cè)試模型結(jié)果</b></p><p> 將最小支持
45、度設(shè)置為3%,最小置信度設(shè)置為60%是為了剔除最小支持度小于3%,最小置信度小于60%的結(jié)果。以第一條結(jié)果為例進(jìn)行說(shuō)明:前項(xiàng)為4,7,后項(xiàng)為4,表示點(diǎn)擊了4號(hào)網(wǎng)頁(yè),再點(diǎn)7號(hào)網(wǎng)頁(yè),可推送出4號(hào)網(wǎng)頁(yè)。因?yàn)橛涗浺还灿?89818,此條結(jié)果支持度為4.47%,故先點(diǎn)擊4號(hào)網(wǎng)頁(yè),再點(diǎn)擊7號(hào)網(wǎng)頁(yè)的記錄一共有約40000多條,點(diǎn)擊了4號(hào)和7號(hào)網(wǎng)頁(yè)后,在點(diǎn)擊4號(hào)的可能性為72.26%,即為其置信度。其他條記錄可依此類推。</p><
46、p> 5.2 結(jié)果合理性分析</p><p> 以上選取的最小支持度設(shè)置為3%,最小置信度設(shè)置為60%,那么根據(jù)這個(gè)設(shè)置可以看出,只有重復(fù)出現(xiàn)30000次左右的結(jié)果才會(huì)被保留下來(lái),這樣會(huì)導(dǎo)致很多條結(jié)果被剔除,所得出的結(jié)論很少,不利于分析推送。所以最小支持度應(yīng)該設(shè)置的更小一定,使結(jié)果更加有合理性。</p><p> 重新設(shè)置相關(guān)參數(shù),最小支持度設(shè)置為0.5%,最小置信度設(shè)置為60
47、%,則前項(xiàng)必須出現(xiàn)的次數(shù)達(dá)到5000次左右結(jié)果才會(huì)被保留。結(jié)果如下:</p><p><b> 圖7 修正模型結(jié)果</b></p><p><b> 圖8 模型結(jié)果匯總</b></p><p> 從結(jié)果匯總中可以看出,將最小支持度設(shè)置為0.5%,最小置信度設(shè)置為60%時(shí),規(guī)則數(shù)一共有161條,有效的事務(wù)數(shù)有38353
48、4條。其中最小的支持度為0.633%,最大支持度為88.35%。最小置信度為60.056%,最大置信度為83.84%。從有效事務(wù)數(shù),規(guī)則條數(shù)上看,這個(gè)結(jié)果還是很合理的。置信度也在60%以上,有一定可信度。故可以選擇這個(gè)分析結(jié)果。最后將此結(jié)果導(dǎo)出,保留給推薦系統(tǒng)備用。</p><p> 第六章 應(yīng)用系統(tǒng)設(shè)計(jì)</p><p><b> 6.1模型接口</b></
49、p><p> 經(jīng)討論分析我們決定,運(yùn)用delphi7.0軟件實(shí)現(xiàn)對(duì)本系統(tǒng)的應(yīng)用設(shè)計(jì)。具體分析實(shí)現(xiàn)步驟如下:</p><p> 1.用戶操作網(wǎng)頁(yè)編號(hào)記錄的實(shí)現(xiàn)。定義全局?jǐn)?shù)組msn,用于記錄用戶所進(jìn)入網(wǎng)頁(yè)的的編號(hào),代碼如下:</p><p> unit Uall;</p><p><b> interface</b>&l
50、t;/p><p> var msn:array[0..1000] of integer;//定義數(shù)組,保存訪問(wèn)數(shù)據(jù)</p><p> var i:integer;</p><p> implementation</p><p> uses Ulocal, Umain, Unews, Utech;</p><p>
51、 initialization</p><p><b> i:=0;</b></p><p><b> end.</b></p><p> 2.編輯17個(gè)窗口作為網(wǎng)頁(yè),并新建一個(gè)主窗口Fmain,在Fmain中拉入label,當(dāng)用戶點(diǎn)擊相應(yīng)的label時(shí),進(jìn)入相應(yīng)的網(wǎng)頁(yè),并將網(wǎng)頁(yè)的編號(hào)記錄到數(shù)據(jù)Uall.msn數(shù)組中
52、,并將數(shù)組下標(biāo)i自加1。具體label中代碼如下:</p><p> procedure TFmain.Label2Click(Sender: TObject);</p><p><b> begin</b></p><p> self.Hide;</p><p> Fnews.Show;</p>
53、<p> Uall.msn[UALL.i]:=2;</p><p> Uall.i:=Uall.i+1;</p><p><b> end;</b></p><p> 3.網(wǎng)頁(yè)推薦實(shí)現(xiàn)。在Fmain中拉入一個(gè)button,當(dāng)用戶點(diǎn)擊此button時(shí),系統(tǒng)進(jìn)行推薦,在此中寫入代碼,具體分析步驟如下:</p><
54、;p> 1)取分析后文本數(shù)據(jù)中一行,并將一行數(shù)據(jù)進(jìn)行分割,取最后一個(gè)編號(hào)為推薦編號(hào)轉(zhuǎn)換為Int型,賦值給整型變量SE。將數(shù)據(jù)逐個(gè)轉(zhuǎn)換為int型,賦值給msnint數(shù)組,數(shù)據(jù)最后一個(gè)編號(hào)不寫如數(shù)組。</p><p> 2)將msnint數(shù)組中數(shù)據(jù)從結(jié)尾開(kāi)始逐個(gè)與用戶操作序列數(shù)組結(jié)尾開(kāi)始進(jìn)行比較。用戶操作序列數(shù)組Uall.msn與msnint中匹配時(shí),將SE值轉(zhuǎn)換為string型賦值給SEE,并將temp值
55、賦值為1。</p><p> 3)對(duì)temp進(jìn)行判斷,temp為1時(shí)則說(shuō)明可進(jìn)行推薦。則將推薦的數(shù)據(jù)SEE賦值給label.caption。即可顯示。</p><p><b> 具體代碼如下:</b></p><p> procedure TFmain.Button2Click(Sender: TObject);</p>&
56、lt;p><b> var</b></p><p> F: TextFile;</p><p> S: string; //保存一行字符</p><p> SE:integer;//保存推薦網(wǎng)頁(yè)編號(hào)</p><p> SEE:string;//保存臨時(shí)推薦網(wǎng)頁(yè)編號(hào)</p><p>
57、 SS:string; //保存所有推薦</p><p> Slist:Tstringlist;//定義字符截取</p><p> i:integer;</p><p> //ii:integer;</p><p> alli:integer;</p><p> temp:integer;//</p&
58、gt;<p> inn:integer;</p><p> scount:integer;</p><p> msnint:array[0..1000] of integer;//定義數(shù)組,保存int型數(shù)據(jù)</p><p><b> begin</b></p><p><b> temp
59、:=0;</b></p><p><b> SEE:='';</b></p><p><b> SS:='';</b></p><p> AssignFile(F,'ID.txt'); //綁定文件到文件類型變量</p><p>
60、Reset(F);//打開(kāi)一個(gè)存在的文件,另Rewrite創(chuàng)建文件并打開(kāi)</p><p> while not eof(F) do begin</p><p> Readln(F,S);//讀取一行字符</p><p> //################################//字符串的截取</p><p> Slist
61、:=Tstringlist.Create;</p><p> slist.Delimiter:=' '; //設(shè)置分隔符</p><p> slist.DelimitedText:=S; //設(shè)置待分割的字符串</p><p> scount:=slist.Count-1;</p><p> for i:=
62、0 to slist.Count-2 do //列舉所有值,保存進(jìn)數(shù)組</p><p><b> begin</b></p><p> msnint[i]:=Strtoint(Slist[i]);</p><p><b> end;</b></p><p> SE:=Strtoint(Sl
63、ist[scount]);//取最后一個(gè)編號(hào)為推薦編號(hào)</p><p> //################################</p><p> i:=scount-1;</p><p> alli:=UALL.i-1;//取最大值</p><p> while msnint[i]=uall.msn[alli] do&
64、lt;/p><p><b> begin</b></p><p><b> i:=i-1;</b></p><p> alli:=alli-1;</p><p> if i=-1 then</p><p><b> begin</b></p&
65、gt;<p><b> temp:=1;</b></p><p> SEE:=inttostr(SE);</p><p><b> end;</b></p><p><b> end;</b></p><p><b> end;</b&g
66、t;</p><p> if temp=1 then</p><p><b> begin</b></p><p> inn:=strtoint(SEE);</p><p> case inn of</p><p> 1:SEE:='頭條';</p><
67、;p> 2:SEE:='新聞';</p><p> 3:SEE:='科技';</p><p> 4:SEE:='本地新聞';</p><p> 5:SEE:='輿論';</p><p> 6:SEE:='在線直播';</p><
68、p> 7:SEE:='音樂(lè)';</p><p> 8:SEE:='天氣';</p><p> 9:SEE:='MSN';</p><p> 10:SEE:='健康';</p><p> 11:SEE:='家居';</p><p&
69、gt; 12:SEE:='商業(yè)';</p><p> 13:SEE:='MSN體育';</p><p> 14:SEE:='體育';</p><p> 15:SEE:='概要';</p><p> 16:SEE:='BBS';</p>&l
70、t;p> 17:SEE:='旅行';</p><p><b> end;</b></p><p> Ltuijian.Caption:=inttostr(inn)+'.'+SEE;</p><p> ShowMessage('向您推薦:'+SEE);</p><p
71、><b> end;</b></p><p> if temp=0 then</p><p><b> begin</b></p><p> Ltuijian.Caption:='';</p><p> ShowMessage('由于進(jìn)入的網(wǎng)頁(yè)數(shù)不夠,還沒(méi)能向
72、您推薦網(wǎng)頁(yè)??!');</p><p><b> end;</b></p><p> CloseFile(F);</p><p><b> end;</b></p><p><b> 6.2人機(jī)接口</b></p><p> 1.用戶進(jìn)入
73、系統(tǒng)時(shí),首先顯示的為可以自動(dòng)跳轉(zhuǎn)的界面,介紹系統(tǒng)名與系統(tǒng)作者。這樣使系統(tǒng)更具有親和力。</p><p> 功能實(shí)現(xiàn)需要加入timer,gauge和 imag控件,導(dǎo)入圖片,使圖形更加美觀。并在timer控件中寫代碼,使之能夠自動(dòng)加載進(jìn)程條。代碼如下:</p><p> procedure TFlogin.Timer1Timer(Sender: TObject);</p>
74、<p><b> begin</b></p><p> Gauge1.Progress:=Gauge1.Progress+1;</p><p> if Gauge1.Progress=Gauge1.MaxValue then </p><p> //計(jì)時(shí)計(jì)的間隔時(shí)間10毫秒,maxvalue=100,1秒鐘后進(jìn)入登錄窗口<
75、;/p><p><b> begin</b></p><p> Fmain.Show;</p><p> Self.Hide;</p><p> Timer1.Enabled:=False;</p><p> //必須要停止計(jì)時(shí)計(jì),否則計(jì)時(shí)計(jì)會(huì)一直運(yùn)行,結(jié)果是每過(guò)一分鐘就會(huì)彈出登錄窗口<
76、;/p><p><b> end;</b></p><p><b> end;</b></p><p><b> end.</b></p><p> 最終界面如圖9顯示:</p><p><b> 圖9 登錄界面</b><
77、;/p><p> 2.進(jìn)入到主界面,加入imag控件,導(dǎo)入圖片,使圖形更加美觀。添加BitBtn控件,設(shè)置其caption屬性為“退出”,使之為退出按鈕,并導(dǎo)入圖片,使控件更加美觀。當(dāng)用戶點(diǎn)擊時(shí)控件時(shí),則退出系統(tǒng)。為了實(shí)現(xiàn)系統(tǒng)自動(dòng)推薦,則在fmain中的onshow事件中寫入推薦代碼。同時(shí)為了使界面更加富有美感,加入了XPManifest控件。最終界面如圖10顯示,程序代碼如下:</p><p&
78、gt; 1)BitBtn中退出程序代碼:</p><p> procedure TFmain.BitBtn1Click(Sender: TObject);</p><p><b> begin</b></p><p> application.Terminate;</p><p><b> end;&
79、lt;/b></p><p> 2)Onshow事件中寫入推薦代碼:</p><p> procedure TFmain.FormShow(Sender: TObject);</p><p><b> var</b></p><p> F: TextFile;</p><p> S
80、: string; //保存一行字符</p><p> SE:integer;//保存推薦網(wǎng)頁(yè)編號(hào)</p><p> SEE:string;//保存臨時(shí)推薦網(wǎng)頁(yè)編號(hào)</p><p> SS:string; //保存所有推薦</p><p> Slist:Tstringlist;//定義字符截取</p><p>
81、 i:integer;</p><p> //ii:integer;</p><p> alli:integer;</p><p> temp:integer;//</p><p> inn:integer;</p><p> scount:integer;</p><p> ms
82、nint:array[0..1000] of integer;//定義數(shù)組,保存int型數(shù)據(jù)</p><p><b> begin</b></p><p><b> temp:=0;</b></p><p><b> SEE:='';</b></p><p&g
83、t;<b> SS:='';</b></p><p> AssignFile(F,'ID.txt'); //綁定文件到文件類型變量</p><p> Reset(F);//打開(kāi)一個(gè)存在的文件,另Rewrite創(chuàng)建文件并打開(kāi)</p><p> while not eof(F) do begin</p&
84、gt;<p> Readln(F,S);//讀取一行字符</p><p> //Length(S);</p><p> // SS:=LeftStr(S,Length(S)-1);</p><p> //從Str字符串變量的中第1個(gè)字符開(kāi)始取長(zhǎng)度為S長(zhǎng)度個(gè)字符-1的字符串;</p><p> //SE:=RightSt
85、r(S,1);//取最后一個(gè)字符</p><p> // ShowMessage(SS);</p><p> //################################//字符串的截取</p><p> Slist:=Tstringlist.Create;</p><p> slist.Delimiter:='
86、39;; //設(shè)置分隔符</p><p> slist.DelimitedText:=S; //設(shè)置待分割的字符串</p><p> scount:=slist.Count-1;</p><p> for i:=0 to slist.Count-2 do //列舉所有值,保存進(jìn)數(shù)組</p><p><b> b
87、egin</b></p><p> msnint[i]:=Strtoint(Slist[i]);</p><p> //showmessage('這個(gè)數(shù)'+inttostr(msnint[i]));</p><p><b> end;</b></p><p> SE:=Strtoint
88、(Slist[scount]);//取最后一個(gè)編號(hào)為推薦編號(hào)</p><p> //showmessage('這個(gè)數(shù)'+inttostr(SE));</p><p> //################################</p><p> i:=scount-1;</p><p> alli:=UALL
89、.i-1;//取最大值</p><p><b> //ii:=0;</b></p><p> //while alli<=uall.i do</p><p><b> // begin</b></p><p> while msnint[i]=uall.msn[alli] do<
90、/p><p><b> begin</b></p><p><b> i:=i-1;</b></p><p> alli:=alli-1;</p><p> if i=-1 then</p><p><b> begin</b></p>
91、<p><b> temp:=1;</b></p><p> SEE:=inttostr(SE);//+' '+SEE;</p><p><b> end;</b></p><p><b> end;</b></p><p><b&g
92、t; end;</b></p><p> if temp=1 then</p><p><b> begin</b></p><p> inn:=strtoint(SEE);</p><p> case inn of</p><p> 1:SEE:='頭條'
93、;</p><p> 2:SEE:='新聞';</p><p> 3:SEE:='科技';</p><p> 4:SEE:='本地新聞';</p><p> 5:SEE:='輿論';</p><p> 6:SEE:='在線直播';
94、</p><p> 7:SEE:='音樂(lè)';</p><p> 8:SEE:='天氣';</p><p> 9:SEE:='MSN';</p><p> 10:SEE:='健康';</p><p> 11:SEE:='家居';&l
95、t;/p><p> 12:SEE:='商業(yè)';</p><p> 13:SEE:='MSN體育';</p><p> 14:SEE:='體育';</p><p> 15:SEE:='概要';</p><p> 16:SEE:='BBS'
96、;;</p><p> 17:SEE:='旅行';</p><p><b> end;</b></p><p> Ltuijian.Caption:=inttostr(inn)+'.'+SEE;</p><p> //ShowMessage('向您推薦:'+SEE)
97、;</p><p> //SEE:='';</p><p><b> end;</b></p><p> if temp=0 then</p><p><b> begin</b></p><p> Ltuijian.Caption:='
98、39;;</p><p><b> end;</b></p><p> CloseFile(F);</p><p><b> end;</b></p><p><b> 圖10 主界面</b></p><p> 3.點(diǎn)擊網(wǎng)頁(yè)label,進(jìn)入到網(wǎng)
99、頁(yè)頁(yè)面。功能實(shí)現(xiàn)加入imag控件,導(dǎo)入圖片,使圖形更加美觀。同時(shí)鍵入lanbel,更改caption屬性,描述客戶所進(jìn)入的網(wǎng)頁(yè)的頁(yè)面。并添加button控件,caption屬性改為“退出”,當(dāng)用戶點(diǎn)擊時(shí)使界面返回主界面。最終界面如圖11,代碼如下:</p><p> procedure TFmisc.Button3Click(Sender: TObject);</p><p><b
100、> begin</b></p><p><b> close;</b></p><p> fmain.show;</p><p><b> end;</b></p><p><b> end.</b></p><p><
101、b> 圖11 單個(gè)網(wǎng)頁(yè)</b></p><p><b> 6.3軟件測(cè)試</b></p><p> 1.打開(kāi)軟件,進(jìn)入加載界面如圖12:</p><p><b> 圖12 加載界面</b></p><p> 2.進(jìn)入主界面,點(diǎn)擊,13號(hào)MSN體育,訪問(wèn)網(wǎng)頁(yè)MSN體育,如圖
102、13,圖14所示:</p><p> 圖13 選擇進(jìn)入網(wǎng)頁(yè)</p><p><b> 圖14網(wǎng)頁(yè)顯示</b></p><p> 3.點(diǎn)擊,7號(hào)網(wǎng)頁(yè)音樂(lè),訪問(wèn)網(wǎng)頁(yè)音樂(lè),如圖15,圖16所示:</p><p><b> 圖15 進(jìn)入網(wǎng)頁(yè)</b></p><p><b
103、> 圖16網(wǎng)頁(yè)顯示</b></p><p> 4.退出音樂(lè)網(wǎng)頁(yè)后,系統(tǒng)自動(dòng)推薦13號(hào)網(wǎng)頁(yè)MSN體育,如圖17:</p><p> 圖17 顯示推薦網(wǎng)頁(yè)</p><p> 5.點(diǎn)擊推薦按鈕,系統(tǒng)跳出彈框,顯示推薦網(wǎng)頁(yè),如圖18</p><p><b> 圖18按鈕推薦網(wǎng)頁(yè)</b></p&g
104、t;<p> 6.再次點(diǎn)7號(hào),選擇音樂(lè),進(jìn)入音樂(lè)網(wǎng)頁(yè)如圖19所示:</p><p><b> 圖19進(jìn)入音樂(lè)網(wǎng)頁(yè)</b></p><p> 7.退出網(wǎng)頁(yè),進(jìn)入主界面,系統(tǒng)無(wú)法找到匹配序列,則自動(dòng)清空推薦網(wǎng)頁(yè),如圖20:</p><p><b> 圖20推薦自動(dòng)清空</b></p><
105、;p> 8.點(diǎn)擊推薦按鈕,給出提示,說(shuō)明系統(tǒng)未能找到匹配的推薦網(wǎng)頁(yè),如圖21所示:</p><p><b> 圖21按鈕推薦提醒</b></p><p> 9.在主界面點(diǎn)擊退出,則退出系統(tǒng),如圖22所示:</p><p><b> 圖22退出系統(tǒng)</b></p><p> 10.經(jīng)過(guò)
106、以上測(cè)試,軟件能夠正常運(yùn)行。但是,在網(wǎng)頁(yè)的設(shè)計(jì)方面還不夠完美,不夠貼近于實(shí)際,有待改善。在操作舒適度方面稍好,符合系統(tǒng)的基本要求。整體來(lái)看,本系統(tǒng)功能和設(shè)計(jì)還是比較完善的。</p><p><b> 結(jié)論</b></p><p> 本次基于msnbc數(shù)據(jù)的網(wǎng)頁(yè)序列分析系統(tǒng)的設(shè)計(jì)過(guò)程主要有三大部分。第一是數(shù)據(jù)預(yù)處理部分,首先要分析序列分析所需要的數(shù)據(jù)類型,將給定的原
107、始數(shù)據(jù)處理成Clementine支持的數(shù)據(jù)格式,剔除不起作用的數(shù)據(jù)記錄,減少數(shù)據(jù)量,還要降低數(shù)據(jù)的冗余,序列分析分析的是先后順序,與點(diǎn)擊網(wǎng)頁(yè)的次數(shù)無(wú)關(guān),可以將點(diǎn)擊多次的相同網(wǎng)頁(yè)減為一次,最終將數(shù)據(jù)處理成了三列,這三列的含義分別是用戶號(hào),點(diǎn)擊網(wǎng)頁(yè)號(hào),點(diǎn)擊網(wǎng)頁(yè)的次序號(hào);第二是利用Clementine來(lái)分析處理好的數(shù)據(jù),現(xiàn)構(gòu)建好數(shù)據(jù)流,選擇可變文件節(jié)點(diǎn),導(dǎo)入文件,設(shè)置好相應(yīng)的設(shè)置,在使用“序列”節(jié)點(diǎn),連接可變文件,進(jìn)行相應(yīng)的設(shè)置,執(zhí)行便可得出
108、相應(yīng)的結(jié)果,然后將結(jié)果導(dǎo)出備用;第三是設(shè)計(jì)推送系統(tǒng)部分,此部分使用delphi開(kāi)發(fā)工具進(jìn)行開(kāi)發(fā)。主要工作又包括兩部分,一是模型接口的設(shè)計(jì),二是人機(jī)接口的設(shè)計(jì)。做好相應(yīng)的窗體,能將Clementine分析得出的結(jié)果導(dǎo)入,根據(jù)結(jié)果進(jìn)行比對(duì)分析,通過(guò)推送系統(tǒng)直接就可以得出相應(yīng)的結(jié)果。這就是最終所做出的基于msnbc數(shù)據(jù)的網(wǎng)頁(yè)序列分析系統(tǒng)。</p><p><b> 參考文獻(xiàn)</b></p&
109、gt;<p> [1]毛國(guó)軍,段立娟. 數(shù)據(jù)挖掘原理與算法[M]. 北京:清華大學(xué)出版社,2012</p><p> [2]王 婧,梁興柱. C++程序設(shè)計(jì)[M]. 北京:電子工業(yè)出版社,2009 </p><p> [3]張世明. Delphi程序設(shè)計(jì)基礎(chǔ). 北京:人民郵電出版社,2008</p><p> [4]薛薇,陳歡歌.Clemen
110、tine 數(shù)據(jù)挖掘方法及應(yīng)用.北京:電子工業(yè)出版社, 2010.9: ISBN978-7-121-11778-7.</p><p><b> 結(jié)束語(yǔ)</b></p><p> 這次課程設(shè)計(jì),運(yùn)用了多學(xué)科的知識(shí),真可謂是大學(xué)學(xué)習(xí)的知識(shí)的綜合運(yùn)用。首先要對(duì)任務(wù)進(jìn)行分析,先要處理好數(shù)據(jù),這個(gè)過(guò)程可以運(yùn)用各種工具和方法,只要能將數(shù)據(jù)處理成所需的結(jié)構(gòu)即可。我們這次所選取c+
111、+來(lái)處理,通過(guò)編程將原始數(shù)據(jù)導(dǎo)入,在進(jìn)行相應(yīng)處理,導(dǎo)出結(jié)果。這個(gè)過(guò)程要對(duì)c++文件導(dǎo)入導(dǎo)出的語(yǔ)法很熟悉才行,同時(shí)還要了解數(shù)組函數(shù)等基本知識(shí),部分函數(shù)可以在網(wǎng)上收索得到,靈活運(yùn)用即可。然后就需要使用到數(shù)據(jù)處理的工具,選用Clementine來(lái)處理數(shù)據(jù),選用的方法是關(guān)聯(lián)規(guī)則的序列關(guān)聯(lián)分析。這個(gè)部分的處理需要對(duì)Clementine的各個(gè)控件很熟悉,要掌握序列關(guān)聯(lián)分析的理論知識(shí),最后要對(duì)分析出的結(jié)果進(jìn)行合理性分析,結(jié)合實(shí)際,判斷自己得出的結(jié)論是
112、否有應(yīng)用性。最后,就是將所得出的分析結(jié)果很好的展示給用戶。我們是設(shè)計(jì)一個(gè)網(wǎng)頁(yè)推薦系統(tǒng),采用的工具是delphi,可視化窗口程序設(shè)計(jì)。這部分要能熟練使用delphi開(kāi)發(fā)工具,合理設(shè)計(jì)窗體,處理好模型接口,能很好的導(dǎo)入結(jié)果數(shù)據(jù),還要處理好人機(jī)交互接口,讓用戶能簡(jiǎn)單方便的操作,界面要注意美觀簡(jiǎn)約。</p><p> 以上就是我們整個(gè)設(shè)計(jì)過(guò)程中需要注意的東西。最后在總結(jié)一下我們這次設(shè)計(jì)中所用到的全部知識(shí)。C++預(yù)處理數(shù)
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 網(wǎng)頁(yè)課程設(shè)計(jì)報(bào)告
- 網(wǎng)頁(yè)設(shè)計(jì)課程設(shè)計(jì)報(bào)告
- 網(wǎng)頁(yè)設(shè)計(jì)與制作課程設(shè)計(jì)---醫(yī)藥超市系統(tǒng)
- 網(wǎng)頁(yè)課程設(shè)計(jì)--售后服務(wù)管理系統(tǒng)
- 網(wǎng)頁(yè)課程設(shè)計(jì)--售后服務(wù)管理系統(tǒng)
- web網(wǎng)頁(yè)設(shè)計(jì)課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)(論文)-基于matlab產(chǎn)生m序列
- 動(dòng)態(tài)網(wǎng)頁(yè)課程設(shè)計(jì)
- 網(wǎng)頁(yè)制作課程設(shè)計(jì)報(bào)告
- 《個(gè)人網(wǎng)頁(yè)設(shè)計(jì)》課程設(shè)計(jì)報(bào)告
- 網(wǎng)頁(yè)課程設(shè)計(jì)--售后服務(wù)管理系統(tǒng).doc
- 時(shí)間序列課程設(shè)計(jì)
- 網(wǎng)頁(yè)設(shè)計(jì)與制作課程設(shè)計(jì)圖書(shū)在線系統(tǒng)
- 網(wǎng)頁(yè)制作課程設(shè)計(jì)報(bào)告總結(jié)
- jsp課程設(shè)計(jì)《動(dòng)態(tài)網(wǎng)頁(yè)設(shè)計(jì)》
- 網(wǎng)頁(yè)編程課程設(shè)計(jì)評(píng)分表
- 《網(wǎng)站設(shè)計(jì)與網(wǎng)頁(yè)制》課程設(shè)計(jì)
- flash網(wǎng)頁(yè)多媒體課程設(shè)計(jì)
- 《網(wǎng)站設(shè)計(jì)與網(wǎng)頁(yè)制作》課程設(shè)計(jì)
- 財(cái)務(wù)分析課程設(shè)計(jì)論文
評(píng)論
0/150
提交評(píng)論