數(shù)據(jù)挖掘課程設(shè)計_第1頁
已閱讀1頁,還剩9頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  【數(shù)據(jù)挖掘課程設(shè)計】</p><p>  ----3-4-5規(guī)則劃分</p><p><b>  目 錄</b></p><p>  一 實(shí) 驗(yàn) 目 的-----------------------------3</p><p>  二 實(shí) 驗(yàn) 內(nèi) 容------------------

2、-----------3</p><p>  三 實(shí) 驗(yàn) 要 求-----------------------------3</p><p>  四 實(shí) 驗(yàn) 準(zhǔn) 備-----------------------------3</p><p>  五 實(shí) 驗(yàn) 步 驟-----------------------------4</p><p&g

3、t;  六 功 能 代 碼-----------------------------5</p><p>  七 實(shí) 驗(yàn) 結(jié) 果-----------------------------9</p><p>  八 實(shí) 驗(yàn) 心 得----------------------------10</p><p><b>  實(shí)驗(yàn)?zāi)康?lt;/b><

4、/p><p>  加強(qiáng)對3-4-5規(guī)則劃分算法的了解</p><p>  加強(qiáng)對Java語言的理解與動手操作能力</p><p>  進(jìn)一步熟悉eclipse環(huán)境。</p><p><b>  實(shí)驗(yàn)內(nèi)容</b></p><p><b>  3-4-5規(guī)則介紹</b></p&

5、gt;<p>  3-4-5規(guī)則可以用來將數(shù)值數(shù)據(jù)分割成相對一致,看上去自然的區(qū)間。一般,該規(guī)則根據(jù)最高有效位的取值范圍,遞歸逐層地將給定的數(shù)據(jù)區(qū)域劃分成3,4或5個相對等寬的區(qū)間。我們將用一個例子解釋這個規(guī)則的用法。規(guī)則如下:如果一個區(qū)間在最高有效位包含3,6,7或9個不同的值,則將該區(qū)間劃分為3個區(qū)間(對3,6,9,劃分為3個等寬的區(qū)間;對于7,按2-3-2分組,劃分成3個區(qū)間)。如果在最高位包含2,4,8個不同的值,

6、則將區(qū)間劃分為4個等寬的區(qū)間。如果在最高有效位包含1,5,10個不同的值,則將區(qū)間劃分成5個等寬的區(qū)間。該規(guī)則可以遞歸地用于每個區(qū)間,為給定的數(shù)值屬性創(chuàng)建概念分層。</p><p><b>  實(shí)驗(yàn)要求</b></p><p>  用Java語言實(shí)現(xiàn)3-4-5規(guī)則劃分算法。</p><p><b>  實(shí)驗(yàn)準(zhǔn)備</b>&l

7、t;/p><p>  了解3-4-5規(guī)則劃分的具體過程</p><p>  具體詳細(xì)的算法模塊用什么方法實(shí)現(xiàn)分析</p><p>  對總體進(jìn)行可行性的研究</p><p>  具體的編程實(shí)現(xiàn)3-4-5規(guī)則劃分</p><p>  5. 算法優(yōu)點(diǎn)缺點(diǎn)</p><p>  優(yōu)點(diǎn):可以將數(shù)據(jù)分割成相對

8、一致、看上去自然的區(qū)間</p><p>  缺點(diǎn):需要自己確定數(shù)據(jù)來開始分割,要有一定數(shù)據(jù)分析能力</p><p><b>  五.實(shí)驗(yàn)步驟</b></p><p><b>  六.功能代碼</b></p><p>  1.自定義數(shù)據(jù)的low和high的值為以后做準(zhǔn)備</p><

