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

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

实验目标是:导入素材文件fruit_data.txt,使用SKlearn中的neighbors模块对水果数据进行分类,然后预测A、B两种水果的类别。
	
 以下是待预测水果的样本数据:

在这里插入图片描述

其中,
mass:水果的重量        
width:测量出的宽度
height:测量出的高度
color_score:颜色值

一.导入素材fruit_data.txt

这里使用numpy中的loadtxt()方法进行文本导入:
使用格式为:(这里只写我们需要用到的参数\doge)
	np.loadtxt(file_name_path, usecols=None )

首先我把这个素材fruit_data.txt文件放到当前项目的文件夹中,
导入时以第一列用作knn训练的标记值(类别),以而后的列作为训练的特征数据。读取如下:
# 首先先导入相关模块
from sklearn.neighbors import KNeighborsClassifier
import numpy as np

# 获取训练集
train_x = np.loadtxt('./fruit_data.txt', usecols = (1,2,3,4))
train_y = np.loadtxt('./fruit_data.txt', usecols = (0))
通过打印查看导入数据的呈现形式:
print(train_x)
print(train_y)
如下是训练集的特征数据:

在这里插入图片描述

如下是训练集的标记值数据:

在这里插入图片描述

二.导入测试集文件数据

需要自己手动建立一个txt文档,存放测试数据,在这里由于spyder没法将字符转换为浮点型数据,
会报如下错误,因而我将样本名A、B使用1、2来替代它们了(新手新手,苯方法hhh):

在这里插入图片描述

在这里插入图片描述

同样,也是使用numpy的loadtxt()方法读入这些测试数据:
test_x = np.loadtxt('./fruit_test.txt', usecols = (1,2,3,4))
test_y = np.loadtxt('./fruit_test.txt', usecols = (0))

# 同样可以执行打印语句来查看当前数据的导入情况
print(test_x)
print(test_y)

在这里插入图片描述

直到这里,我们已经把需要使用的数据全部导入完毕了,接下来就是对这些数据进行训练和测试了

三.使用KNN进行数据集训练和数据测试

首先我们需要初始化一个训练集,然后将待训练数据传入该训练集的fit()方法中进行训练,代码如下:
knn = KNeighborsClassifier()
knn.fit(train_x, train_y)
训练完毕后可以使用原训练集进行一番测试,看看当前的预测效果如何:
# 对原数据集进行训练
predict_result_01 = knn.predict(train_x)
print('真实结果:', train_y)
print('预测结果:', predict_result_01)
print('预算精确度', knn.score(train_x, train_y))
可以看到,这个测试准确率有一点低(流汗~),但是也还不错了(强颜欢笑),如下是我们使用原来用于训练的训练集进行测试得到的结果和精确度:

在这里插入图片描述

接下来我们对待测试数据进行测试:
#对样本数据进行训练
predict_result_02 = knn.predict(test_x)
print('测试结果:', predict_result_02)
结果如下:待测试的两个样本数据都属于类型4

在这里插入图片描述

