java實(shí)現(xiàn)聚類代碼 java聚合是什么意思

用 k-means方法對(duì)下面的數(shù)據(jù)進(jìn)行分類,k=3,要求用java寫代碼 怎么做

第一次迭代下,除了a4點(diǎn),其他點(diǎn)都?xì)w為一類c1:(a1 a2 a3 a5);c2:(a4) 聚類中心:c1:(2,2);c2(5,4)(聚類中心的計(jì)算方式是平均類中所有點(diǎn))

創(chuàng)新互聯(lián)專注于網(wǎng)站建設(shè),為客戶提供成都網(wǎng)站建設(shè)、成都做網(wǎng)站、網(wǎng)頁(yè)設(shè)計(jì)開發(fā)服務(wù),多年建網(wǎng)站服務(wù)經(jīng)驗(yàn),各類網(wǎng)站都可以開發(fā),成都品牌網(wǎng)站建設(shè),公司官網(wǎng),公司展示網(wǎng)站,網(wǎng)站設(shè)計(jì),建網(wǎng)站費(fèi)用,建網(wǎng)站多少錢,價(jià)格優(yōu)惠,收費(fèi)合理。

第二次迭代下,c1(a1 a2 a5);c2(a3 a4) 聚類中心c1:(4/3,5/3);c2(9/2 7/2)

第三次迭代下,c1(a1 a2 a5);c2(a3 a4) 聚類中心c1:(4/3,5/3);c2(9/2 7/2)結(jié)果已經(jīng)穩(wěn)定跳出循環(huán)

k-means聚類算法的java代碼實(shí)現(xiàn)文本聚類

K-MEANS算法:

k-means 算法接受輸入量 k ;然后將n個(gè)數(shù)據(jù)對(duì)象劃分為 k個(gè)聚類以便使得所獲得的聚類滿足:同一聚類中的對(duì)象相似度較高;而不同聚類中的對(duì)象相似度較小。聚類相似度是利用各聚類中對(duì)象的均值所獲得一個(gè)“中心對(duì)象”(引力中心)來(lái)進(jìn)行計(jì)算的。

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

具體如下:

輸入:k, data[n];

(1) 選擇k個(gè)初始中心點(diǎn),例如c[0]=data[0],…c[k-1]=data[k-1];

(2) 對(duì)于data[0]….data[n], 分別與c[0]…c[n-1]比較,假定與c[i]差值最少,就標(biāo)記為i;

(3) 對(duì)于所有標(biāo)記為i點(diǎn),重新計(jì)算c[i]=/標(biāo)記為i的個(gè)數(shù);

(4) 重復(fù)(2)(3),直到所有c[i]值的變化小于給定閾值。

算法實(shí)現(xiàn)起來(lái)應(yīng)該很容易,就不幫你編寫代碼了。

spark 聚類java實(shí)現(xiàn) 如何和前臺(tái)對(duì)接

以前做項(xiàng)目時(shí)候?qū)懙拇a,數(shù)據(jù)是一維的,多維的也一樣,把距離計(jì)算的改一改就行int?term?=?Math.abs(dotlist.get(centerIndex[j]).x-?dotlist.get(i).x);

[java]?view?plaincopy

package?uestc.dmlab.call;??

import?java.io.BufferedReader;??

import?java.io.FileReader;??

import?java.security.KeyStore.Entry;??

import?java.util.HashMap;??

import?java.util.HashSet;??

import?java.util.Iterator;??

import?java.util.LinkedList;??

import?java.util.List;??

import?java.util.Map;??

import?java.util.Random;??

import?java.util.Set;??

