knn用于水果数据集分类

数据集地址:https://download.csdn.net/download/fanzonghao/10940440 

knn算法流程:

若k取无穷大,那么测试数据就取决于每一类的占比,归属于占比最大的那一类。

首先观察数据集,利用mass,height,width,color_score四列特征进行水果分类。

g=sns.pairplot(data=fruits_df,hue='fruit_name',vars=['mass','width','height','color_score'])

然后利用sns.pairplot查看两两特征之间的关系,可看出对角线是每一类的直方图,mass和width几乎呈线性关系。

再利用width,height,color_score,建立三维图,看出绿色可以容易区分,对于更高维的数据可以采用pca降维然后进行查看。

knn代码:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import pandas as pd
import seaborn as sns
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
import ml_visualization
#利用k近邻法分离
#分离训练集与测试集
from sklearn.model_selection import train_test_split
fruits_df=pd.read_table('fruit_data_with_colors.txt')
print(fruits_df)
print('样本个数:',len(fruits_df))
#创建目标标签和名称的  字典
fruits_name_dict=dict(zip(fruits_df['fruit_label'],fruits_df['fruit_name']))
#print(fruits_df['fruit_label'])
print(fruits_name_dict)
#划分数据集
X=fruits_df[['mass','width','height','color_score']]
# print(X)
y=fruits_df['fruit_label']
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=1/4,random_state=0)
print('X_train=\n',X_train)
print('y_train=\n',y_train)
print('数据集样本数:{},训练集样本数:{},测试集样本数:{}'.format(len(X),len(X_train),len(X_test)))
#
#可视化查看特征变量,对角线就是直方图,其余是两两直接的关系
g=sns.pairplot(data=fruits_df,hue='fruit_name',vars=['mass','width','height','color_score'])
plt.savefig('1.jpg')
#三维查看
label_color_dict={1:'red',2:'green',3:'blue',4:'yellow'}
colors=list(map(lambda label: label_color_dict[label],y_train))
print('colors=\n',colors)
fig=plt.figure()
ax=fig.add_subplot(111,projection='3d')
ax.scatter(X_train['width'],X_train['height'],X_train['color_score'],c=colors,marker='o',s=100)
ax.set_xlabel('width')
ax.set_ylabel('height')
ax.set_zlabel('color_score')
plt.show()
# #建立knn模型
acc_scores=[]
for k in range(1,20):knn=KNeighborsClassifier(n_neighbors=k)
#训练模型knn.fit(X_train,y_train)
#预测y_pred=knn.predict(X_test)
# print('y_pred=',y_pred)
# print('y_test=\n',y_test)acc=accuracy_score(y_test,y_pred)acc_scores.append(acc)
plt.figure()
plt.xlabel('k')
plt.ylabel('accuarcy')
plt.plot(acc_scores,marker='o')
plt.show()
print('准确率:',acc)
ml_visualization.plot_fruit_knn(X_train,y_train,5)

可视化代码:ml_visualization.py

# -*- coding: utf-8 -*-import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
from sklearn import neighbors
import graphviz
from sklearn.tree import export_graphviz
import matplotlib.patches as mpatchesdef plot_fruit_knn(X, y, n_neighbors):"""在“水果数据集”上对 height 和 width 二维数据进行kNN训练并绘制出结果"""X_mat = X[['height', 'width']].as_matrix()y_mat = y.as_matrix()# Create color mapscmap_light = ListedColormap(['#FFAAAA', '#AAFFAA', '#AAAAFF', '#AFAFAF'])cmap_bold = ListedColormap(['#FF0000', '#00FF00', '#0000FF', '#AFAFAF'])clf = neighbors.KNeighborsClassifier(n_neighbors)clf.fit(X_mat, y_mat)# Plot the decision boundary by assigning a color in the color map# to each mesh point.mesh_step_size = .01  # step size in the meshplot_symbol_size = 50x_min, x_max = X_mat[:, 0].min() - 1, X_mat[:, 0].max() + 1y_min, y_max = X_mat[:, 1].min() - 1, X_mat[:, 1].max() + 1xx, yy = np.meshgrid(np.arange(x_min, x_max, mesh_step_size),np.arange(y_min, y_max, mesh_step_size))Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])# Put the result into a color plotZ = Z.reshape(xx.shape)plt.figure()plt.pcolormesh(xx, yy, Z, cmap=cmap_light)# Plot training pointsplt.scatter(X_mat[:, 0], X_mat[:, 1], s=plot_symbol_size, c=y, cmap=cmap_bold,edgecolor='black')plt.xlim(xx.min(), xx.max())plt.ylim(yy.min(), yy.max())patch0 = mpatches.Patch(color='#FF0000', label='apple')patch1 = mpatches.Patch(color='#00FF00', label='mandarin')patch2 = mpatches.Patch(color='#0000FF', label='orange')patch3 = mpatches.Patch(color='#AFAFAF', label='lemon')plt.legend(handles=[patch0, patch1, patch2, patch3])plt.xlabel('height (cm)')plt.ylabel('width (cm)')plt.show()

