網(wǎng)頁序列分析系統(tǒng)課程設(shè)計論文_第1頁
已閱讀1頁,還剩32頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  目錄</b></p><p><b>  第一章 緒論1</b></p><p>  第二章 數(shù)據(jù)基本分析2</p><p><b>  2.1數(shù)據(jù)說明2</b></p><p><b>  2.2質(zhì)量分析2</b>&

2、lt;/p><p>  2.3 基本描述分析2</p><p>  第三章 數(shù)據(jù)預處理4</p><p>  3.1 數(shù)據(jù)處理過程4</p><p>  3.2 數(shù)據(jù)預處理方法4</p><p>  3.3 數(shù)據(jù)預處理結(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>  第六章 應用系統(tǒng)設(shè)計16</p><p>  6.1模型接口16</p><p

4、>  6.2人機接口19</p><p>  6.3軟件測試24</p><p><b>  結(jié)論30</b></p><p><b>  參考文獻31</b></p><p><b>  結(jié)束語32</b></p><p><b&

5、gt;  第一章 緒論</b></p><p>  由于網(wǎng)站的結(jié)構(gòu)設(shè)計,對特定用戶而言信息獲取的代價與所經(jīng)過的瀏覽路徑長度成正比,這些位于路徑中間的不必要的文檔就無疑增加了用戶獲取信息的代價。本文利用Clementine數(shù)據(jù)挖掘的方法和技術(shù)對用戶所訪問的頁面序列進行挖掘,構(gòu)建網(wǎng)頁推薦的模型,實現(xiàn)對當前站點排序方式的優(yōu)化,從而最大限度地優(yōu)化用戶訪問體驗,提高當前站點信息獲取的整體效率。</p>

6、;<p>  [關(guān)鍵詞] 網(wǎng)頁推薦;Clememtine數(shù)據(jù)挖掘;訪問序列 </p><p>  傳統(tǒng)的Web網(wǎng)站以系統(tǒng)自身為中心,為了容納大量的信息,以圖結(jié)構(gòu)組織網(wǎng)站,頁面之間存在著比較復雜的層次關(guān)系。這些預先設(shè)計好的瀏覽路徑(網(wǎng)站的結(jié)構(gòu))嚴格按照設(shè)計者編輯好的層次返回頁面,因此,為了獲取特定的信息,從同一頁面出發(fā)的所有用戶都不得不重復地經(jīng)過很多與自己毫無關(guān)系的、不希望看到的中間鏈接頁面,使得用戶

7、為了獲取少量的信息付出較大的代價。如果在確保網(wǎng)頁內(nèi)容的前提下,實現(xiàn)網(wǎng)站物理結(jié)構(gòu)的調(diào)整和再組織,就可以避免混亂。站點路徑優(yōu)化實際上就是站點管理者優(yōu)化其站點結(jié)構(gòu),它的出現(xiàn)就是為了提高用戶的訪問效率以及用戶對站點的忠誠度?!?lt;/p><p>  第二章 數(shù)據(jù)基本分析</p><p><b>  2.1數(shù)據(jù)說明</b></p><p>  本數(shù)據(jù)來自網(wǎng)

8、絡(luò)信息服務(IIS)網(wǎng)站msnbc.com和msn.com1999年9月28日全天日志記錄,每行連續(xù)數(shù)據(jù)表示單個用戶24小時內(nèi)瀏覽網(wǎng)頁的記錄,連續(xù)數(shù)據(jù)中的數(shù)字表示用戶對相應網(wǎng)頁的瀏覽請求,該訪問請求不會被記錄成詳細的記錄,即具體的網(wǎng)址,而只是單單記錄了網(wǎng)頁類型。這些網(wǎng)頁類型分別是 "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"。通過超高速緩沖器(寄存器)每個網(wǎng)頁的服務請求不會被記錄到服務日志,因此,它不會體現(xiàn)在數(shù)據(jù)中。</p><p><b>  2.2質(zhì)量分析</b></p><p>  此次分析的數(shù)據(jù)總共有989818,平均每個用戶點擊網(wǎng)頁的次

11、數(shù)是5.7次,每個不同類型的網(wǎng)頁有10到5000個不同的URL(網(wǎng)頁地址)。從數(shù)據(jù)的質(zhì)量上看,這是一個較大的數(shù)據(jù)集,數(shù)據(jù)的量足夠大,可以用于數(shù)據(jù)的挖掘分析,且數(shù)據(jù)來源于Internet Information Server (IIS),有足夠可信度。用戶平均點擊網(wǎng)頁的數(shù)據(jù)也有5.7次,適合用于分析點擊網(wǎng)頁序列,每種類型的網(wǎng)頁也有足夠多的不同網(wǎng)址,符合客觀要求。因此從數(shù)據(jù)質(zhì)量上看,所選取的數(shù)據(jù)有分析的必要。</p><

12、p>  2.3 基本描述分析</p><p><b>  截取部分數(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>  每一行代表一個用戶所點擊的網(wǎng)頁,此次選取的數(shù)據(jù)之中一共有17個不同類型的網(wǎng)頁,分別是:frontpage news tech local opinion on-air misc weather msn-news health living business msn-sports sports summary bbs travel</p><p>  為了方便處理,將以上各個網(wǎng)頁進行編號,分別為

16、1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17。一第三行數(shù)據(jù)為例對單個用戶的數(shù)據(jù)進行說明。用戶3第一次點擊3號網(wǎng)頁,第二次點擊2號網(wǎng)頁,第三次點擊2號網(wǎng)頁,第四次點擊4號網(wǎng)頁等一次類推下去。每一行都是一個用戶的記錄</p><p><b>  第三章 數(shù)據(jù)預處理</b></p><p>  3.1 數(shù)據(jù)處理過程</p>

17、<p>  此次任務是設(shè)計基于網(wǎng)頁點擊次序來推送下一次可能點擊的網(wǎng)頁。選取的方法是Clementine 的序列關(guān)聯(lián),所以要將數(shù)據(jù)處理成Clementine可讀取的格式,并且要刪減不必要的數(shù)據(jù),改寫數(shù)據(jù)的格式,這樣才能達到分析處理的要求。</p><p>  結(jié)合mnsbc.com提供的數(shù)據(jù)具體分析:每行數(shù)據(jù)是一個用戶的信息記錄,表示的含義是第n號用戶點擊了哪個網(wǎng)頁,是第幾次點擊的。</p>

18、<p>  舉出部分數(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>  因為此次任務是進行序列關(guān)聯(lián)分析,所以用戶只進行了一次點擊情況的記錄可

21、以直接刪除,比如樣例中2,4,5,6,8號用戶。又因為最終要進行的操作是推送下一個可能點擊的網(wǎng)頁,如果用戶只是在不斷的點擊同一個網(wǎng)頁,這樣的記錄也無法分析可推送的網(wǎng)頁,故也要剔去,如樣例中1號用戶。還有一種情況就是在多次點擊過程中有重復點擊的網(wǎng)頁,這樣的情況只需選取一次即可,因為我們所關(guān)系的是網(wǎng)頁點擊的次序而不是次數(shù),現(xiàn)對樣例中9號用戶的數(shù)據(jù)進行分析,用戶9第一次點擊6號網(wǎng)頁,第二次點擊7號網(wǎng)頁,第三次點擊6號網(wǎng)頁,第四次點擊8號網(wǎng)頁。

22、</p><p>  根據(jù)以上的要求,可將數(shù)據(jù)處理成三列,分別表示用戶號,用戶點擊的網(wǎng)頁號,此次點擊的次序號。將處理好的數(shù)據(jù)保存在文件中等待處理即可。</p><p>  3.2 數(shù)據(jù)預處理方法</p><p>  根據(jù)數(shù)據(jù)處理過程,決定運用microsoft visual c++軟件,進行編程處理,程序分析過程如下:</p><p>  1

23、.先取數(shù)據(jù)文本中一行數(shù)據(jù)賦值給數(shù)組msn</p><p>  2.將msn數(shù)組按照空格分隔符分割,并將分割后數(shù)據(jù)轉(zhuǎn)換為整型,賦值給msn1數(shù)組。</p><p>  3.對msn1數(shù)組中數(shù)據(jù)進行前后比較,如若相等,則將前一個賦值為0</p><p>  4.將數(shù)組msn1中數(shù)據(jù)進行判斷,大于0,則將數(shù)據(jù)賦值給數(shù)組msn2。</p><p> 

24、 5.將數(shù)組msn2中數(shù)據(jù)個數(shù)大于1的,按形式為三列,分別是用戶號,用戶點擊的網(wǎng)頁號,點擊網(wǎng)頁的次序號的格式寫入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<<"正在處理,請稍等.....";</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];//保存無重復數(shù)據(jù)數(shù)組</p><p>  fstream out;</p><p>  ofstream in;//定義文本輸入輸出流</p><p>  out.open("msnbc990928.seq",ios::in);//打開文本數(shù)據(jù)</p&

28、gt;<p>  in.open("e.txt",ios::trunc); //ios::trunc表示在打開文件前將文件清空,由于是寫入,文件不存在則創(chuàng)建</p><p>  while(!out.eof())</p><p><b>  { </b></p><p>  out.getline(msn,

29、100000,'\n');//getline(char *,int,char) 表示該行字符達到100個或遇到換行就結(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]) //判斷是否重復,重復則將前一值賦值為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ù)字個數(shù)</p><p>  if(aa>1)//將一行的個數(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ù)預處理結(jié)果</p><p>  數(shù)據(jù)處理好之后,形式為三列,分別是用戶號,用戶點擊的網(wǎng)頁號,點擊網(wǎng)頁的次序號。</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>  開頭是加上的字段名。表達的含義是一號用戶第一到第五次分別點擊3,2

40、,4,2,3號網(wǎng)頁。這個數(shù)據(jù)就可以用Clementine進行處理分析了。</p><p>  第四章 數(shù)據(jù)模型構(gòu)建</p><p>  4.1 數(shù)據(jù)流的構(gòu)建</p><p>  打開Clementine軟件,在源選項卡中選擇“可變文件”節(jié)點,單擊編輯,進行如下設(shè)置:在文件設(shè)置中,導入處理好的數(shù)據(jù),勾選“讀取文件中的字段名”,在定“界符中”選項框中勾選“逗號”,“新行

41、”;在類型設(shè)置中,將ID字段設(shè)為無類型,CONTENT設(shè)為集,TIME設(shè)為范圍。</p><p><b>  設(shè)置過程截圖如下:</b></p><p><b>  圖1 導入數(shù)據(jù)</b></p><p><b>  圖2 數(shù)據(jù)類型設(shè)置</b></p><p>  再點擊選取表

42、節(jié)點,連接可變文件,執(zhí)行,觀察數(shù)據(jù)是否正確導入了。然后在數(shù)學建模選項卡中選擇“序列”節(jié)點,連接可變文件,點擊編輯,進行如下設(shè)置:在字段設(shè)置中,將ID字段設(shè)置為ID,勾選“設(shè)置時間字段”,選擇TIME,內(nèi)容字段中選擇CONTENT。在模型設(shè)置中,設(shè)置合適的最小規(guī)則支持度,最小規(guī)則置信度,最大序列大小,要添加到流的預測。</p><p><b>  設(shè)置過程截圖如下:</b></p>

43、<p>  圖3 序列分析字段設(shè)置</p><p>  圖4 序列分析模型參數(shù)設(shè)置</p><p>  以上過程設(shè)置好后,對“序列”字段點擊執(zhí)行,產(chǎn)生結(jié)果。</p><p>  數(shù)據(jù)流的構(gòu)建過程截圖如下:</p><p><b>  圖5 數(shù)據(jù)流構(gòu)建</b></p><p>  第五

44、章 模型結(jié)果分析</p><p>  5.1結(jié)果的分析處理</p><p>  首先在“序列”節(jié)點的模型設(shè)置中設(shè)置好合適的最小支持度,最小置信度?,F(xiàn)在將最小支持度設(shè)置為3%,,最小置信度設(shè)置為60%,取其結(jié)果進行相應的分析。結(jié)果如下:</p><p><b>  圖6 測試模型結(jié)果</b></p><p>  將最小支持

45、度設(shè)置為3%,最小置信度設(shè)置為60%是為了剔除最小支持度小于3%,最小置信度小于60%的結(jié)果。以第一條結(jié)果為例進行說明:前項為4,7,后項為4,表示點擊了4號網(wǎng)頁,再點7號網(wǎng)頁,可推送出4號網(wǎng)頁。因為記錄一共有989818,此條結(jié)果支持度為4.47%,故先點擊4號網(wǎng)頁,再點擊7號網(wǎng)頁的記錄一共有約40000多條,點擊了4號和7號網(wǎng)頁后,在點擊4號的可能性為72.26%,即為其置信度。其他條記錄可依此類推。</p><

46、p>  5.2 結(jié)果合理性分析</p><p>  以上選取的最小支持度設(shè)置為3%,最小置信度設(shè)置為60%,那么根據(jù)這個設(shè)置可以看出,只有重復出現(xiàn)30000次左右的結(jié)果才會被保留下來,這樣會導致很多條結(jié)果被剔除,所得出的結(jié)論很少,不利于分析推送。所以最小支持度應該設(shè)置的更小一定,使結(jié)果更加有合理性。</p><p>  重新設(shè)置相關(guān)參數(shù),最小支持度設(shè)置為0.5%,最小置信度設(shè)置為60

47、%,則前項必須出現(xiàn)的次數(shù)達到5000次左右結(jié)果才會被保留。結(jié)果如下:</p><p><b>  圖7 修正模型結(jié)果</b></p><p><b>  圖8 模型結(jié)果匯總</b></p><p>  從結(jié)果匯總中可以看出,將最小支持度設(shè)置為0.5%,最小置信度設(shè)置為60%時,規(guī)則數(shù)一共有161條,有效的事務數(shù)有38353

48、4條。其中最小的支持度為0.633%,最大支持度為88.35%。最小置信度為60.056%,最大置信度為83.84%。從有效事務數(shù),規(guī)則條數(shù)上看,這個結(jié)果還是很合理的。置信度也在60%以上,有一定可信度。故可以選擇這個分析結(jié)果。最后將此結(jié)果導出,保留給推薦系統(tǒng)備用。</p><p>  第六章 應用系統(tǒng)設(shè)計</p><p><b>  6.1模型接口</b></

49、p><p>  經(jīng)討論分析我們決定,運用delphi7.0軟件實現(xiàn)對本系統(tǒng)的應用設(shè)計。具體分析實現(xiàn)步驟如下:</p><p>  1.用戶操作網(wǎng)頁編號記錄的實現(xiàn)。定義全局數(shù)組msn,用于記錄用戶所進入網(wǎng)頁的的編號,代碼如下:</p><p>  unit Uall;</p><p><b>  interface</b>&l

50、t;/p><p>  var msn:array[0..1000] of integer;//定義數(shù)組,保存訪問數(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個窗口作為網(wǎng)頁,并新建一個主窗口Fmain,在Fmain中拉入label,當用戶點擊相應的label時,進入相應的網(wǎng)頁,并將網(wǎng)頁的編號記錄到數(shù)據(jù)Uall.msn數(shù)組中

52、,并將數(shù)組下標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)頁推薦實現(xiàn)。在Fmain中拉入一個button,當用戶點擊此button時,系統(tǒng)進行推薦,在此中寫入代碼,具體分析步驟如下:</p><

