`
zhoupinheng
  • 浏览: 36172 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java实现K近邻算法

阅读更多
package knn;

import java.util.HashMap;
import java.util.Map;
import java.util.PriorityQueue;

public class KNN {

	public String getKnnValue(double[][] value, String[] tags, int k, double[] verifyValue) {

		String tag = null;
		if (value == null || tags == null || verifyValue == null || k < 1) {
			// para error
		} else {
			if (value.length == tags.length && value[0].length == verifyValue.length) {
				PriorityQueue<Item> queue = new PriorityQueue<Item>(k + 1);
				for (int i = 0; i < value.length; i++) {
					queue.add(new Item(getOuDistance(value[i], verifyValue), tags[i]));
					if (queue.size() > k) {
						queue.poll();
					}
				}

				Map<String, Item> map = new HashMap<String, Item>();
				for (Item item : queue) {
					Item countItem = null;
					if (!map.containsKey(item.strValue)) {
						map.put(item.strValue, new Item(0, item.strValue));
					}
					countItem = map.get(item.strValue);
					countItem.numValue = countItem.numValue + 1.0;
				}

				queue.clear();
				queue.addAll(map.values());

				tag = queue.poll().strValue;
			}
		}

		return tag;
	}

	private double getOuDistance(double[] fs, double[] validateValue) {
		double value = 0;
		for (int i = 0; i < fs.length; i++) {
			value += Math.pow((fs[i] - validateValue[i]), 2.0);
		}
		return Math.sqrt(value);
	}

	private class Item implements Comparable<Item> {
		public Item(double num, String str) {
			this.numValue = num;
			this.strValue = str;
		}

		public double numValue = 0;
		public String strValue;

		@Override
		public int compareTo(Item o) {
			if (numValue > o.numValue) {
				return -1;
			} else if (numValue < o.numValue) {
				return 1;
			} else {
				return 0;
			}
		}
	}

}

 

分享到:
评论

相关推荐

    K近邻算法java实现

    在这个"K近邻算法Java实现"的实验中,我们可以深入理解KNN的实现细节。首先,我们需要准备数据集,这通常包括特征向量和对应的类别标签。在Java中,可以使用ArrayList或其他集合结构来存储样本数据。每个样本是一个...

    这是java实现机器学习算法中的k近邻算法

    总结起来,这个Java实现的K近邻算法是一个基础但重要的机器学习工具,它能用于分类问题,并通过自定义距离度量和调整K值来适应不同的数据集和应用场景。在处理小规模数据集时,KNN算法效果良好,但在大规模数据集上...

    java实现k-近邻算法分类器

    用java实现k-近邻算法分类器的完整工程代码,测试结果正确

    基于Java实现的高效K近邻算法设计源码

    本项目为基于Java语言的高效K近邻算法设计源码,包含24个文件,其中包括10个XML配置文件、8个Java源文件、2个JAR包文件以及其他相关文件,旨在提供一种快速且可靠的K近邻算法实现。

    Java实现kNN算法

    Java实现k近邻(kNN)算法是机器学习领域中一种基础且重要的算法,主要用于分类和回归问题。kNN算法基于实例的学习,它不预先建立任何模型,而是将新数据分类或预测为与其最近的k个训练样本中最常见的类别。在这个讨论...

    k近邻PPT课件及java算法实现.rar

    【K近邻算法(K-Nearest Neighbors, KNN)】 K近邻算法是机器学习领域中最基础的算法之一,属于监督学习方法。它的基本思想是:对于一个未知类别的数据点,我们可以通过查找训练集中与其最接近的K个已知类别的数据...

    分类决策树近邻算法JAVA实现.rar_java决策树算法_tearsyeq_分类决策树近邻算法Java

    在Java环境中,我们可以使用不同的算法来实现决策树,如KNN(K-最近邻)、C4.5和ID3。 1. **K-最近邻(K-Nearest Neighbors, KNN)**: KNN是一种基于实例的学习,属于懒惰学习类别。它并不立即对数据进行任何假设...

    k-means算法Java实现

    在Java中实现k-means算法,我们需要以下几个关键步骤: 1. **初始化质心**:从数据集中随机选择k个数据点作为初始质心,可以使用`Random`类来实现。 2. **数据分配**:遍历每个数据点,计算它与所有质心的距离,将...

    K近邻java实现.rar

    《K近邻算法在Java中的实现详解》 K近邻(K-Nearest Neighbors,简称KNN)是一种基础且重要的监督学习算法,广泛应用于分类和回归问题中。本资源提供了一种用Java语言实现KNN的方法,包括源代码和测试数据,有助于...

    机器学习算法KNN(K近邻)应用实例——实现对是否患糖尿病的预测

    机器学习算法KNN(K近邻)应用实例 使用KNN(K近邻)算法对是否容易得糖尿病问题进行预测。 资源中包括完成的KNN算法训练和实现过程,以及用于机器学习的糖尿病数据集。 数据特征包括: Pregnancies:怀孕次数 ...

    用java实现knn算法

    在本项目中,我们将探讨如何使用Java编程语言实现K近邻(K-Nearest Neighbors,简称KNN)算法,并结合Access数据库中的表数据进行电影类型的分类。KNN是一种监督学习算法,常用于分类和回归任务,特别是对于新数据点...

    基于Java实现 KNN(K-近邻分类)算法【100013029】

    我的 MapReduce 程序实现了 KNN(K-近邻分类)算法,使用的数据集是非常经典的 KNN 算法数据集—Iris 数据集。 Iris 数据集也称鸢尾花卉数据集,由 Fisher,1936 收集整理。数据集包含 150 个数据样本,分为 3 类,每...

    KNN最近邻算法java实现

    【Java实现】 在Java中实现KNN算法,首先我们需要准备数据集,这通常是CSV或其他格式的数据文件,包含特征和对应的类别标签。然后,我们需要设计一个数据结构来存储样本和它们的标签,例如使用二维数组或者自定义的...

    KNN算法实验报告【Java实现】.doc

    KNN算法实验报告【Java实现】 KNN算法是机器学习领域中一种常用的分类算法,它的主要思想是如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。...

    KNN算法实现分类问题(JAVA)实现

    在这个Java实现的KNN算法中,我们主要关注其在分类问题上的应用。下面将详细阐述KNN算法的基本原理、实现过程以及在Java编程中的一些关键点。 ### KNN算法简介 KNN算法的核心思想是通过找到训练集中与未知类别的...

    KNN算法java实现

    总之,这个KNN算法的Java实现是一个很好的学习资源,可以帮助初学者理解算法的基本工作原理,并提供了一个实际应用的起点。通过阅读和分析这段代码,你可以深入理解数据挖掘中的分类算法,掌握如何在实际项目中应用...

    基于matlab采用K-近邻算法实现MNIST手写体数据集的识别.zip

    接下来,我们要介绍**K-近邻算法(KNN)**。KNN是一种监督学习算法,用于分类和回归问题。它的基本思想是:对于新的未知样本,将其分类为与它最接近的K个已知样本中出现最多的类别。在这个项目中,KNN用于识别MNIST...

    mnist手写体的识别采用KNN算法,Java实现

    标题中的“mnist手写体的识别采用KNN算法,Java实现”涉及到的是一个计算机视觉领域的经典问题,即使用机器学习方法对MNIST数据集的手写数字进行分类。MNIST数据集是包含手写数字图像的大型数据库,常用于训练各种...

    基于K-means的文本聚类实验 Java

    接下来,我们将使用Java实现K-means算法: 1. 定义数据结构:创建一个表示文本的类,包含单词频率向量或其他向量化表示。 2. 实现距离计算:选择合适的距离度量,如欧氏距离或余弦相似度。 3. 实现K-means逻辑:按照...

    knn.zip_knn_knn算法_实现KNN算法java

    KNN(K-Nearest Neighbors)算法,即K近邻算法,是机器学习领域中最基础且重要的算法之一。它基于实例的学习,通过寻找训练集中与新样本最接近的K个邻居,依据邻居的类别进行投票,从而决定新样本的类别。在本篇文章...

Global site tag (gtag.js) - Google Analytics