xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 3KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2021-06-14
  • 語言: Java
  • 標簽: KNN??

資源簡介

knn(java實現)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算法主體類
?*/
public?class?KNN?{
/**
?*?設置優先級隊列的比較函數,距離越大,優先級越高
?*/
private?Comparator?comparator?=?new?Comparator()?{
public?int?compare(KNNNode?o1?KNNNode?o2)?{
if?(o1.getDistance()?>=?o2.getDistance())?{
return?1;
}?else?{
return?0;
}
}
};
/**
?*?獲取K個不同的隨機數
?*?@param?k?隨機數的個數
?*?@param?max?隨機數最大的范圍
?*?@return?生成的隨機數數組
?*/
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;
}
/**
?*?計算測試元組與訓練元組之前的距離
?*?@param?d1?測試元組
?*?@param?d2?訓練元組
?*?@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;
}
/**
?*?執行KNN算法,獲取測試元組的類別
?*?@param?datas?訓練數據集
?*?@param?testData?測試元組
?*?@param?k?設定的K值
?*?@return?測試元組的類別
?*/
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);
//計算測試元組與訓練元組之前的距離
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個最近鄰元組的多數類
?*?@param?pq?存儲k個最近近鄰元組的優先級隊列
?*?@return?多數類的名稱
?*/
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;

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????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

評論

共有 條評論