日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java如何做聚类分析_K-means算法的Java实现 聚类分析681个三国武将

發布時間:2024/1/8 java 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java如何做聚类分析_K-means算法的Java实现 聚类分析681个三国武将 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一,k-means算法介紹:

k-means算法接受輸入量 k ;然后將n個數據對象劃分為 k個聚類以便使得所獲得的聚類滿足:同一聚類中的對象相似度較高;而不同聚類中的對象相似度較小。聚類相似度是利用各聚類中對象的均值所獲得一個“中心對象”(引力中心)來進行計算的。k個聚類具有以下特點:各聚類本身盡可能的緊湊,而各聚類之間盡可能的分開。 k個聚類具有以下特點:各聚類本身盡可能的緊湊,而各聚類之間盡可能的分開。

k-means算法的工作過程說明如下:首先從n個數據對象任意選擇 k 個對象作為初始聚類中心;而對于所剩下其它對象,則根據它們與這些聚類中心的相似度(距離),分別將它們分配給與其最相似的(聚類中心所代表的)聚類;然后再計算每個所獲新聚類的聚類中心(該聚類中所有對象的均值);不斷重復這一過程直到標準測度函數開始收斂為止。一般都采用均方差作為標準測度函數。k個聚類具有以下特點:各聚類本身盡可能的緊湊,而各聚類之間盡可能的分開。

二,k-means算法基本步驟:

(1) 從 n個數據對象任意選擇 k 個對象作為初始聚類中心;

(2) 根據每個聚類對象的均值(中心對象),計算每個對象與這些中心對象的距離;并根據最小距離重新對相應對象進行劃分;

(3) 重新計算每個(有變化)聚類的均值(中心對象);

(4) 計算標準測度函數,當滿足一定條件,如函數收斂時,則算法終止;如果條件不滿足則回到步驟(2),不斷重復直到標準測度函數開始收斂為止。(一般都采用均方差作為標準測度函數。)

三,k-means算法的java實現:

一共有七個類,General.java代表武將對象, Distance.java距離類計算各個武將到中心武將之間的距離, Cluster.java聚類對象包含一個中心武將和該聚類中所有武將, Kmeans.java核心的聚類算法類, Tool.java工具類用于轉換武將的星級為數字等操作, TestKmeans.java測試類即入口文件, DomParser.java用于讀取xml中的681個武將。

具體思路:先從general.xml文件中讀取681個武將,然后隨機選取初始類中心,計算各個武將到中心武將的距離,根據最小的距離進行聚類,然后重新根據平均值新的聚類的類中心,重新計算各個武將到新的中心武將的距離,直到更新后的聚類與原來的聚類包含的武將不再改變,即收斂時結束。

具體代碼如下:

1,General.java

packagekmeans;