9、p>  package zhj;</p><p>  public class Data {</p><p>  private int low;</p><p>  private int high;</p><p>  public Data(int low ,int high){</p><p>  thi

10、s.low=low;</p><p>  this.high=high;</p><p><b>  }</b></p><p>  public String toStirng(){</p><p>  return "("+low+","+high+"]";

11、</p><p><b>  }</b></p><p>  public int getHigh() {</p><p>  return high;</p><p><b>  }</b></p><p>  public void setHigh(int high) {

12、</p><p>  this.high = high;</p><p><b>  }</b></p><p>  public int getLow() {</p><p>  return low;</p><p><b>  }</b></p><

13、p>  public void setLow(int low) {</p><p>  this.low = low;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  2.基本功能代碼</b></p>

14、<p>  import java.util.ArrayList;</p><p>  public class MyData {</p><p>  private int min;</p><p>  private int max;</p><p>  private int low = -159867;</p>

15、;<p>  private int high = 1838761;</p><p>  private int msd;</p><p>  private int low1;</p><p>  private int high1;</p><p>  private ArrayList<Data> a = ne

16、w ArrayList<Data>();// 區(qū)間的存儲</p><p>  public MyData(int min, int max) {</p><p>  this.min = min;</p><p>  this.max = max;</p><p>  this.msd = (int) (Math.pow(10,

17、("" + max).length() - 1));</p><p>  this.low1 = -msd;</p><p>  this.high1 = (Integer.parseInt((high + "").substring(0, 1)) + 1) * msd;</p><p>  a.add(new Data(lo

18、w1, high1));</p><p><b>  }</b></p><p>  public void three() {// 第三步</p><p>  ArrayList<Data> a1 = new ArrayList<Data>();</p><p>  a1.add(a.get(0

19、));</p><p>  a.removeAll(a);// 清空</p><p>  int temp = a1.get(0).getLow();</p><p>  for (int i = 0; i < count(a1.get(0)); i++) {</p><p>  temp += msd;</p><

20、p>  // System.out.println("temp="+temp);</p><p>  if (temp > a1.get(0).getHigh()) {</p><p>  temp -= msd;</p><p>  temp += msd / 10;</p><p><b>  }

21、</b></p><p>  a.add(new Data(a1.get(0).getLow() + temp, temp));</p><p><b>  }</b></p><p><b>  }</b></p><p>  public void four() {// 第四步<

22、;/p><p>  int lows = -(int) ((Integer.parseInt((min + "").substring(1, 2)) + 1) * Math</p><p>  .pow(10, (min + "").length() - 1));</p><p>  int highs = (int) ((Int

23、eger.parseInt((max + "").substring(0, 1)) + 1) * Math</p><p>  .pow(10, (max + "").length() - 1));</p><p>  a.remove(0);</p><p>  a.add(0, new Data(lows, 0));<

24、;/p><p>  a.add(new Data(a.get(2).getHigh(), highs));</p><p><b>  }</b></p><p>  public void finall() {// 第五步</p><p>  ArrayList<Data> a1 = new ArrayList

25、<Data>();// 復(fù)制前一個區(qū)間集</p><p>  for (int i = 0; i < a.size(); i++) {</p><p>  a1.add(a.get(i));</p><p><b>  }</b></p><p>  a.removeAll(a);// 清空區(qū)間<

26、/p><p>  for (int i = 0; i < a1.size(); i++) {// 取出沒個區(qū)間并且按照3-4-5規(guī)則劃分</p><p>  getInt(count(a1.get(i)), a1.get(i));</p><p><b>  }</b></p><p>  // if(!

27、isTrue()){//迭代</p><p>  // finall();</p><p>  // System.out.println(this.printA());</p><p>  // }</p><p><b>  }</b></p><p&

28、gt;  public boolean isTrue(){//停止迭代的條件</p><p>  for (int i = 0; i < a.size(); i++) {</p><p>  if((a.get(i).getHigh()-a.get(i).getLow())<100000){</p><p>  return true;</p>

29、;<p><b>  }</b></p><p><b>  }</b></p><p>  return false;</p><p><b>  }</b></p><p>  public void getInt(int k, Data d) {// 通

30、過傳進(jìn)要劃分的區(qū)間和將要劃分為k個區(qū)間</p><p>  int x = (d.getHigh() - d.getLow()) / k;// 區(qū)間的步長</p><p>  for (int i = 0; i < k; i++) {</p><p>  a.add(new Data(d.getLow() + i * x, d.getLow() + (i +

31、1) * x));// 把最后一層的區(qū)間添加到區(qū)間列表</p><p><b>  }</b></p><p><b>  }</b></p><p>  public int count(Data d) {// 返回下一個分區(qū)間的大小</p><p>  int m = -1;</p>

32、<p>  switch (counts(d)) {</p><p><b>  case 1:</b></p><p><b>  case 5:</b></p><p><b>  case 10:</b></p><p><b>  m = 5;&

33、lt;/b></p><p><b>  break;</b></p><p><b>  case 3:</b></p><p><b>  case 6:</b></p><p><b>  case 9:</b></p><

34、p><b>  m = 3;</b></p><p><b>  break;</b></p><p><b>  case 2:</b></p><p><b>  case 4:</b></p><p><b>  case 8:<

35、;/b></p><p><b>  m = 4;</b></p><p><b>  break;</b></p><p><b>  default:</b></p><p>  //System.out.println("default!"

36、);</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  return m;</b></p><p><b>  }</b></p><p>  public int

