1、KNN

# -*- coding: utf-8 -*-
"""
Created on Tue Dec 21 12:16:41 2021@author: Administrator
"""import numpy as np
#inx-未知样本(测试集)
#dataSet-训练样本(训练集)
#labels-训练集分类标签向量
#k-选择距离最小的k个点
#maxType-分类结果def knn(inX, dataSet,labels,k):dist=(((dataSet-inX)**2).sum(1))**0.5         #计算欧氏距离sortedDist = dist.argsort()      #输出排序后索引(表示第几个、第几个)优点:通过索引号可以在原序列中直接找到该数值classCount={}       #计数for i in range(k):voteLabel = labels[sortedDist[i]]     classCount[voteLabel]=classCount.get(voteLabel,0)+1maxType=0   #求最大maxCount=0for key, value in classCount.items():  #遍历字典if value > maxCount:maxType = keymaxCount = valuereturn maxType

2、具体实现

# -*- coding: utf-8 -*-
"""
Created on Tue Dec 21 12:16:51 2021@author: Administrator
"""#%%
import numpy as np
import random
import matplotlib.pyplot as plt
import KNN
from sklearn.metrics import precision_score, recall_score, f1_score, accuracy_score
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['axes.unicode_minus'] = False
#%%
#读取数据集,将样本数据的格式转换为分类模型可以接收的格式,需要将数据分为特征值矩阵和对应的分类标签向量
#打开并解析文件
#returnMat-特征矩阵
#classLabelVector-分类标签向量
def file2Matrix(filename):data = np.genfromtxt(filename, delimiter=',')np.random.seed(1)np.random.shuffle(data)returnMat = data[:,:7]classLabelVector = data[:,7].flatten()classLabelVector = classLabelVector.astype(np.int)return returnMat,classLabelVector
#%%
#数据归一化处理(0-1标准化)
#归一化方法(0-1标准化,Z-score标准化,sigmoid压缩法)
#dataSet-特征矩阵
#normDataSet-归一化后的特征矩阵
def autoNorm(dataSet):minVals = dataSet.min(0)  #按列取最小值maxVals = dataSet.max(0)  #按列取最大值normDataSet = np.zeros(dataSet.shape)  #初始化一个零矩阵normDataSet = (dataSet - minVals) / (maxVals - minVals)return normDataSet#%%
#读取文件
datingDataMat,datingLabels = file2Matrix('./seeds_dataset.xls')
print(datingDataMat)
print(datingLabels)
#%%#不同特征值之间的关系
for i in range(7):plt.scatter(datingDataMat[:,i],datingDataMat[:,i+1],c=datingLabels)plt.show()
#%%#归一化特征矩阵
dataSet = autoNorm(datingDataMat)
# dataSet = datingDataMat
print(dataSet)
#%%#划分训练集、测试集
m = 0.8
dataSize = dataSet.shape[0]
print("数据集总行数:",dataSize)
# random.shuffle(dataSet)
trainSize = int(m*dataSize)
testSize = int((1-m)*dataSize+1)
print(trainSize,testSize)#%%
#测试knn计算结果
k=5
predictlist = []
truthlist = []
correct = 0
for i in range(testSize):predict = KNN.knn(dataSet[trainSize+i-1,:],dataSet[0:trainSize,:],datingLabels[0:trainSize],k)predictlist.append(predict)truth = datingLabels[trainSize+i-1]truthlist.append(truth)print("预测值为:{0} 真实值为:{1}".format(predict,truth))if predict == datingLabels[trainSize+i-1]:correct = correct + 1
print('正确率:',correct/testSize)#%%
#并对模型的准确性进行计算、分析(评价指标至少2种)
#准确率、查准率、查全率、F1值
accuracy = accuracy_score(predictlist,truthlist)
F1_Measure = f1_score(predictlist, truthlist, average='weighted')
precision = precision_score(predictlist,truthlist, average='weighted')
recall = recall_score(predictlist, truthlist, average='weighted')
print("准确率(accuracy):", accuracy)
print("召回率(recall):", recall)
print("精确率(Precision):", precision)
print("F1-Measure:", F1_Measure)

3、数据集

链接: https://pan.baidu.com/s/1OZz3lpWXSU_Gc1fMVWv2Og?pwd=iwak 提取码: iwak 复制这段内容后打开百度网盘手机App,操作更方便哦