publicclassGeneral?{

privateString?name;//?姓名

privateintrender;//?星級

privateinttongshai;//?統帥

privateintwuli;//?武力

privateintzhili;//?智力

privateintpolic;//?政治

privateintqiangbin;//?槍兵

privateintjibin;//?戟兵

privateintnubin;//?弩兵

privateintqibin;//?騎兵

privateintbinqi;//?兵器

privateinttongwu;//?統武

privateinttongzhi;//?統智

privateinttongwuzhi;//?統武智

privateinttongwuzhizheng;//?統武智政

privateintsalary;//?50級工資

publicGeneral(intrender,?String?name,inttongshai,intwuli,intzhili,

intpolic,intqiangbin,intjibin,intnubin,intqibin,

intbinqi,inttongwu,inttongzhi,inttongwuzhi,

inttongwuzhizheng,intsalary)?{

super();

this.name?=?name;

this.render?=?render;

this.tongshai?=?tongshai;

this.wuli?=?wuli;

this.zhili?=?zhili;

this.polic?=?polic;

this.qiangbin?=?qiangbin;

this.jibin?=?jibin;

this.nubin?=?nubin;

this.qibin?=?qibin;

this.binqi?=?binqi;

this.tongwu?=?tongwu;

this.tongzhi?=?tongzhi;

this.tongwuzhi?=?tongwuzhi;

this.tongwuzhizheng?=?tongwuzhizheng;

this.salary?=?salary;

}

publicGeneral(intrender,inttongshai,intwuli,intzhili,intpolic,

intqiangbin,intjibin,intnubin,intqibin,intbinqi,

inttongwu,inttongzhi,inttongwuzhi,inttongwuzhizheng,

intsalary)?{

super();

this.name?="聚類中心";

this.render?=?render;

this.tongshai?=?tongshai;

this.wuli?=?wuli;

this.zhili?=?zhili;

this.polic?=?polic;

this.qiangbin?=?qiangbin;

this.jibin?=?jibin;

this.nubin?=?nubin;

this.qibin?=?qibin;

this.binqi?=?binqi;

this.tongwu?=?tongwu;

this.tongzhi?=?tongzhi;

this.tongwuzhi?=?tongwuzhi;

this.tongwuzhizheng?=?tongwuzhizheng;

this.salary?=?salary;

}

publicGeneral()?{

}

@Override

publicString?toString()?{

return"武將?[name="+?name?+",?render="+?Tool.dxingji(render)

+",?tongshai="+?tongshai?+",?wuli="+?wuli?+",?zhili="

+?zhili?+",?polic="+?polic?+",?qiangbin="

+?Tool.dchange(qiangbin)?+",?jibin="+?Tool.dchange(jibin)

+",?nubin="+?Tool.dchange(nubin)?+",?qibin="

+?Tool.dchange(qibin)?+",?binqi="+?Tool.dchange(binqi)

+",?tongwu="+?tongwu?+",?tongzhi="+?tongzhi

+",?tongwuzhi="+?tongwuzhi?+",?tongwuzhizheng="

+?tongwuzhizheng?+",?salary="+?salary?+"]";

}

publicString?getName()?{

returnname;

}

publicvoidsetName(String?name)?{

this.name?=?name;

}

publicintgetRender()?{

returnrender;

}

publicvoidsetRender(intrender)?{

this.render?=?render;

}

publicintgetTongshai()?{

returntongshai;

}

publicvoidsetTongshai(inttongshai)?{

this.tongshai?=?tongshai;

}

publicintgetWuli()?{

returnwuli;

}

publicvoidsetWuli(intwuli)?{

this.wuli?=?wuli;

}

publicintgetZhili()?{

returnzhili;

}

publicvoidsetZhili(intzhili)?{

this.zhili?=?zhili;

}

publicintgetPolic()?{

returnpolic;

}

publicvoidsetPolic(intpolic)?{

this.polic?=?polic;

}

publicintgetQiangbin()?{

returnqiangbin;

}

publicvoidsetQiangbin(intqiangbin)?{

this.qiangbin?=?qiangbin;

}

publicintgetJibin()?{

returnjibin;

}

publicvoidsetJibin(intjibin)?{

this.jibin?=?jibin;

}

publicintgetNubin()?{

returnnubin;

}

publicvoidsetNubin(intnubin)?{

this.nubin?=?nubin;

}

publicintgetQibin()?{

returnqibin;

}

publicvoidsetQibin(intqibin)?{

this.qibin?=?qibin;

}

publicintgetBinqi()?{

returnbinqi;

}

publicvoidsetBinqi(intbinqi)?{

this.binqi?=?binqi;

}

publicintgetTongwu()?{

returntongwu;

}

publicvoidsetTongwu(inttongwu)?{

this.tongwu?=?tongwu;

}

publicintgetTongzhi()?{

returntongzhi;

}

publicvoidsetTongzhi(inttongzhi)?{

this.tongzhi?=?tongzhi;

}

publicintgetTongwuzhi()?{

returntongwuzhi;

}

publicvoidsetTongwuzhi(inttongwuzhi)?{

this.tongwuzhi?=?tongwuzhi;

}

publicintgetTongwuzhizheng()?{

returntongwuzhizheng;

}

publicvoidsetTongwuzhizheng(inttongwuzhizheng)?{

this.tongwuzhizheng?=?tongwuzhizheng;

}

publicintgetSalary()?{

returnsalary;

}

publicvoidsetSalary(intsalary)?{

this.salary?=?salary;

}

}

2,Distance.java

packagekmeans;

/**

*?這個類用于計算距離的。。

*

*/