37、 counts(Data d) {// 計算1-10合法</p><p><b>  int k;</b></p><p>  k = (d.getHigh() - d.getLow()) / msd;</p><p>  if (k <= 10) {</p><p><b>  return k;<

38、;/b></p><p><b>  } else {</b></p><p>  k = 10 * (d.getHigh() - d.getLow()) / msd;</p><p><b>  }</b></p><p><b>  return k;</b><

39、/p><p><b>  }</b></p><p>  public String toString() {</p><p>  return "相關(guān)數(shù)據(jù):\n" + "min=" + min + "\nmax=" + max + "\nlow=" + low<

40、/p><p>  + "\nhigh=" + high + "\nmsd=" + msd + "\nlow1=" + low1</p><p>  + "\nhigh1=" + high1 + "\n**************";</p><p><b>  

41、}</b></p><p>  public ArrayList<Data> getA() {</p><p><b>  return a;</b></p><p><b>  }</b></p><p>  public void setA(ArrayList<Da

42、ta> a) {</p><p>  this.a = a;</p><p><b>  }</b></p><p>  public String printA() {</p><p>  String str = "劃分后的區(qū)間:\n";</p><p>  for

43、(int i = 0; i < a.size(); i++) {</p><p>  str += a.get(i).toStirng() + "\n";</p><p><b>  }</b></p><p>  return str;</p><p><b>  }</b&g

44、t;</p><p>  public static void main(String[] args) {</p><p>  MyData m = new MyData(-351976, 4700896);</p><p>  System.out.println(m);</p><p>  System.out.println(m.pri

45、ntA());</p><p>  m.three();</p><p>  System.out.println(m.printA());</p><p><b>  m.four();</b></p><p>  System.out.println(m.printA());</p><p>

46、  m.finall();</p><p>  System.out.println(m.printA());</p><p>  m.finall();</p><p>  System.out.println(m.printA());</p><p><b>  }</b></p><p>&

47、lt;b>  }</b></p><p><b>  七.實(shí)驗(yàn)結(jié)果</b></p><p><b>  相關(guān)數(shù)據(jù):</b></p><p>  min=-351976</p><p>  max=4700896</p><p>  low=-159867&l

48、t;/p><p>  high=1838761</p><p>  msd=1000000</p><p>  low1=-1000000</p><p>  high1=2000000</p><p>  **************</p><p><b>  劃分后的區(qū)間:</

49、b></p><p>  (-1000000,2000000]</p><p><b>  劃分后的區(qū)間:</b></p><p>  (-1000000,0]</p><p>  (0,1000000]</p><p>  (1000000,2000000]</p><

50、p><b>  劃分后的區(qū)間:</b></p><p>  (-4000000,0]</p><p>  (0,1000000]</p><p>  (1000000,2000000]</p><p>  (2000000,5000000]</p><p><b>  劃分后的區(qū)間

51、:</b></p><p>  (-4000000,-3000000]</p><p>  (-3000000,-2000000]</p><p>  (-2000000,-1000000]</p><p>  (-1000000,0]</p><p>  (0,200000]</p><

52、;p>  (200000,400000]</p><p>  (400000,600000]</p><p>  (600000,800000]</p><p>  (800000,1000000]</p><p>  (1000000,1200000]</p><p>  (1200000,1400000]&l

53、t;/p><p>  (1400000,1600000]</p><p>  (1600000,1800000]</p><p>  (1800000,2000000]</p><p>  (2000000,3000000]</p><p>  (3000000,4000000]</p><p> 

54、 (4000000,5000000]</p><p><b>  八.實(shí)驗(yàn)心得</b></p><p>  通過此次課程設(shè)計,加強(qiáng)了對3-4-5規(guī)則劃分的理解,也是自己的動手能力有所提高。但是也讓我發(fā)現(xiàn)了自己很多的不足之處,在JAVA編碼的能力上還有待提高,希望以后能多有這樣的課設(shè)讓自己的能力可以提高。這一次的課程設(shè)計編碼階段有幾個同學(xué)給了我很大的幫助,也讓我知道了團(tuán)

溫馨提示

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

評論

0/150

提交評論