机器学习实战KNN的java实现

package com.haolidong.kNN;

import java.util.Comparator;
/**
 * 
 * @author haolidong
 * @Description:  [该类主要用于对距离信息的index进行自定义的排序(从大到小)]  
 */
public class ComparatorImpl implements Comparator<Distances>{

	@Override
	public int compare(Distances arg0, Distances arg1) {
		// TODO Auto-generated method stub
		double d0=arg0.getDistances();
		double d1=arg1.getDistances();
		if(d0>d1){
			return 1;
		}
		else if(d0<d1){
			return -1;
		}
		else{
			return 0;
		}
		
	}
	
}

package com.haolidong.kNN;
/**
 * 
 * @author haolidong
 * @Description:  [该类主要用于保存KNN的距离信息以及index]  
 */
public class Distances {
	double distances;
	public Distances()
	{
		distances=0.0;
		sortedDistIndicies=0;
	}
	public Distances(double distances, int sortedDistIndicies) {
		super();
		this.distances = distances;
		this.sortedDistIndicies = sortedDistIndicies;
	}
	int sortedDistIndicies;
	public double getDistances() {
		return distances;
	}
	public void setDistances(double distances) {
		this.distances = distances;
	}
	public int getSortedDistIndicies() {
		return sortedDistIndicies;
	}
	public void setSortedDistIndicies(int sortedDistIndicies) {
		this.sortedDistIndicies = sortedDistIndicies;
	}	
}
package com.haolidong.kNN;

import java.util.ArrayList;

/**
 * @author haolidong
 * @Description:  [该类主要用于保存信息矩阵以及矩阵标签]
 */
public class ReturnML {
	public ArrayList<ArrayList<Double>> AR;
	public ArrayList<String> AS;	
	public ReturnML() {
		// TODO Auto-generated constructor stub
		AR = new ArrayList<ArrayList<Double>>();
		AS = new ArrayList<String>();
	}
}
package com.haolidong.kNN;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map.Entry;
import java.util.Set;

public class KNN {

	public static ReturnML rml = new ReturnML();
	

	/**
	 * @param args
	 * @throws IOException
	 * @author haolidong
	 * @Description:  [主函数主要对于三个案例进行测试,分别为简单分类,约会测试以及手写识别]  
	 */
	public static void main(String[] args) throws IOException {

		testClassify();
		datingClassTest();
		handwritingClassTest();
	}
	
	/**
	 * @author haolidong
	 * @Description:  [简单的通过文本文件创建二维矩阵并输出]  
	 */
	public static void test(){
		file2matrix("I:\\10yue1\\machinelearninginaction\\Ch02\\datingTestSet2.txt");
		autoNorm();
		for (int i = 0; i < rml.AR.size(); i++) {
			System.
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值