截至目前,我们想要实现的使用KNN进行水果分类已经执行完毕。如果上述样本数据较少,
大家可能觉得偶然性较大的话,可以自己手动造一些数据,测试测试哈哈哈~
  • 23
    点赞
  • 129
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: KNN(K-Nearest Neighbors)是一种常用的机器学习算法,可以应用于水果分类问题。在使用KNN进行水果分类时,我们需要明确以下步骤: 1. 数据收集:首先,我们需要收集有关水果的数据集。这些数据集包括水果的特征,例如颜色、形状、质地等。 2. 数据预处理:对于KNN算法,数据预处理是非常重要的一步。我们需要将数据集分为训练集和测试集,并进行特征工程以准备数据。 3. 特征选择:选择适当的特征对于KNN算法的性能至关重要。我们可以使用一些特征选择的方法,例如相关性分析、主成分分析等。 4. 计算距离:KNN基于距离来进行分类。我们需要计算未知样本与训练样本之间的距离。常用的距离度量方法包括欧氏距离、曼哈顿距离等。 5. 确定K值:K值代表KNN算法中选择的邻居数量。我们需要根据实际情况选择合适的K值。 6. 进行分类:将未知样本的特征与训练样本进行比对,选取距离最近的K个样本。根据这K个样本的类别,使用少数服从多数的原则确定未知样本的分类。 7. 评估模型:最后,我们需要评估KNN分类器的性能。可以使用一些评估指标,例如准确率、召回率等来评估模型的效果。 总之,使用KNN进行水果分类的过程包括数据收集、数据预处理、特征选择、计算距离、确定K值、进行分类以及评估模型的步骤。KNN是一种简单而有效的分类算法,适用于许多分类问题。 ### 回答2: KNN(K最近邻)是一种常见的机器学习算法,可用于水果分类问题。基本原理是通过测量不同实例之间的距离,将某个未标记的实例分类到距离最近的已标记实例的类别。 为了使用KNN进行水果分类,首先我们需要构建一个数据集。数据集应包含水果的多个特征,例如大小、颜色、纹理等。每个样本应包含这些特征以及其所属的水果类别。 接下来,我们需要将数据集拆分为训练集和测试集。训练集用于训练KNN模型,测试集用于评估模型的性能。 训练阶段包括以下步骤: 1. 选择一个合适的K值,即选择最近邻的数量。这可以通过交叉验证等方法来确定。 2. 计算训练集中每个样本与其他样本的距离,通常使用欧氏距离或曼哈顿距离进行计算。 3. 根据距离值对样本进行排序,选择距离最近的K个样本。 4. 根据K个样本的类别,通过多数投票的方式确定未标记实例的类别。 测试阶段包括以下步骤: 1. 计算测试集中每个样本与训练集中样本的距离。 2. 选取最近的K个样本。 3. 根据K个样本的类别进行多数投票,确定测试实例的类别。 4. 与测试集的真实类别进行比较,评估模型的性能。 在进行水果分类时,可以选择不同的特征和K值,以达到最佳的分类效果。需要注意的一点是,特征选择应具有对分类有影响的能力,而K值的选择应考虑到数据集的大小和样本分布等因素。 总之,使用KNN进行水果分类的步骤包括数据集构建、训练模型和测试模型。通过调整特征和K值,我们可以得到较高的分类准确率。 ### 回答3: 使用knn算法进行水果分类是一种常用的机器学习方法。KNN,即k最近邻算法,采用了简单而直观的理念。首先,收集一定数量已被标记的水果样本数据集,其中包含水果的特征信息(如颜色、形状、大小等),并将其分为不同的类别(如苹果、香蕉、橙子等)。然后,要对一个未知的水果进行分类,首先计算该水果与训练集中所有样本的特征相似度。根据计算结果,选取距离最近的k个样本(即最近邻)。最后,通过统计这k个样本所属类别,确定该未知水果所属的类别。 使用KNN算法进行水果分类的关键是选择合适的k值。k值的选择一般基于经验和交叉验证方法。当k值较小时,模型会更加复杂,容易受到噪声的影响;而当k值较大时,则可能忽略了一些局部的特征,导致分类错误。因此,选择合适的k值是一个权衡的过程。 KNN算法的优点是简单易实现,对待分类样本的分布没有假设,并且可以对多种特征进行分类。然而,KNN算法也存在一些缺点。首先,由于需要计算待分类样本与所有训练样本的距离,计算开销较大;其次,对于不平衡的数据集,KNN算法易受到主导类别的影响;另外,对于特征空间的维度较高的情况下,由于“维度灾难”的问题,KNN性能会下降。 总之,使用KNN算法进行水果分类是一种简单而有效的方法,可以根据水果的特征将其正确分类到相应的类别中。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值