54、;p>  1)取分析后文本數(shù)據(jù)中一行,并將一行數(shù)據(jù)進行分割,取最后一個編號為推薦編號轉(zhuǎn)換為Int型,賦值給整型變量SE。將數(shù)據(jù)逐個轉(zhuǎn)換為int型,賦值給msnint數(shù)組,數(shù)據(jù)最后一個編號不寫如數(shù)組。</p><p>  2)將msnint數(shù)組中數(shù)據(jù)從結(jié)尾開始逐個與用戶操作序列數(shù)組結(jié)尾開始進行比較。用戶操作序列數(shù)組Uall.msn與msnint中匹配時,將SE值轉(zhuǎn)換為string型賦值給SEE,并將temp值

55、賦值為1。</p><p>  3)對temp進行判斷,temp為1時則說明可進行推薦。則將推薦的數(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)頁編號</p><p>  SEE:string;//保存臨時推薦網(wǎng)頁編號</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);//打開一個存在的文件,另Rewrite創(chuàng)建文件并打開</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 //列舉所有值,保存進數(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]);//取最后一個編號為推薦編號</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:='音樂';</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('由于進入的網(wǎng)頁數(shù)不夠,還沒能向

72、您推薦網(wǎng)頁??!');</p><p><b>  end;</b></p><p>  CloseFile(F);</p><p><b>  end;</b></p><p><b>  6.2人機接口</b></p><p>  1.用戶進入