publicclassDistance?{

intdest;//?目的

intsource;//?源

doubledist;//?歐式距離

publicintgetDest()?{

returndest;

}

publicvoidsetDest(intdest)?{

this.dest?=?dest;

}

publicintgetSource()?{

returnsource;

}

publicvoidsetSource(intsource)?{

this.source?=?source;

}

publicdoublegetDist()?{

returndist;

}

publicvoidsetDist(doubledist)?{

this.dist?=?dist;

}

/**

*?計算源和目的的距離

*?@param?dest?目的武將

*?@param?source?源武將

*?@param?dist?兩者間的距離

*/

publicDistance(intdest,intsource,doubledist)?{

this.dest?=?dest;

this.source?=?source;

this.dist?=?dist;

}

publicDistance()?{

}

}

3,Cluster.java

packagekmeans;

importjava.util.ArrayList;

publicclassCluster?{

privateintcenter;//?聚類中心武將的id

privateArrayList?ofCluster?=newArrayList();//?屬于這個聚類的武將的集合

publicintgetCenter()?{

returncenter;

}

publicvoidsetCenter(intcenter)?{

this.center?=?center;

}

publicArrayList?getOfCluster()?{

returnofCluster;

}

publicvoidsetOfCluster(ArrayList?ofCluster)?{

this.ofCluster?=?ofCluster;

}

publicvoidaddGeneral(General?general)?{

if(!(this.ofCluster.contains(general)))

this.ofCluster.add(general);

}

}

4,Kmeans.java

packagekmeans;

importjava.util.*;

