版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)挖掘課程設(shè)計
- 圖書借閱數(shù)據(jù)挖掘課程設(shè)計
- 數(shù)據(jù)倉庫與數(shù)據(jù)挖掘課程設(shè)計
- 數(shù)據(jù)挖掘課程設(shè)計報告---關(guān)聯(lián)規(guī)則挖掘系統(tǒng)
- 數(shù)據(jù)挖掘聚類算法課程設(shè)計報告
- 數(shù)據(jù)挖掘聚類算法課程設(shè)計報告
- 數(shù)據(jù)挖掘聚類算法課程設(shè)計報告
- plc課程設(shè)計--挖掘機(jī)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--數(shù)據(jù)結(jié)構(gòu)課程設(shè)計----huffman編碼
- 數(shù)據(jù)排序課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計——課程設(shè)計報告模板
- 數(shù)據(jù)庫課程設(shè)計--數(shù)據(jù)庫原理及應(yīng)用課程設(shè)計
- 數(shù)據(jù)庫課程設(shè)計-酒店管理系統(tǒng)課程設(shè)計
- 課程設(shè)計——數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(八皇后問題)
- 數(shù)據(jù)挖掘課程論文
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計迷宮問題課程設(shè)計報告
- 數(shù)據(jù)倉庫與數(shù)據(jù)挖掘課程設(shè)計--圖書館數(shù)據(jù)倉庫系統(tǒng)分析與設(shè)計
- 數(shù)據(jù)庫課程設(shè)計
- 數(shù)據(jù)采集課程設(shè)計1
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
評論
0/150
提交評論