73、系統(tǒng)時,首先顯示的為可以自動跳轉(zhuǎn)的界面,介紹系統(tǒng)名與系統(tǒng)作者。這樣使系統(tǒng)更具有親和力。</p><p>  功能實現(xiàn)需要加入timer,gauge和 imag控件,導入圖片,使圖形更加美觀。并在timer控件中寫代碼,使之能夠自動加載進程條。代碼如下:</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>  //計時計的間隔時間10毫秒,maxvalue=100,1秒鐘后進入登錄窗口<

75、;/p><p><b>  begin</b></p><p>  Fmain.Show;</p><p>  Self.Hide;</p><p>  Timer1.Enabled:=False;</p><p>  //必須要停止計時計,否則計時計會一直運行,結(jié)果是每過一分鐘就會彈出登錄窗口<

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.進入到主界面,加入imag控件,導入圖片,使圖形更加美觀。添加BitBtn控件,設(shè)置其caption屬性為“退出”,使之為退出按鈕,并導入圖片,使控件更加美觀。當用戶點擊時控件時,則退出系統(tǒng)。為了實現(xiàn)系統(tǒng)自動推薦,則在fmain中的onshow事件中寫入推薦代碼。同時為了使界面更加富有美感,加入了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)頁編號</p><p>  SEE:string;//保存臨時推薦網(wǎng)頁編號</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);//打開一個存在的文件,另Rewrite創(chuàng)建文件并打開</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個字符開始取長度為S長度個字符-1的字符串;</p><p>  //SE:=RightSt