publicclassKmeans?{

publicArrayList?allGenerals?=null;

publicinttotalNumber?=0;//?得到所有的武將數目

publicintK?=0;//?假設K=10

publicKmeans()?{

allGenerals?=newDomParser().prepare();

totalNumber?=?allGenerals.size();

K?=3;

}

//?第一次隨機選取聚類中心

publicSet?firstRandom()?{

Set?center?=newHashSet();//?聚類中心的點的id,采用set保證不會有重復id

Random?ran?=newRandom();

introll?=?ran.nextInt(totalNumber);

while(center.size()?

roll?=?ran.nextInt(totalNumber);

center.add(roll);

}

returncenter;

}

//?根據聚類中心初始化聚類信息

publicArrayList?init(Set?center)?{

ArrayList?cluster?=newArrayList();//?聚類?的數組

Iterator?it?=?center.iterator();

while(it.hasNext())?{

Cluster?c?=newCluster();//?代表一個聚類

c.setCenter(it.next());

cluster.add(c);

}

returncluster;

}

/**

*?計算各個武將到各個聚類中心的距離,重新聚類

*

*?@param?cluster

*????????????聚類數組,用來聚類的,根據最近原則把武將聚類

*?@param?center

*????????????中心點id,用于計算各個武將到中心點的距離?return?cluster?聚類后的所有聚類組成的數組

*/

publicArrayList?juLei(Set?center,

ArrayList?cluster)?{

ArrayList?distence?=newArrayList();//?存放距離信息,表示每個點到各個中心點的距離組成的數組

General?source?=null;

General?dest?=null;

intid?=0;//?目的節點id

intid2?=0;//?源節點id

Object[]?p?=?center.toArray();//?p?為聚類中心點id數組

booleanflag?=false;

//?分別計算各個點到各個中心點的距離,并將距離最小的加入到各個聚類中,進行聚類

for(inti?=0;?i?

//?每個點計算完,并聚類到距離最小的聚類中就清空距離數組

distence.clear();

//?計算到j個類中心點的距離,便利各個中心點

for(intj?=0;?j?

//?如果該點不在中心點內?則計算距離

if(!(center.contains(i)))?{

flag?=true;

//?計算距離

source?=?allGenerals.get(i);//?某個點

dest?=?allGenerals.get((Integer)?p[j]);//?各個?中心點

//?計算距離并存入數組

distence.add(newDistance((Integer)?p[j],?i,?Tool.juli(

source,?dest)));

}else{

flag?=false;

}

}

//?說明計算完某個武將到類中心的距離,開始比較

if(flag?==true)?{

//?排序比較一個點到各個中心的距離的大小,找到距離最小的武將的?目的id,和源id,

//?目的id即類中心點id,這個就歸到這個中心點所在聚類中

doublemin?=?distence.get(0).getDist();//?默認第一個distance距離是最小的

//?從1開始遍歷distance數組

intminid?=0;

for(intk?=1;?k?

if(min?>?distence.get(k).getDist())?{

min?=?distence.get(k).getDist();

id?=?distence.get(k).getDest();//?目的,即類中心點

id2?=?distence.get(k).getSource();//?某個武將

minid?=?k;

}else{

id?=?distence.get(minid).getDest();

id2?=?distence.get(minid).getSource();

}

}

//?遍歷cluster聚類數組,找到類中心點id與最小距離目的武將id相同的聚類

for(intn?=0;?n?

//?如果和中心點的id相同?則setError

if(cluster.get(n).getCenter()?==?id)?{

cluster.get(n).addGeneral(allGenerals.get(id2));//?將與該聚類中心距離最小的武將加入該聚類

break;

}

}

}

}

returncluster;

}

//?產生新的聚類中心點數組

publicSet?updateCenter()?{

Set?center?=newHashSet();

for(inti?=0;?i?

center.add(i);

}

returncenter;

}

//?更新聚類中心,?求平均值

publicArrayList?updateCluster(ArrayList?cluster)?{

ArrayList?result?=newArrayList();

//?重新產生的新的聚類中心組成的數組

//?k個聚類進行更新聚類中心

for(intj?=0;?j?

ArrayList?ps?=?cluster.get(j).getOfCluster();//?該聚類的所有?武將

//?組成的數組

ps.add(allGenerals.get(cluster.get(j).getCenter()));//?同時將該類中心對應的武將加入該武將數組

intsize?=?ps.size();//?該聚類的長度大小

//?計算和,然后在計算平均值

intsumrender?=0,?sumtongshai?=0,?sumwuli?=0,?sumzhili?=0,?sumjibin?=0,?sumnubin?=0,?sumqibin?=0,?sumpolic?=0,?sumqiangbin?=0,?sumbinqi?=0,?sumtongwu?=0,?sumtongzhi?=0,?sumtongwuzhi?=0,?sumtongwuzhizheng?=0,?sumsalary?=0;

for(intk1?=0;?k1?

sumrender?+=?ps.get(k1).getRender();

sumtongshai?+=?ps.get(k1).getRender();

sumwuli?+=?ps.get(k1).getWuli();

sumzhili?+=?ps.get(k1).getZhili();

sumjibin?+=?ps.get(k1).getJibin();

sumnubin?+=?ps.get(k1).getNubin();

sumqibin?+=?ps.get(k1).getQibin();

sumpolic?+=?ps.get(k1).getPolic();

sumqiangbin?+=?ps.get(k1).getQiangbin();

sumbinqi?+=?ps.get(k1).getBinqi();

sumtongwu?+=?ps.get(k1).getTongwu();

sumtongzhi?+=?ps.get(k1).getTongzhi();

sumtongwuzhi?+=?ps.get(k1).getTongwuzhi();

sumtongwuzhizheng?+=?ps.get(k1).getTongwuzhizheng();

sumsalary?+=?ps.get(k1).getSalary();

}

//?產生新的聚類,然后加入到聚類數組中

Cluster?newCluster?=newCluster();

newCluster.setCenter(j);

//?計算平均值并構造新的武將對象

newCluster.addGeneral(newGeneral(sumrender?/?size,?sumtongshai

/?size,?sumwuli?/?size,?sumzhili?/?size,?sumjibin?/?size,

sumnubin?/?size,?sumqibin?/?size,?sumpolic?=0,

sumqiangbin?=0,?sumbinqi?/?size,?sumtongwu?/?size,

sumtongzhi?/?size,?sumtongwuzhi?/?size,?sumtongwuzhizheng

/?size,?sumsalary?/?size));

result.add(newCluster);

}

returnresult;

}

/**

*?計算各個武將到各個更新后的聚類中心的距離,重新聚類

*?@param?update?更新后的聚類中心

*?@param?cluster?要存儲的聚類中心

*/

publicArrayList?updateJuLei(ArrayList?update,

ArrayList?cluster)?{

ArrayList?distence?=newArrayList();//?存放距離信息,表示每個點到各個中心點的距離組成的數組

General?source?=null;

General?dest?=null;

intid?=0;//?目的節點id

intid2?=0;//?源節點id

//Object[]?p?=?center.toArray();//?p?為聚類中心點id數組

booleanflag?=false;

//?分別計算各個點到各個中心點的距離,并將距離最小的加入到各個聚類中,進行聚類

for(inti?=0;?i?

//?每個點計算完,并聚類到距離最小的聚類中就清空距離數組

distence.clear();

//?計算到j個類中心點的距離,便利各個中心點

//for?(int?j?=?0;?j?

for(intj?=0;?j?

//?如果該點不在中心點內?則計算距離

//if?(!(center.contains(i)))?{

flag?=true;

//?計算距離

source?=?allGenerals.get(i);//?某個點

//?dest?=?allGenerals.get((Integer)?p[j]);//?各個?中心點

dest?=?update.get(j).getOfCluster().get(0);//?各個?中心點

//?計算距離并存入數組

//distence.add(new?Distance((Integer)?p[j],?i,?Tool.juli(

distence.add(newDistance(update.get(j).getCenter(),?i,?Tool.juli(

source,?dest)));

/*}?else?{

flag?=?false;

}*/

}

//?說明計算完某個武將到類中心的距離,開始比較

if(flag?==true)?{

//?排序比較一個點到各個中心的距離的大小,找到距離最小的武將的?目的id,和源id,

//?目的id即類中心點id,這個就歸到這個中心點所在聚類中

doublemin?=?distence.get(0).getDist();//?默認第一個distance距離是最小的

//?從1開始遍歷distance數組

intmid?=0;

for(intk?=1;?k?

if(min?>?distence.get(k).getDist())?{

min?=?distence.get(k).getDist();

id?=?distence.get(k).getDest();//?目的,即類中心點

id2?=?distence.get(k).getSource();//?某個武將

mid?=?k;

}else{

id?=?distence.get(mid).getDest();

id2?=?distence.get(mid).getSource();

}

}

//?遍歷cluster聚類數組,找到類中心點id與最小距離目的武將id相同的聚類

for(intn?=0;?n?

//?如果和中心點的id相同?則setError

if(cluster.get(n).getCenter()?==?id)?{

cluster.get(n).addGeneral(allGenerals.get(id2));//?將與該聚類中心距離最小的武將加入該聚類

}

}

}

}

returncluster;

}

//?不斷循環聚類直到各個聚類沒有重新分配

publicArrayList?getResult()?{

ArrayList?result?=newArrayList();

ArrayList?temp?=newArrayList();

booleanflag?=false;

//?得到隨機中心點然后進行聚類

Set?center?=?firstRandom();

result?=?juLei(center,?init(center));

print(result);

do{

//?重新聚類

ArrayList?up?=?updateCluster(result);//新的聚類中心

ArrayList?cluster?=?init(updateCenter());//?得到更新后的中心點對應的聚類數組

temp?=?updateJuLei(up,?cluster);

//print(temp);

flag?=?isEquals(temp,?result);

result?=?temp;

}while(!flag);

returnresult;

}

publicbooleanisEquals(ArrayList?temp,?ArrayList?result){

booleanflag?=false;

if(temp.size()?!=?result.size()){

returnflag;

}

for(Cluster?tem?:?temp){

for(Cluster?res?:?result){

if(tem.getCenter()?==?res.getCenter()){

flag?=true;

}

}

//?如果找了一輪沒找到?則說明兩個聚類

if(flag?==false){

returnfalse;

}else{//?如果找了一輪找到了,那么接著找

flag?=false;

}

}

//如果代碼能進行到這邊,說明是true

flag?=true;

returnflag;

}

//輸出所有的聚類

publicvoidprint(ArrayList?cs)?{

System.out.println("***************************************");

for(inti?=0;?i?

Cluster?c?=?cs.get(i);

System.out.println("-----------------------------------------------------");

System.out.println("center:?"+?allGenerals.get(c.getCenter()));

ArrayList?p?=?c.getOfCluster();

for(intj?=0;?j?

System.out.println("general:"+p.get(j)+"\n");

}

}

}

}