结果:可看出k为5时acc最高。

而对于回归的話,对于k==3,相邻的三个值取平均,也可以利用距离加权。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/493357.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人脸识别技术大起底,你了解多少?

来源:与非网这两年,随着科技的迅速发展,人脸识别已经逐渐成为了新时期生物识别技术应用的重要领域,忘记密码了?没事儿,咱还可以“刷脸”!今天,小编将带大家了解一下最新的人脸识别技术,看看这项…

深度学习时出现的一些安装问题+ubuntu apt的一些问题+github release文件加速

一.python用于深度学习时出现的一些安装问题 问题:raise ImportError, str(msg) , please install the python-tk package 解决:apt-get update apt-get install python-tk 问题:pip install pycocotools出现错误 pip instal…

Struts+Tomcat搭建

StrutsTomcat搭建tomcat使用(服务器端开发): 如果要安装Tomcat需要进行的配置:tomcat安装在c: \Tomcat CATALINA_HOME变量值设为: H:\Program Files (x86)\tomcat\apache-tomcat-7.0.27 CATALINA_BASE变量值设为: H:\Program Files (x86)\tomcat\apache-tomcat-…

AlphaZero登上《科学》封面:一个算法“通杀”三大棋,完整论文首次发布

来源:量子位作者:乾明 一璞 栗子 晓查不仅会下围棋,还自学成才横扫国际象棋和日本将棋的DeepMind AlphaZero,登上了最新一期《科学》杂志封面。同时,这也是经过完整同行审议的AlphaZero论文,首次公开发表。…

自编码器及相关变种算法简介

本文对自编码器(Auto-Encoder)算法及其相关变种算法进行简要介绍,其中包括 Regularized Auto-Encoder、Sparse Auto-Encoder、Denoising Auto-Encoder 和 Contractive Auto-Encoder,重点讨论各算法的基本思想及优化时所需目标函数…

pytorch数据预处理

一,数据加载 数据路径: #coding:utf-8 import torch as t from torch.utils import data import os from PIL import Image import numpy as npclass DogCat(data.Dataset):def __init__(self, path):imgs os.listdir(path)# 所有图片的绝对路径# 这里…

太阳系“首个星际访客”未被探测到人工信号

来源:新华网去年发现的雪茄形天体被认为是太阳系“首个星际访客”,其真实身份一直受到全球天文学家高度关注。美国搜索外星文明研究所(SETI)最新研究称,这个天体没有被探测出“人工”的无线电信号,但这不能…

协方差理解,PCA以及奇异值分解(SVD)

一.PCA PCA通过正交变换将一组由线性相关变量表示的数据转换为少数几个由线性无关变量表示的数据,这几个线性无关的变量就是主成分。PCA通过将高维数据维度减少到少数几个维度,本质上属于一种数据降维方法,也可以用来探索数据的内在结构。 …

ASP.NET MVC获取上传的路径

刚才有网友问及&#xff0c;怎样获取<input typefile>的值&#xff1f; Insus.NET测试了一下&#xff0c;在Inetnet Explor之下似乎没有问题&#xff0c;但是FireFox获取到的只是文件名。 在MVC的控制器中&#xff0c;创建一个视图Action&#xff0c;超简单如下&#xff…

python的继承与多态