85、r(S,1);//取最后一個字符</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 //列舉所有值,保存進數(shù)組</p><p><b>  b

87、egin</b></p><p>  msnint[i]:=Strtoint(Slist[i]);</p><p>  //showmessage('這個數(shù)'+inttostr(msnint[i]));</p><p><b>  end;</b></p><p>  SE:=Strtoint

88、(Slist[scount]);//取最后一個編號為推薦編號</p><p>  //showmessage('這個數(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:='音樂';</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.點擊網(wǎng)頁label,進入到網(wǎng)

99、頁頁面。功能實現(xiàn)加入imag控件,導入圖片,使圖形更加美觀。同時鍵入lanbel,更改caption屬性,描述客戶所進入的網(wǎng)頁的頁面。并添加button控件,caption屬性改為“退出”,當用戶點擊時使界面返回主界面。最終界面如圖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 單個網(wǎng)頁</b></p><p><b>  6.3軟件測試</b></p><p>  1.打開軟件,進入加載界面如圖12:</p><p><b>  圖12 加載界面</b></p><p>  2.進入主界面,點擊,13號MSN體育,訪問網(wǎng)頁MSN體育,如圖

102、13,圖14所示:</p><p>  圖13 選擇進入網(wǎng)頁</p><p><b>  圖14網(wǎng)頁顯示</b></p><p>  3.點擊,7號網(wǎng)頁音樂,訪問網(wǎng)頁音樂,如圖15,圖16所示:</p><p><b>  圖15 進入網(wǎng)頁</b></p><p><b

