資源簡(jiǎn)介
實(shí)驗(yàn)描述:
對(duì)指定數(shù)據(jù)集進(jìn)行聚類(lèi)分析,選擇適當(dāng)?shù)木垲?lèi)算法,編寫(xiě)程序?qū)崿F(xiàn),提交程序和結(jié)果報(bào)告。
數(shù)據(jù)集: Iris Data Set(見(jiàn)附件一) ,根據(jù)花的屬性進(jìn)行聚類(lèi)。
數(shù)據(jù)包括四個(gè)屬性:sepal length花萼長(zhǎng)度,sepal width花萼寬度,petal length花瓣長(zhǎng)度,petal width花瓣寬度。其中第五個(gè)值表示該樣本屬于哪一個(gè)類(lèi)。
樣本點(diǎn)間的距離直接用向量的歐氏距離。

代碼片段和文件信息
package?com.company;
????????import?java.io.File;
????????import?java.util.Scanner;
????????import?java.util.Vector;
????????import?static?com.sun.org.apache.xalan.internal.lib.ExsltStrings.split;
public?class?Main?{
????public?static?Vector?indata?=?new?Vector<>();??//存儲(chǔ)從文件中讀取的原始數(shù)據(jù)
????public?static?Vector?data?=?new?Vector<>();??//存儲(chǔ)經(jīng)過(guò)處理后的每一個(gè)樣本的各個(gè)屬性值和所屬分類(lèi)
????public?static?Vector?init_kernal?=?new?Vector<>();//存儲(chǔ)每次迭代產(chǎn)生的聚類(lèi)核心的每個(gè)屬性值的均值
????public?static?boolean?loadData(String?url)?{//加載測(cè)試的數(shù)據(jù)文件
????????try?{
????????????Scanner?in?=?new?Scanner(new?File(url));//讀入文件
????????????while?(in.hasNextLine())?{
????????????????String?str?=?in.nextLine();//將文件的每一行存到str的臨時(shí)變量中
????????????????indata.add(str);//將每一個(gè)樣本點(diǎn)的數(shù)據(jù)追加到Vector?中
????????????}
????????????return?true;
????????}?catch?(Exception?e)?{?//如果出錯(cuò)返回false
????????????return?false;
????????}
????}
????public?static?void?pretreatment(Vector?indata)?{???//數(shù)據(jù)預(yù)處理,將原始數(shù)據(jù)中的每一個(gè)屬性值提取出來(lái)存放到Vector??data中
????????int?i?=?0;
????????String?t;
????????while?(i?????????????double[]?tem?=?new?double[5];
????????????t?=?indata.get(i);
????????????String[]?sourceStrArray?=?t.split(““?5);//使用字符串分割函數(shù)提取出各屬性值
????????????for?(int?j?=?0;?j?4;?j++)?{
????????????????tem[j]?=?Double.parseDouble(sourceStrArray[j]);//將每一個(gè)的樣本的各屬性值類(lèi)型轉(zhuǎn)換后依次存入到double[]數(shù)組中
????????????}
????????????tem[4]?=?0;//tem的第五個(gè)值表示所屬類(lèi)別,1.0表示第一類(lèi),2.0表示第二類(lèi),3.0表示第三類(lèi),初始化為0不屬于任何類(lèi)
????????????data.add(tem);//將每一個(gè)樣本加入到data中
????????????i++;
????????}
????}
????public?static?Vector?set_kernal(Vector?data?int?a?int?b?int?c)?{//設(shè)置初始的聚類(lèi)核心,a,b,c分別表示一個(gè)類(lèi)的核心在data中的編號(hào)
????????init_kernal.add(data.get(a));
????????init_kernal.add(data.get(b));
????????init_kernal.add(data.get(c));
????????return?init_kernal;
????}
????public?static?int?choose(double[]?data?double[]?a?double[]?b?double[]?c)?{//判斷一個(gè)樣本屬于哪一個(gè)類(lèi),返回值1表示第一類(lèi),2表示第二類(lèi),3表示第三類(lèi)
????????double?ta?tb?tc;
????????//ta,tb,tc分別表示一個(gè)樣本點(diǎn)到三個(gè)聚類(lèi)核心的歐式距離的平方
????????ta?=?(data[0]?-?a[0])?*?(data[0]?-?a[0])?+?(data[1]?-?a[1])?*?(data[1]?-?a[1])?+?(data[2]?-?a[2])?*?(data[2]?-?a[2])?+?(data[3]?-?a[3])?*?(data[3]?-?a[3]);
????????tb?=?(data[0]?-?b[0])?*?(data[0]?-?b[0])?+?(data[1]?-?b[1])?*?(data[1]?-?b[1])?+?(data[2]?-?b[2])?*?(data[2]?-?b[2])?+?(data[3]?-?b[3])?*?(data[3]?-?b[3]);
????????tc?=?(data[0]?-?c[0])?*?(data[0]?-?c[0])?+?(data[1]?-?c[1])?*?(data[1]?-?c[1])?+?(data[2]?-?c[2])?*?(data[2]?-?c[2])?+?(data[3]?-?c[3])?*?(data[3]?-?c[3]);
????????if?(ta?==?Math.min(Math.min(ta?tb)?tc))???//如果到第一類(lèi)的距離最小返回1
????????????return?1;
????????else?if?(tb?==?Math.min(Math.min(ta?tb)?tc))//如果到第二類(lèi)的距離最小返回2
????????????return?2;
????????else?if?(tc?==?Math.min(Math.min(ta?tb)?tc))//如果到第三類(lèi)的距離最小返回3
????????????return?3;
????????return?0;
????}
????public?static?Vector?onestep(Vector?data?Vector?kernal)?{//函數(shù)執(zhí)行一次表示kmeans的
?屬性????????????大小?????日期????時(shí)間???名稱(chēng)
-----------?---------??----------?-----??----
?????目錄???????????0??2016-11-22?00:30??2014301500370-李勇志\
?????目錄???????????0??2016-12-10?12:10??2014301500370-李勇志\.idea\
?????文件?????????686??2016-11-15?14:35??2014301500370-李勇志\.idea\compiler.xm
?????目錄???????????0??2016-11-22?00:30??2014301500370-李勇志\.idea\copyright\
?????文件??????????76??2016-11-15?14:35??2014301500370-李勇志\.idea\copyright\profiles_settings.xm
?????文件??????????97??2016-11-15?14:35??2014301500370-李勇志\.idea\desc
?????文件?????????529??2016-11-15?14:35??2014301500370-李勇志\.idea\misc.xm
?????文件?????????283??2016-11-15?14:35??2014301500370-李勇志\.idea\modules.xm
?????文件??????????91??2016-11-15?14:35??2014301500370-李勇志\.idea\project-template.xm
?????文件???????34495??2016-12-07?13:48??2014301500370-李勇志\.idea\workspace.xm
?????目錄???????????0??2016-11-15?17:10??2014301500370-李勇志\out\
?????目錄???????????0??2016-11-15?17:10??2014301500370-李勇志\out\production\
?????目錄???????????0??2016-11-15?19:24??2014301500370-李勇志\out\production\數(shù)據(jù)挖掘?qū)嶒?yàn)\
?????目錄???????????0??2016-11-15?19:24??2014301500370-李勇志\out\production\數(shù)據(jù)挖掘?qū)嶒?yàn)\com\
?????目錄???????????0??2016-11-22?00:30??2014301500370-李勇志\out\production\數(shù)據(jù)挖掘?qū)嶒?yàn)\com\company\
?????文件????????4952??2016-11-15?19:24??2014301500370-李勇志\out\production\數(shù)據(jù)挖掘?qū)嶒?yàn)\com\company\Main.class
?????目錄???????????0??2016-11-15?17:10??2014301500370-李勇志\src\
?????目錄???????????0??2016-11-15?17:10??2014301500370-李勇志\src\com\
?????目錄???????????0??2016-11-22?00:30??2014301500370-李勇志\src\com\company\
?????文件????????7562??2016-11-15?19:30??2014301500370-李勇志\src\com\company\Main.java
?????文件?????????437??2016-11-15?14:35??2014301500370-李勇志\數(shù)據(jù)挖掘?qū)嶒?yàn).iml
評(píng)論
共有 條評(píng)論