一.继承 class Person(object):def __init__(self, name, sex):self.name nameself.sex sexdef print_title(self):if self.sex "male":print("man")elif self.sex "female":print("woman")class Child(Person): # Child 继承 …

如何在算法交易中使用AI?摩根大通发布新版指南

来源 &#xff1a;efinancialcareers.com作者 &#xff1a;Sarah Butcher编译&#xff1a;机器之能 张玺摘要&#xff1a;如果你对银行与金融领域的 AI 应用有兴趣的话&#xff0c;你肯定了解 JPM&#xff08;摩根大通&#xff09;最近十年对大数据和人工智能的出色运用&#x…

生命简史

来源「新原理研究所」&#xff08;ID&#xff1a;newprincipia&#xff09;摘要&#xff1a;地球上的生命是如何开始的&#xff1f;未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能&#xff0c;互联网和脑科学交叉研究机构。未来智能实验室的主要工作包括&…

Array()数组

数组的定义 var arr [1, 2, 3, 4, "one", "two", "three", "four"]; //一维数组 var props [["拳头", "刀", "枪"], ["boxing", "knife ", "gun"]]; //二维数组 调用 …

成立 5 周年:一文览尽 Facebook 人工智能研究院历年重要成果

来源&#xff1a;AI科技评论五年前&#xff0c;Yann LeCun 等人创建了 Facebook 人工智能研究院 (Facebook AI Research&#xff0c;FAIR)&#xff0c;试图通过开放的研究环境促进人工智能的发展&#xff0c;进而造福所有人——他们努力的目的是为了理解智慧的本质&#xff0c;…

利用opencv对图像和检测框做任意角度的旋转

一.钢筋比赛中的数据扩充 #coding:utf-8 #数据集扩增 import cv2 import math import numpy as np import xml.etree.ElementTree as ET import osdef rotate_image(src, angle, scale1):w src.shape[1]h src.shape[0]# 角度变弧度rangle np.deg2rad(angle) # angle in r…

中国科学家将绘制最精细人脑三维“地图”

骆清铭在检查实验结果。&#xff08;受访者供图&#xff09;来源&#xff1a;新华社客户端作者&#xff1a;喻菲 胡喆 李博 夏鹏为什么有的大脑能洞见美妙的宇宙法则&#xff0c;有的能创作出扣人心弦的乐曲与画作&#xff1f;记忆和意识是如何产生的&#xff1f;人类虽已能观察…

python解析xml+得到pascal voc xml格式用于目标检测+美化xml

1.python解析xml img_path./data/001.tifxml_path./xml/001.xmlimgcv2.imread(img_path)# cv2.imshow(img, img)# cv2.waitKey(0)print(img.shape)try:xmlp ET.XMLParser(encoding"utf-8")tree ET.parse(xml_path, parserxmlp)root tree.getroot()print(tree)prin…

美权威报告:量子计算十年内无法落地

来源&#xff1a;云头条摘要&#xff1a;美国方面称&#xff0c;它对这项复杂的技术何时真正大有用武之地毫无头绪。美国国家科学、工程和医学科学院本周发布了一份介绍量子计算现状的报告。考虑到有人推测这类设备可能使目前的加密方案变得毫无价值&#xff0c;这个话题令人不…

“深绿” 及 AlphaGo 对指挥与控制智能化的启示

来源&#xff1a;《指挥与控制学报》摘要&#xff1a; 随着未来战争日趋复杂、人工智能突飞猛进, 指挥与控制向智能化发展成为大势所趋. 美军的 “深绿” 计划项目虽因各 种原因暂停, 但其思路和方法值得借鉴. AlphaGo 在围棋领域战胜人类顶尖水平, 其采用的方法也有一定的参考…

熵的基础知识,特征工程,特征归一化,交叉验证,grid search,模型存储与加载

1.自信息&#xff1a; 2.信息熵 3.p对Q的KL散度&#xff08;相对熵&#xff09; 证明kl散度大于等于0 4.交叉熵 可看出交叉熵信息熵相对熵 数据集地址&#xff1a;水果数据集_机器学习水果识别,水果分类数据集-机器学习其他资源-CSDN下载 一&#xff0c;类别型特征和有序性特…