103、>  圖16網(wǎng)頁顯示</b></p><p>  4.退出音樂網(wǎng)頁后,系統(tǒng)自動推薦13號網(wǎng)頁MSN體育,如圖17:</p><p>  圖17 顯示推薦網(wǎng)頁</p><p>  5.點擊推薦按鈕,系統(tǒng)跳出彈框,顯示推薦網(wǎng)頁,如圖18</p><p><b>  圖18按鈕推薦網(wǎng)頁</b></p&g

104、t;<p>  6.再次點7號,選擇音樂,進入音樂網(wǎng)頁如圖19所示:</p><p><b>  圖19進入音樂網(wǎng)頁</b></p><p>  7.退出網(wǎng)頁,進入主界面,系統(tǒng)無法找到匹配序列,則自動清空推薦網(wǎng)頁,如圖20:</p><p><b>  圖20推薦自動清空</b></p><

105、;p>  8.點擊推薦按鈕,給出提示,說明系統(tǒng)未能找到匹配的推薦網(wǎng)頁,如圖21所示:</p><p><b>  圖21按鈕推薦提醒</b></p><p>  9.在主界面點擊退出,則退出系統(tǒng),如圖22所示:</p><p><b>  圖22退出系統(tǒng)</b></p><p>  10.經(jīng)過