5,Tool.java

packagekmeans;

publicclassTool?{

//將各種武器的精通程度轉為數字

publicstaticintchange(String?str)?{

intresult?=?str.equals("精")??4:?(str.equals("神")??3:?(str

.equals("通")??2:1));

returnresult;

}

//將星級轉為數字

publicstaticintxingji(String?str)?{

intresult?=?str.equals("★★★★★")??5:?(str.equals("★★★★")??4:?(str

.equals("★★★")??3:?(str.equals("★★")??2:1)));

returnresult;

}

//反轉?將各種武器的數字轉為精通程度

publicstaticString?dchange(intstr)?{

String?result?=?str==4?"精":?(str==3?"神":?(str==2?"通":"疏"));

returnresult;

}

//反轉?將數字轉為星級

publicstaticString?dxingji(intstr)?{

String?result?=?str==5?"★★★★★":?(str==4?"★★★★":?(str==3?"★★★":?(str?==2?"★★":"★")));

returnresult;

}

//計算歐式距離?傳入兩個將軍對象。。

publicstaticdoublejuli(General?g1,?General?g2)?{

doubleresult?=?(Double)?Math.sqrt(StrictMath.pow(g1.getRender()?-?g2.getRender(),2)

+?StrictMath.pow(g1.getTongshai()?-?g2.getTongshai(),2)

+?StrictMath.pow(g1.getWuli()?-?g2.getWuli(),2)

+?StrictMath.pow(g1.getZhili()?-?g2.getZhili(),2)

+?StrictMath.pow(g1.getPolic()?-?g2.getPolic(),2)

+?StrictMath.pow(g1.getQiangbin()?-?g2.getQiangbin(),2)

+?StrictMath.pow(g1.getQibin()?-?g2.getQibin(),2)

+?StrictMath.pow(g1.getJibin()?-?g2.getJibin(),2)

+?StrictMath.pow(g1.getNubin()?-?g2.getNubin(),2)

+?StrictMath.pow(g1.getBinqi()?-?g2.getBinqi(),2)

+?StrictMath.pow(g1.getTongwu()?-?g2.getTongwu(),2)

+?StrictMath.pow(g1.getTongzhi()?-?g2.getTongzhi(),2)

+?StrictMath.pow(g1.getTongwuzhizheng()?-?g2.getTongwuzhizheng(),2)

+?StrictMath.pow(g1.getTongwuzhi()?-?g2.getTongwuzhi(),2)

+?StrictMath.pow(g1.getSalary()?-?g2.getSalary(),2)

);

returnresult;

}

}

