KNN算法的实现

import pandas as pd
from math import dist k = int(input("请输入k值:"))
dataTest = pd.read_csv('iristest.csv', header=None).values
trainData = pd.read_csv('iristrain.csv', header=None).values # 用于我懒得把测试数据和训练数据封装成不同类,所以就会在成员变量里面同时出现测试数据专有的属性和测试数据的专有属性
class Data:
"""
这个类用来封装每一个数据的信息
info:数据的前4列
Label:数据标签
predict_label:数据的使用knn算法预测的标签
dis:数据离测试数据的距离
"""
def __init__(self, info, label, dis=None, predict_label=None):
self.info = info
self.label = label
self.dis = dis
self.predict_label = predict_label def __str__(self):
return "info={0}、dis={1}、label={2}、predict_label={3}".format(self.info, self.dis, self.label,
self.predict_label) # 重写__lt__函数方便sort直接排序
def __lt__(self, other):
return self.dis < other.dis trainDataInClass = []
for item in trainData:
trainDataInClass.append(Data(item[0:4], item[-1])) def getTestLabel(test_data):
"""
:param test_data: 输入点
:return: 返回该点的类别
本函数用于做输入数据的分类
"""
# 定义一个列表,用来存储距离
distance = []
for m in trainDataInClass:
# dist是一个直接计算欧氏距离的函数
m.dis = dist(m.info, test_data.info)
distance.append(m)
distance.sort() # 定义一个列表来存储最近前k名的Label
label_top = []
for j in range(0, k):
label_top.append(distance[j].label) test_data.predict_label = max(label_top, key=label_top.count)
return test_data # 测试数据
# 定义一个存储预测之后的数据的列表
predict_list = []
for item in dataTest:
predict_list.append(getTestLabel(Data(item[0:4], item[-1]))) # 定义一个变量用于存储预测准确的数据数量
predict_true_cnt = 0
for item in predict_list:
if item.label == item.predict_label:
predict_true_cnt += 1
# 计算精度
precision = predict_true_cnt / len(predict_list)
print(precision)

没有做交叉验证,所以附上训练数据集和测试数据集

测试数据集,点击下载

直接显示

训练数据集,点击下载

直接显示

KNN算法实现对iris数据集的预测的更多相关文章

  1. kNN算法实例(约会对象喜好预测和手写识别)

    import numpy as np import operator import random import os def file2matrix(filePath):#从文本中提取特征矩阵和标签 ...

  2. 机器学习简要笔记(三)-KNN算法

    #coding:utf-8 import numpy as np import operator def classify(intX,dataSet,labels,k): ''' KNN算法 ''' ...

  3. 机器学习回顾篇(6):KNN算法

    1 引言 本文将从算法原理出发,展开介绍KNN算法,并结合机器学习中常用的Iris数据集通过代码实例演示KNN算法用法和实现. 2 算法原理 KNN(kNN,k-NearestNeighbor)算法, ...

  4. kNN算法:K最近邻(kNN,k-NearestNeighbor)分类算法

    一.KNN算法概述 邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一.所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它 ...

  5. Python 手写数字识别-knn算法应用

    在上一篇博文中,我们对KNN算法思想及流程有了初步的了解,KNN是采用测量不同特征值之间的距离方法进行分类,也就是说对于每个样本数据,需要和训练集中的所有数据进行欧氏距离计算.这里简述KNN算法的特点 ...

  6. 用Python实现支持向量机并处理Iris数据集

    SVM全称是Support Vector Machine,即支持向量机,是一种监督式学习算法.它主要应用于分类问题,通过改进代码也可以用作回归.所谓支持向量就是距离分隔面最近的向量.支持向量机就是要确 ...

  7. 吴裕雄--天生自然python机器学习实战:K-NN算法约会网站好友喜好预测以及手写数字预测分类实验

    实验设备与软件环境 硬件环境:内存ddr3 4G及以上的x86架构主机一部 系统环境:windows 软件环境:Anaconda2(64位),python3.5,jupyter 内核版本:window ...

  8. k-近邻(KNN) 算法预测签到位置

    分类算法-k近邻算法(KNN): 定义: 如果一个样本在特征空间中的k个最相似 (即特征空间中最邻近) 的样本中的大多数属于某一个类别,则该样本也属于这个类别 来源: KNN算法最早是由Cover和H ...

  9. iris数据集预测

    iris数据集预测(对比随机森林和逻辑回归算法) 随机森林 library(randomForest) #挑选响应变量 index <- subset(iris,Species != " ...

随机推荐

  1. MC-BE基岩版服务器搭建与日常维护

    有部分内容被csdn和谐,强烈建议移步我的个人博客以获得更好的排版和阅读体验: xzajyjs.cn. 目录 环境搭建 开始部署 日常维护 服务器的白名单机制 定时备份 服务器升级 服务器模组安装 搭 ...

  2. Python读取Excel表格

    前言:需要进行自动化办公或者自动化测试的朋友,可以了解下此文,掌握Python读取Excel表格的方法. 一.准备工作: 1.安装Python3.7.0(官网下载安装包) 2.安装Pycharm(官网 ...

  3. 免费 CDN 玩法 —— 文件一键上传到 NPM

    前言 unpkg.jsdelivr 等站点可加速 NPM 包文件,适合作为个人网站或演示案例的免费 CDN. 虽然上传文件到 NPM 很简单,创建 package.json 然后 npm publis ...

  4. 如何将jdk12的源码导入idea

    如何将jdk12的源码导入idea中 一 首先,在idea中新建一个java工程 接着,在本地找到jdk所在的文件目录,进入jdk目录,找到javasrc目录或者一个src.zip的压缩包, 在向下或 ...

  5. Vue2源码解读 - 响应式原理及简单实现

    直接进入主题了,想必大家都知道实现vue响应式核心方法就是 Object.defineProperty,那就从它开始说 Object.defineProperty 缺点: 深度监听,需要递归到底,一次 ...

  6. [对对子队]会议记录4.15(Scrum Meeting 6)

    今天已完成的工作 何瑞 ​ 工作内容:制作了合成指南 ​ 相关issue:实现游戏内UI界面使用的组件 马嘉 ​ 工作内容:基本实现了箱子内物品列表 ​ 相关issue:实现游戏内UI界面使用的组件 ...

  7. the Agiles Scrum Meeting 12

    会议时间:2020.4.20 21:00 1.每个人的工作 今天已完成的工作 个人结对项目增量开发组: 自动评测系统基本开发完成,实现个人项目自动评测功能 issues: 个人结对功能开发组:开发自动 ...

  8. 用cmd命令行创建vue项目模板

    1.进入cmd命令行 输入存放项目的位置 2.通过vue create 项目名称 创建项目 3.选择Manually select features 4.通过空格选中第1.2.5.6.7.去掉8 4. ...

  9. Allegro如何测量距离,测距工具的使用

    http://www.allegro-skill.com/thread-2480-1-1.html

  10. DMA实现采样数据的直接搬运存储

    尝试了下STM32的ADC采样,并利用DMA实现采样数据的直接搬运存储,这样就不用CPU去参与操作了. 找了不少例子参考,ADC和DMA的设置了解了个大概,并直接利用开发板来做一些实验来验证相关的操作 ...