KNN实现小麦种子分类问题相关推荐

  1. KNN分类器、最近邻分类、KD树、KNN分类的最佳K值、基于半径的最近邻分类器、KNN多分类、KNN多标签分类、KNN多输出分类、KNN分类的优缺点

    KNN分类器.最近邻分类.KD树.KNN分类的最佳K值.基于半径的最近邻分类器.KNN多分类.KNN多标签分类.KNN多输出分类.KNN分类的优缺点 目录

  2. ML之kNNC:基于iris莺尾花数据集(PCA处理+三维散点图可视化)利用kNN算法实现分类预测daiding

    ML之kNNC:基于iris莺尾花数据集(PCA处理+三维散点图可视化)利用kNN算法实现分类预测 目录 基于iris莺尾花数据集(PCA处理+三维散点图可视化)利用kNN算法实现分类预测 设计思路 ...

  3. ML之kNNC:基于iris莺尾花数据集(PCA处理+三维散点图可视化)利用kNN算法实现分类预测

    ML之kNNC:基于iris莺尾花数据集(PCA处理+三维散点图可视化)利用kNN算法实现分类预测 目录 基于iris莺尾花数据集(PCA处理+三维散点图可视化)利用kNN算法实现分类预测 设计思路 ...

  4. Python KNN K近邻分类

    Python KNN K近邻分类 1 声明 本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理. 2 KNN简介 相关概念见下: 对于给定的观测来 ...

  5. 监督学习-KNN最邻近分类算法

    分类(Classification)指的是从数据中选出已经分好类的训练集,在该训练集上运用数据挖掘分类的技术建立分类模型,从而对没有分类的数据进行分类的分析方法. 分类问题的应用场景:用于将事物打上一 ...

  6. KNN算法——kd-tree、KNN莺尾花分类sklearn实现实例

    KNN算法--kd-tree.KNN莺尾花分类sklearn实现实例 KNN算法--kd-tree.KNN莺尾花分类sklearn实现实例 1.kd-tree 2.kd-tree的构建 3.kd-tr ...

  7. 「11」Python实战篇:利用KNN进行电影分类

    上一期文章:「10」民主投票法--KNN的秘密 中,我们剖析了KNN算法的本质和特点.局限.这里我们用python代码进行KNN的实现.第1部分是KNN的基础算法步骤,第2部分是一个电影分类的实战项目 ...

  8. KNN实现鸢尾花分类--数据可视化--根据花萼及花瓣分类--sklearn

    KNN实现鸢尾花分类 一.导入相关库 二.导入数据 1.关于鸢尾花的数据 2.删除Id(不需要的)数据 3.分别利用花萼和花瓣的特征 三.训练集及测试集 1.花瓣 2.花萼 四.KNN算法 1.花瓣 ...

  9. (机器学习)——使用KNN进行水果分类

    (机器学习)--使用KNN进行水果分类(详解) 实验目标是:导入素材文件fruit_data.txt,使用SKlearn中的neighbors模块对水果数据进行分类,然后预测A.B两种水果的类别.以下 ...

最新文章

  1. Google 多任务学习框架 MMoE
  2. 查看一个索mysql_如何查看MySQL索引
  3. android11和ios,安卓与iOS细节对比:Reno Ace与iPhone 11 Pro Max,结果很意外
  4. poj 3007 Organize Your Train part II (哈希)
  5. Spring Boot - Profile不同环境配置
  6. sgu 207 Robbers
  7. c语言 宏教程 pdf,C语言之详解_ifdef等宏.pdf
  8. java生成首字母拼音简码的总结
  9. 【转】构建Android平台Google Map应用
  10. .NET Core 构建配置文件从 project.json 到 .csproj
  11. HDU 下沙的沙子有几粒
  12. 电脑开两个微信_电脑怎么登录两个微信
  13. 安徽关节式焊接机器人_上下料机器人的重要性体现在哪里?它有哪些优势?
  14. 计算机科技专业前景,美国伊利诺伊理工大学
  15. Rust: codewars 的Duplicate Encoder
  16. 祖玛游戏3D版源代码
  17. 用Python完成毫秒级抢单,助你秒杀淘宝大单
  18. 软件设计师-计算机网络(刷题笔记)
  19. expect结合scp实现文件上传
  20. WiFi底层通信接口@Netlink

热门文章

  1. P5831 [USACO19DEC]Cow Gymnastics奶牛体操
  2. 初学Java常见异常:NPE空指针异常怎么解决?
  3. 小米二手机价格多少钱
  4. UWP实现ListBox颜色相间显示
  5. SkyWalking简介和安装
  6. 论Java Swing线程
  7. 操作系统——CPU调度
  8. HTML5,CSS,我的家乡(草原云谷——魅力集宁)
  9. Cisco Catalyst 9000 系列,IOS-XE Release Bengaluru-17.06.01 ED
  10. ISO/IEC13818-1 TS 格式