KNN实现小麦种子分类问题
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实现小麦种子分类问题相关推荐
- KNN分类器、最近邻分类、KD树、KNN分类的最佳K值、基于半径的最近邻分类器、KNN多分类、KNN多标签分类、KNN多输出分类、KNN分类的优缺点
KNN分类器.最近邻分类.KD树.KNN分类的最佳K值.基于半径的最近邻分类器.KNN多分类.KNN多标签分类.KNN多输出分类.KNN分类的优缺点 目录
- ML之kNNC:基于iris莺尾花数据集(PCA处理+三维散点图可视化)利用kNN算法实现分类预测daiding
ML之kNNC:基于iris莺尾花数据集(PCA处理+三维散点图可视化)利用kNN算法实现分类预测 目录 基于iris莺尾花数据集(PCA处理+三维散点图可视化)利用kNN算法实现分类预测 设计思路 ...
- ML之kNNC:基于iris莺尾花数据集(PCA处理+三维散点图可视化)利用kNN算法实现分类预测
ML之kNNC:基于iris莺尾花数据集(PCA处理+三维散点图可视化)利用kNN算法实现分类预测 目录 基于iris莺尾花数据集(PCA处理+三维散点图可视化)利用kNN算法实现分类预测 设计思路 ...
- Python KNN K近邻分类
Python KNN K近邻分类 1 声明 本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理. 2 KNN简介 相关概念见下: 对于给定的观测来 ...
- 监督学习-KNN最邻近分类算法
分类(Classification)指的是从数据中选出已经分好类的训练集,在该训练集上运用数据挖掘分类的技术建立分类模型,从而对没有分类的数据进行分类的分析方法. 分类问题的应用场景:用于将事物打上一 ...
- KNN算法——kd-tree、KNN莺尾花分类sklearn实现实例
KNN算法--kd-tree.KNN莺尾花分类sklearn实现实例 KNN算法--kd-tree.KNN莺尾花分类sklearn实现实例 1.kd-tree 2.kd-tree的构建 3.kd-tr ...
- 「11」Python实战篇:利用KNN进行电影分类
上一期文章:「10」民主投票法--KNN的秘密 中,我们剖析了KNN算法的本质和特点.局限.这里我们用python代码进行KNN的实现.第1部分是KNN的基础算法步骤,第2部分是一个电影分类的实战项目 ...
- KNN实现鸢尾花分类--数据可视化--根据花萼及花瓣分类--sklearn
KNN实现鸢尾花分类 一.导入相关库 二.导入数据 1.关于鸢尾花的数据 2.删除Id(不需要的)数据 3.分别利用花萼和花瓣的特征 三.训练集及测试集 1.花瓣 2.花萼 四.KNN算法 1.花瓣 ...
- (机器学习)——使用KNN进行水果分类
(机器学习)--使用KNN进行水果分类(详解) 实验目标是:导入素材文件fruit_data.txt,使用SKlearn中的neighbors模块对水果数据进行分类,然后预测A.B两种水果的类别.以下 ...
最新文章
- Google 多任务学习框架 MMoE
- 查看一个索mysql_如何查看MySQL索引
- android11和ios,安卓与iOS细节对比:Reno Ace与iPhone 11 Pro Max,结果很意外
- poj 3007 Organize Your Train part II (哈希)
- Spring Boot - Profile不同环境配置
- sgu 207 Robbers
- c语言 宏教程 pdf,C语言之详解_ifdef等宏.pdf
- java生成首字母拼音简码的总结
- 【转】构建Android平台Google Map应用
- .NET Core 构建配置文件从 project.json 到 .csproj
- HDU 下沙的沙子有几粒
- 电脑开两个微信_电脑怎么登录两个微信
- 安徽关节式焊接机器人_上下料机器人的重要性体现在哪里?它有哪些优势?
- 计算机科技专业前景,美国伊利诺伊理工大学
- Rust: codewars 的Duplicate Encoder
- 祖玛游戏3D版源代码
- 用Python完成毫秒级抢单,助你秒杀淘宝大单
- 软件设计师-计算机网络(刷题笔记)
- expect结合scp实现文件上传
- WiFi底层通信接口@Netlink