knn算法---java简单实现

knn算法---java简单实现
knn算法⼜叫k邻近算法
在⼀个坐标系中标记已经有标签的⼏个点,然后定下⼀个未知的点,通过选取最近的k个点。查看这k个点的标签。然后给新未知点定义标签。
机器学习实战中提到通过接吻次数与打架次数⽴坐标系,然后通过距离判断该⽚属于爱情⽚还是动作⽚。
但是上⾯⽤的是Python的代码,我这⾥⽤java的代码写⼀次。
package Study.Number.Util;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import org.junit.Test;
public class KnnUtil {
@Test
public void test(){
float[][] in={{7,1},{8,2},{1,6},{1,9},{9,4},{7,3},{2,2}};
float[] b={3,1};
System.out.println(    basePnn(in,3,b));
}
public List<Map> basePnn(float[][] input,int k,float[] base){
/*float[][] output=new float[k][];*/
数控回转工作台设计List<Map> list=new ArrayList();
Map map=new HashMap();
float maxX=0;
float maxY=0;
float x;
float y;
int xlen;
int ylen;
for(int i=0;i<input.length;i++){
if(maxX<input[i][0]){
maxX=input[i][0];
}
}
for(int i=0;i<input.length;i++){
if(maxY<input[i][1]){
maxY=input[i][1];
}
}
int bx=(int) ((base[0]/maxX)*100);
int by=(int) ((base[1]/maxX)*100);三诺h222
生产测井
for(int i=0;i<input.length;i++){
Map maps=new HashMap();
x=input[i][0];
y=input[i][1];
xlen=(int) ((x/maxX)*100);
ylen=(int) ((y/maxX)*100);
xlen=xlen-bx;
ylen=ylen-by;
maps.put("index", i);
maps.put("len", Math.sqrt(xlen*xlen+ylen*ylen));
list.add(maps);
}
List link=new LinkedList();
瑶山double now;
double old;
for(int i=0;i<list.size();i++){
for(int j=0;j<(list.size()-i);j++){
if(j>0){
now=(Double) (j).get("len");
摩托罗拉a6288
old=(Double) (j-1).get("len");
if(now<old){
Map (j-1);
list.set(j-1, (j));
list.set(j, m);
}
}
}
}
return list.subList(0, k);
}
}
这个⽅法有时候可以很好的区分爱情⽚跟动作⽚。
滑线变阻器但是也有⼀些疑惑,⽐如接吻的次数明显会远远少于打架的次数,两者距离的控制衡量不太好掌握,,容易动作⽚接吻两次就判断成了爱情⽚的情况。
再则是相亲问题。⼥⼦把帅,跟多⾦作为坐标系,很难区分帅⼜多⾦的⼈与丑⼜穷的⼈。
第⼀个算法。玩玩,仅此⽽已

本文发布于:2024-09-21 19:54:44,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/326210.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:次数   接吻   标签   距离   爱情
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议