91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 3KB
    文件類(lèi)型: .zip
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2021-06-14
  • 語(yǔ)言: Java
  • 標(biāo)簽: KNN??

資源簡(jiǎn)介

knn(java實(shí)現(xiàn))http://blog.csdn.net/u011067360/article/details/45937327

資源截圖

代碼片段和文件信息

package?Marchinglearning.knn2;

import?java.util.ArrayList;
import?java.util.Comparator;
import?java.util.HashMap;
import?java.util.List;
import?java.util.Map;
import?java.util.PriorityQueue;

/**
?*?KNN算法主體類(lèi)
?*/
public?class?KNN?{
/**
?*?設(shè)置優(yōu)先級(jí)隊(duì)列的比較函數(shù),距離越大,優(yōu)先級(jí)越高
?*/
private?Comparator?comparator?=?new?Comparator()?{
public?int?compare(KNNNode?o1?KNNNode?o2)?{
if?(o1.getDistance()?>=?o2.getDistance())?{
return?1;
}?else?{
return?0;
}
}
};
/**
?*?獲取K個(gè)不同的隨機(jī)數(shù)
?*?@param?k?隨機(jī)數(shù)的個(gè)數(shù)
?*?@param?max?隨機(jī)數(shù)最大的范圍
?*?@return?生成的隨機(jī)數(shù)數(shù)組
?*/
public?List?getRandKNum(int?k?int?max)?{
List?rand?=?new?ArrayList(k);
for?(int?i?=?0;?i? int?temp?=?(int)?(Math.random()?*?max);
if?(!rand.contains(temp))?{
rand.add(temp);
}?else?{
i--;
}
}
return?rand;
}
/**
?*?計(jì)算測(cè)試元組與訓(xùn)練元組之前的距離
?*?@param?d1?測(cè)試元組
?*?@param?d2?訓(xùn)練元組
?*?@return?距離值
?*/
public?double?calDistance(List?d1?List?d2)?{
double?distance?=?0.00;
for?(int?i?=?0;?i? distance?+=?(d1.get(i)?-?d2.get(i))?*?(d1.get(i)?-?d2.get(i));
}
return?distance;
}
/**
?*?執(zhí)行KNN算法,獲取測(cè)試元組的類(lèi)別
?*?@param?datas?訓(xùn)練數(shù)據(jù)集
?*?@param?testData?測(cè)試元組
?*?@param?k?設(shè)定的K值
?*?@return?測(cè)試元組的類(lèi)別
?*/
public?String?knn(List>?datas?List?testData?int?k)?{
PriorityQueue?pq?=?new?PriorityQueue(k?comparator);
List?randNum?=?getRandKNum(k?datas.size());
System.out.println(“randNum:“+randNum.toString());
for?(int?i?=?0;?i? int?index?=?randNum.get(i);
List?currData?=?datas.get(index);
String?c?=?currData.get(currData.size()?-?1).toString();
//System.out.println(“currData:“+currData+“c:“+c+“testData“+testData);
//計(jì)算測(cè)試元組與訓(xùn)練元組之前的距離
KNNNode?node?=?new?KNNNode(index?calDistance(testData?currData)?c);
pq.add(node);
}
for?(int?i?=?0;?i? List?t?=?datas.get(i);
//System.out.println(“testData:“+testData);
//System.out.println(“t:“+t);
double?distance?=?calDistance(testData?t);
//System.out.println(“distance:“+distance);
KNNNode?top?=?pq.peek();
if?(top.getDistance()?>?distance)?{
pq.remove();
pq.add(new?KNNNode(i?distance?t.get(t.size()?-?1).toString()));
}
}

return?getMostClass(pq);
}
/**
?*?獲取所得到的k個(gè)最近鄰元組的多數(shù)類(lèi)
?*?@param?pq?存儲(chǔ)k個(gè)最近近鄰元組的優(yōu)先級(jí)隊(duì)列
?*?@return?多數(shù)類(lèi)的名稱(chēng)
?*/
private?String?getMostClass(PriorityQueue?pq)?{
Map?classCount?=?new?HashMap();
for?(int?i?=?0;?i? KNNNode?node?=?pq.remove();
String?c?=?node.getC();
if?(classCount.containsKey(c))?{
classCount.put(c?classCount.get(c)?+?1);
}?else?{
classCount.put(c?1);
}
}
int?maxIndex?=?-1;
int?maxCount?=?0;
object[]?classes?=?classCount.keySet().toArray();
for?(int?i?=?0;

?屬性????????????大小?????日期????時(shí)間???名稱(chēng)
-----------?---------??----------?-----??----
?????文件????????3372??2015-05-23?21:39??knn2\KNN.java
?????文件?????????712??2015-05-23?21:30??knn2\KNNNode.java
?????文件????????1907??2015-05-23?21:31??knn2\TestKNN.java
?????文件?????????203??2015-05-23?20:24??knndata2\datafile.data
?????文件?????????191??2015-05-23?20:24??knndata2\testfile.data

評(píng)論

共有 條評(píng)論