public?class?Clustering?{??

/**?

*??

*?@param?fileName?

*????????????文件中每個(gè)字段對(duì)應(yīng)一個(gè)概率?

*?@param?k?

*????????????聚成k個(gè)類?

*?@param?minDistance?

*????????????聚類中心位移小于minDistance時(shí)停止迭代?

*?@return?

*/??

public?static?HashMapString,?Integer?cluster(String?fileName,?int?k,??

int?minDistance)?{??

try?{??

BufferedReader?br?=?new?BufferedReader(new?FileReader(fileName));??

ListDot?dotlist?=?new?LinkedListDot();??

String?line;??

int?count?=?0;//?行數(shù)??

while?((line?=?br.readLine())?!=?null)?{??

String?s[]?=?line.split(",");??

Dot?dot?=?new?Dot();??

dot.isCenter?=?false;??

dot.isVirtual?=?false;??

dot.name?=?s[0];??

//?if(s.length4){??

//?System.out.println(line);??

//?}??

dot.x?=?Integer.parseInt(s[3]);??

dotlist.add(dot);??

count++;??

}??

if?(count??k)?{??

k?=?count;??

}??

//?隨機(jī)初始化k個(gè)聚類中心??

int?centerIndex[]?=?new?int[k];?//?存儲(chǔ)k個(gè)中心點(diǎn)在dotlist中的索引??

int?centerNum?=?k;??

while?(centerNum??0)?{??

int?index?=?new?Random().nextInt(count);??

if?(!dotlist.get(index).isCenter)?{??

centerNum--;??

dotlist.get(index).isCenter?=?true;??

centerIndex[centerNum]?=?index;??

}??

}??

//?K個(gè)聚類??

Cluster[]?clusers?=?new?Cluster[k];??

boolean?flag?=?true;??

while?(flag)?{??

flag?=?false;??

clusers?=?new?Cluster[k];??

for?(int?i?=?0;?i??clusers.length;?i++)?{??

clusers[i]?=?new?Cluster();??

}??

//System.out.println(clusers.length);??

//?找到離第i個(gè)點(diǎn)最近的聚類中心??

for?(int?i?=?0;?i??dotlist.size();?i++)?{??

//?該點(diǎn)不是中心點(diǎn)也不是虛擬點(diǎn)就計(jì)算它與所有中心點(diǎn)的距離并取最小值??

//?if(!dotlist.get(i).isCenter!dotlist.get(i).isVirtual){??

if?(!dotlist.get(i).isVirtual)?{??

int?distance?=?Integer.MAX_VALUE;??

int?c?=?0;//?記錄離該節(jié)點(diǎn)最近的中心點(diǎn)的索引??

for?(int?j?=?0;?j??k;?j++)?{??

int?term?=?Math.abs(dotlist.get(centerIndex[j]).x??

-?dotlist.get(i).x);??

if?(distance??term)?{??

distance?=?term;??

c?=?j;??

}??

}??

clusers[c].dots.add(i);??

}??

}??

//?重新計(jì)算聚類中心??

for?(int?i?=?0;?i??k;?i++)?{??

Cluster?cluster?=?clusers[i];??

if?(cluster.dots.size()??0)?{?//若該類中有點(diǎn)??

int?sum?=?0;??

for?(int?j?=?0;?j??cluster.dots.size();?j++)?{??

sum?+=?dotlist.get(cluster.dots.get(j)).x;??

}??

Dot?dot?=?new?Dot();??

dot.x?=?sum?/?cluster.dots.size();??

dot.isCenter?=?true;??

dot.isVirtual?=?true;??

//?新舊聚類中心的距離??

int?term?=?Math.abs(dotlist.get(centerIndex[i]).x??

-?dot.x);??

if?(term??minDistance)??

flag?=?true;??

dotlist.add(dot);??

centerIndex[i]?=?dotlist.indexOf(dot);?//?第i個(gè)聚類的中心改變??

}??

}??

}??

//?生成分類映射??

HashMapString,?Integer?map?=?new?HashMapString,?Integer();??

for?(Dot?dot?:?dotlist)?{??

if?(dot.isVirtual?==?false)?{??

int?className?=?-1;??

for?(int?i?=?0;?i??k;?i++)?{??

if?(clusers[i].dots.contains(dotlist.indexOf(dot)))??

className?=?i;??

}??

map.put(dot.name,?className);??

}??

}??

return?map;??

}?catch?(Exception?e)?{??

e.printStackTrace();??

}??

return?new?HashMapString,?Integer();??

}??

public?static?void?main(String[]?args)?{??

MapString,?Integer?map?=?Clustering.cluster(??

"C:/Documents?and?Settings/Administrator/桌面/123.txt",?2,?0);??

IteratorMap.EntryString,?Integer?it?=?map.entrySet().iterator();??

while(it.hasNext()){??

Map.EntryString,?Integer?entry?=?it.next();??

System.out.println(entry.getKey()+","+entry.getValue());??

}??

}??

}??

class?Dot?{??

String?name;??

int?x;??

boolean?isCenter;??

boolean?isVirtual;??

}??

class?Cluster?{??

//?記錄了該類中點(diǎn)的索引值??

LinkedListInteger?dots?=?new?LinkedListInteger();

當(dāng)前題目:java實(shí)現(xiàn)聚類代碼 java聚合是什么意思
文章URL:http://muchs.cn/article14/doecede.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、定制開發(fā)網(wǎng)站導(dǎo)航、做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司