6,DomParser.java

packagekmeans;

importjavax.xml.parsers.*;

importjava.io.*;

importjava.util.ArrayList;

importorg.w3c.dom.*;

importorg.xml.sax.SAXException;

publicclassDomParser?{

privateArrayList?generals?=newArrayList();

publicArrayList?prepare(){

//?get?dom解析器工廠

DocumentBuilderFactory?factory?=?DocumentBuilderFactory.newInstance();

factory.setIgnoringElementContentWhitespace(true);

//?get?dom?解析器

DocumentBuilder?builder?=null;

try{

builder?=?factory.newDocumentBuilder();

}catch(ParserConfigurationException?e)?{

e.printStackTrace();

}

//?解析文檔

Document?doc?=null;

try{

doc?=?builder.parse(newFile("general.xml"));

}catch(SAXException?e)?{

e.printStackTrace();

}catch(IOException?e)?{

e.printStackTrace();

}

//?取得根節點

Element?generalList?=?doc.getDocumentElement();

//?得到所有row節點

NodeList?nodeList?=?generalList.getElementsByTagName("Row");

//?便利所有row節點

for(inti?=1;?i?

System.out.println("------------the?"+?i

+"?element--------------");

Node?row?=?nodeList.item(i);

//?取得所有Data數據

NodeList?attList?=?row.getChildNodes();

//?取得數據中的各個部分,?并加入ArrayList中

generals.add(newGeneral(Tool.xingji(attList.item(1)

.getTextContent()),?attList.item(3).getTextContent(),

Integer.parseInt(attList.item(5).getTextContent()),

Integer.parseInt(attList.item(7).getTextContent()),

Integer.parseInt(attList.item(9).getTextContent()),

Integer.parseInt(attList.item(11).getTextContent()),

Tool.change(attList.item(13).getTextContent()),

Tool.change(attList.item(15).getTextContent()),

Tool.change(attList.item(17).getTextContent()),

Tool.change(attList.item(19).getTextContent()),

Tool.change(attList.item(21).getTextContent()),

Integer.parseInt(attList.item(23).getTextContent()),

Integer.parseInt(attList.item(25).getTextContent()),

Integer.parseInt(attList.item(27).getTextContent()),

Integer.parseInt(attList.item(29).getTextContent()),

Integer.parseInt(attList.item(31).getTextContent())));

System.out.println("?星級:"

+?Tool.xingji(attList.item(1).getTextContent())?+"?姓名:"

+?attList.item(3).getTextContent()?+"?統率:"

+?attList.item(5).getTextContent()?+"?武力:"

+?attList.item(7).getTextContent()?+"?智力:"

+?attList.item(9).getTextContent()?+"?政治:"

+?attList.item(11).getTextContent()?+"槍兵:"

+?Tool.change(attList.item(13).getTextContent())?+"?戟兵:"

+?Tool.change(attList.item(15).getTextContent())?+"?弩兵:"

+?Tool.change(attList.item(17).getTextContent())?+"?騎兵:"

+?Tool.change(attList.item(19).getTextContent())?+"?兵器:"

+?Tool.change(attList.item(21).getTextContent())?+"?統武:"

+?attList.item(23).getTextContent()?+"?統智:"

+?attList.item(25).getTextContent()?+"?統武智:"

+?attList.item(27).getTextContent()?+"?統武智政:"

+?attList.item(29).getTextContent()?+"?50級工資:"

+?attList.item(31).getTextContent()?+"?");

/*

*?for?(int?j?=?0;?j?

*?System.out.println(attList.item(j).getTextContent());?}

*/

}

returngenerals;

}

}