106、以上測試,軟件能夠正常運行。但是,在網(wǎng)頁的設(shè)計方面還不夠完美,不夠貼近于實際,有待改善。在操作舒適度方面稍好,符合系統(tǒng)的基本要求。整體來看,本系統(tǒng)功能和設(shè)計還是比較完善的。</p><p><b>  結(jié)論</b></p><p>  本次基于msnbc數(shù)據(jù)的網(wǎng)頁序列分析系統(tǒng)的設(shè)計過程主要有三大部分。第一是數(shù)據(jù)預處理部分,首先要分析序列分析所需要的數(shù)據(jù)類型,將給定的原

107、始數(shù)據(jù)處理成Clementine支持的數(shù)據(jù)格式,剔除不起作用的數(shù)據(jù)記錄,減少數(shù)據(jù)量,還要降低數(shù)據(jù)的冗余,序列分析分析的是先后順序,與點擊網(wǎng)頁的次數(shù)無關(guān),可以將點擊多次的相同網(wǎng)頁減為一次,最終將數(shù)據(jù)處理成了三列,這三列的含義分別是用戶號,點擊網(wǎng)頁號,點擊網(wǎng)頁的次序號;第二是利用Clementine來分析處理好的數(shù)據(jù),現(xiàn)構(gòu)建好數(shù)據(jù)流,選擇可變文件節(jié)點,導入文件,設(shè)置好相應的設(shè)置,在使用“序列”節(jié)點,連接可變文件,進行相應的設(shè)置,執(zhí)行便可得出

108、相應的結(jié)果,然后將結(jié)果導出備用;第三是設(shè)計推送系統(tǒng)部分,此部分使用delphi開發(fā)工具進行開發(fā)。主要工作又包括兩部分,一是模型接口的設(shè)計,二是人機接口的設(shè)計。做好相應的窗體,能將Clementine分析得出的結(jié)果導入,根據(jù)結(jié)果進行比對分析,通過推送系統(tǒng)直接就可以得出相應的結(jié)果。這就是最終所做出的基于msnbc數(shù)據(jù)的網(wǎng)頁序列分析系統(tǒng)。</p><p><b>  參考文獻</b></p&

109、gt;<p>  [1]毛國軍,段立娟. 數(shù)據(jù)挖掘原理與算法[M]. 北京:清華大學出版社,2012</p><p>  [2]王 婧,梁興柱. C++程序設(shè)計[M]. 北京:電子工業(yè)出版社,2009 </p><p>  [3]張世明. Delphi程序設(shè)計基礎(chǔ). 北京:人民郵電出版社,2008</p><p>  [4]薛薇,陳歡歌.Clemen

110、tine 數(shù)據(jù)挖掘方法及應用.北京:電子工業(yè)出版社, 2010.9: ISBN978-7-121-11778-7.</p><p><b>  結(jié)束語</b></p><p>  這次課程設(shè)計,運用了多學科的知識,真可謂是大學學習的知識的綜合運用。首先要對任務進行分析,先要處理好數(shù)據(jù),這個過程可以運用各種工具和方法,只要能將數(shù)據(jù)處理成所需的結(jié)構(gòu)即可。我們這次所選取c+

111、+來處理,通過編程將原始數(shù)據(jù)導入,在進行相應處理,導出結(jié)果。這個過程要對c++文件導入導出的語法很熟悉才行,同時還要了解數(shù)組函數(shù)等基本知識,部分函數(shù)可以在網(wǎng)上收索得到,靈活運用即可。然后就需要使用到數(shù)據(jù)處理的工具,選用Clementine來處理數(shù)據(jù),選用的方法是關(guān)聯(lián)規(guī)則的序列關(guān)聯(lián)分析。這個部分的處理需要對Clementine的各個控件很熟悉,要掌握序列關(guān)聯(lián)分析的理論知識,最后要對分析出的結(jié)果進行合理性分析,結(jié)合實際,判斷自己得出的結(jié)論是

112、否有應用性。最后,就是將所得出的分析結(jié)果很好的展示給用戶。我們是設(shè)計一個網(wǎng)頁推薦系統(tǒng),采用的工具是delphi,可視化窗口程序設(shè)計。這部分要能熟練使用delphi開發(fā)工具,合理設(shè)計窗體,處理好模型接口,能很好的導入結(jié)果數(shù)據(jù),還要處理好人機交互接口,讓用戶能簡單方便的操作,界面要注意美觀簡約。</p><p>  以上就是我們整個設(shè)計過程中需要注意的東西。最后在總結(jié)一下我們這次設(shè)計中所用到的全部知識。C++預處理數(shù)

溫馨提示

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

評論

0/150

提交評論