K-最近邻算法

介绍

KNN算法全名为k-Nearest Neighbor,就是K最近邻的意思。KNN也是一种分类算法。但是与之前说的决策树分类算法相比,这个算法算是最简单的一个了。算法的主要过程为:

1、给定一个训练集数据,每个训练集数据都是已经分好类的。
2、设定一个初始的测试数据a,计算a到训练集所有数据的欧几里得距离,并排序。                       

3、选出训练集中离a距离最近的K个训练集数据。

4、比较k个训练集数据,选出里面出现最多的分类类型,此分类类型即为最终测试数据a的分类。

下面百度百科上的一张简图:


KNN算法实现

首先测试数据需要2块,1个是训练集数据,就是已经分好类的数据,比如上图中的非绿色的点。还有一个是测试数据,就是上面的绿点,当然这里的测试数据不会是一个,而是一组。这里的数据与数据之间的距离用数据的特征向量做计算,特征向量可以是多维度的。通过计算特征向量与特征向量之间的欧几里得距离来推算相似度。定义训练集数据trainInput.txt:

a 1 2 3 4 5 
b 5 4 3 2 1 
c 3 3 3 3 3 
d -3 -3 -3 -3 -3 
a 1 2 3 4 4 
b 4 4 3 2 1 
c 3 3 3 2 4 
d 0 0 1 1 -2 
待测试数据testInput,只有特征向量值:

1 2 3 2 4 
2 3 4 2 1 
8 7 2 3 5 
-3 -2 2 4 0 
-4 -4 -4 -4 -4 
1 2 3 4 4 
4 4 3 2 1 
3 3 3 2 4 
0 0 1 1 -2 
下面是主程序:

package DataMing_KNN;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java
  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
可以使用Python中的Pandas库来读取CSV文件。具体步骤如下: 1. 安装Pandas库:在命令行中输入`pip install pandas`。 2. 导入Pandas库:在Python文件中写入以下代码: ```python import pandas as pd ``` 3. 读取CSV文件:使用Pandas库中的read_csv()函数来读取CSV文件,例如: ```python data = pd.read_csv('filename.csv') ``` 其中,'filename.csv'是你要读取的CSV文件名。 4. K-最近邻分类算法:K-最近邻分类算法是一种基于实例的学习方法,它通过比较新样本与训练集中的所有样本的距离来确定最近邻居。具体步骤如下: - 计算新样本与训练集中所有样本的距离; - 找到距离新样本最近的K个样本; - 根据这K个样本的类别标签来预测新样本的类别。 可以使用Python中的scikit-learn库来实现K-最近邻分类算法。具体步骤如下: 1. 安装scikit-learn库:在命令行中输入`pip install scikit-learn`。 2. 导入scikit-learn库:在Python文件中写入以下代码: ```python from sklearn.neighbors import KNeighborsClassifier ``` 3. 创建K-最近邻分类器:使用KNeighborsClassifier类来创建K-最近邻分类器,例如: ```python knn = KNeighborsClassifier(n_neighbors=3) ``` 其中,n_neighbors是你要选择的K值。 4. 训练分类器:使用fit()方法来训练分类器,例如: ```python knn.fit(X_train, y_train) ``` 其中,X_train是训练集中的特征数据,y_train是训练集中的类别标签。 5. 预测新样本的类别:使用predict()方法来预测新样本的类别,例如: ```python y_pred = knn.predict(X_test) ``` 其中,X_test是新样本的特征数据,y_pred是预测出的类别标签。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值