KNN算法学习总结

原视频链接


一、Knn是什么?

寻找未知分类的数据,以离他最近的已知n个数据,来看他应该属于哪一类

如图,k值视为临近范围。
如果K=3,那么离绿色点最近的有2个红色三角形和1个蓝色的正方形,这3个点投票,于是绿色的这个待分类点属于红色的三角形。
如果K=5,那么离绿色点最近的有2个红色三角形和3个蓝色的正方形,这5个点投票,于是绿色的这个待分类点属于蓝色的正方形。可见K值的选择对分类的结果还是有很大的影响。

在这里插入图片描述
距离度量: sklearn knn的使用,以及cross validation交叉验证

二、应用步骤

1.准备一些数据csv文件(这里以癌症检测数据为例)
2.在pycharm引入csv包(即可读取又可输出)

代码如下:

import  csv

2.读入数据

代码如下:

with open('Prostate_Cancer.csv', 'r') as file:  # 打开csv文件并读取,需要先下载此文件
    reader = csv.DictReader(file)  # DictReader可以以字典的方式读取文件

    datas = [row for row in reader]  # 循环读取数据
  

3.打乱数据集并分段数据作为训练和测试类

random.shuffle(datas)  # 引用random包,随机打乱数据集,使每次训练的顺序不同达到训练目的
n = len(datas)//3  #
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Weka是一个非常流行的机器学习工具,它提供了各种算法和工具来进行数据挖掘和机器学习任务。其中之一就是K最近邻(KNN算法。 要使用Weka实现KNN算法,首先需要导入Weka库并加载数据集。然后,可以使用Instance类来表示数据集中的每个实例。接下来,需要创建一个KNN分类器,并设置K值和距离度量方法。最后,使用训练数据集来训练分类器,并使用测试数据集进行预测。 下面是一个简单的示例代码,演示如何使用Weka实现KNN算法: ```java import weka.core.Instance; import weka.core.Instances; import weka.core.converters.ConverterUtils.DataSource; import weka.classifiers.lazy.IBk; public class KNNExample { public static void main(String[] args) throws Exception { // 加载数据集 DataSource source = new DataSource("path/to/your/dataset.arff"); Instances dataset = source.getDataSet(); dataset.setClassIndex(dataset.numAttributes() - 1); // 创建KNN分类器 IBk knn = new IBk(); knn.setKNN(3); // 设置K值 knn.getNearestNeighbourSearchAlgorithm().setDistanceFunction(new weka.core.EuclideanDistance()); // 设置距离度量方法 // 训练分类器 knn.buildClassifier(dataset); // 预测新实例 Instance newInstance = dataset.instance(0); // 假设要预测第一个实例 double predictedClass = knn.classifyInstance(newInstance); String predictedClassName = dataset.classAttribute().value((int) predictedClass); System.out.println("预测结果: " + predictedClassName); } } ``` 请注意,上述代码中的"path/to/your/dataset.arff"应替换为您自己的数据集文件路径。此外,还可以根据需要调整K值和距离度量方法。 希望这个示例能帮助您开始使用Weka实现KNN算法。如果您有任何进一步的问题,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值