7,TestKmeans.java

packagekmeans;

publicclassTestKmeans?{

publicstaticvoidmain(String[]?args)?{

Kmeans_eold?kmeans?=newKmeans_eold();

kmeans.print(kmeans.getResult());

}

}

附部分general.xml:

xmlns:o="urn:schemas-microsoft-com:office:office"

xmlns:x="urn:schemas-microsoft-com:office:excel"

xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"

xmlns:html="http://www.w3.org/TR/REC-html40">

2006-09-13T11:21:51Z

2012-04-26T13:39:57Z

14.00

5850

11070

0

90

False

False

x:FullRows="1"ss:DefaultColumnWidth="54"ss:DefaultRowHeight="13.5">

星級

姓名

統率

武力

智力

政治

槍兵

戟兵

弩兵

騎兵

兵器

統武

統智

統武智

統武智政

50級工資

★★★★★

呂布

87

100

26

13

161

194

257

350

19250

★★★★★

張飛

85

98

30

22

168

193

264

350

19250

★★★★★

関羽

95

97

75

62

165

191

260

347

19085

★★★★★

馬超

88

97

44

26

168

187

259

353

19415

★★★★★

趙雲

91

96

76

65

192

170

267

329

18095

★★★★★

許褚

65

96

36

20

161

101

197

217

11935

★★★★★

典韋

56

95

35

29

151

91

186

215

11825

★★★★★

甘寧

86

94

76

18

181

183

270

351

19305

★★★★★

龐德

80

94

70

44

174

150

244

288

15840

★★★★★

文醜

78

94

25

25

172

103

197

222

12210

★★★★★

黃忠

86

93

60

52

185

171

263

321

17655

★★★★★

太史慈

82

93

66

58

175

148

241

299

16445

★★★★★

顏良

79

93

42

32

172

121

214

246

13530

★★★★★

張遼

93

92

78

58

183

167

257

330

18150

★★★★★

孫策

92

92

69

70

130

192

230

325

17875

★★★★★

魏延

81

92

69

49

173

150

242

291

16005

★★★★★

華雄

81

92

56

40

173

137

229

269

14795

最終運行結果截圖如下:

讀取到得武將數據如圖,

運行后的部分截圖:

【編輯推薦】

【責任編輯:小林 TEL:(010)68476606】

點贊 0

總結

以上是生活随笔為你收集整理的java如何做聚类分析_K-means算法的Java实现 聚类分析681个三国武将的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。