(机器学习)——使用KNN进行水果分类
短信预约 -IT技能 免费直播动态提醒
(机器学习)——使用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 KNeighborsClassifierimport 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进行水果分类已经执行完毕。如果上述样本数据较少,大家可能觉得偶然性较大的话,可以自己手动造一些数据,测试测试哈哈哈~
来源地址:https://blog.csdn.net/qq_50311085/article/details/127708558
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341