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

分类(Classification)指的是从数据中选出已经分好类的训练集,在该训练集上运用数据挖掘分类的技术建立分类模型,从而对没有分类的数据进行分类的分析方法。

分类问题的应用场景:用于将事物打上一个标签,通常结果为离散值。例如判断一副图片上的动物是一只猫还是一只狗,分类通常是建立在回归之上。

基本的分类方法—KNN最邻近分类算法,简称KNN,最简单的机器学习算法之一。

核心逻辑:在距离空间里,如果一个样本的最接近的K个邻居里,绝大多数属于某个类别,则该样本也属于这个类别。

 

 

给定电影分类样例,预测某一电影的分类。

from sklearn import neighbors  #导入模块
import warnings
warnings.filterwarnings('ignore') #不发出警告

df = pd.DataFrame({'name':['北京遇上西雅图','喜欢你','疯狂动物城','战狼2','力王','敢死队'],'fight':[3,2,1,101,99,98],'kiss':[104,100,81,10,5,2],'type':['love','love','love','action','action','action']})
love = df[df['type']] == 'love']
action = df[df['type']== 'action']
plt.scatter(love['fight'],love['kiss'],color = 'red',label = 'love')  # 类型为爱情的电影做红色散点图
plt.scatter(action['fight'],action['kiss'],color = 'green',label='action')  # 类型为动作片的电影做绿色散点图
plt.legend()knn = neighbors.KNeighborsClassifier()  # 创建KNN最邻近分类模型
knn.fit(df[['fight','kiss']],df['type'])  # 给模型导入数据

k = knn.predict([[18, 90]])  # 预测数据,参数需要是二维的
print('预测电影类型为%s'%k,type(k))  # 预测电影类型为['love'],<class 'numpy.ndarray'>
plt.scatter(18,90,color = 'blue',marker='x',label=k) 
plt.text(18,90,'《你的名字》',color='blue') 

 

另外随机生成一组数据,用上面的knn分类模型进行分类

df2 = pd.DataFrame(np.random.rand(100,2)*80,columns=['fight','kiss'])
df2['predictType'] = knn.predict(df2)plt.scatter(love['fight'],love['kiss'],color = 'red',label = 'love')  
plt.scatter(action['fight'],action['kiss'],color = 'green',label='action')
plt.legend()plt.scatter(df2[df2['predictType']=='love']['fight'],df2[df2['predictType']=='love']['kiss'],color = 'red',label = 'love',marker='x')  
plt.scatter(df2[df2['predictType']=='action']['fight'],df2[df2['predictType']=='action']['kiss'],color = 'green',label='action',marker='x')df2.head()

     

 

案例2:植物分类

from sklearn import datasets
iris = datasets.load_iris()
print(iris.data[:5])  #类型为<class 'sklearn.utils.Bunch'>,数据部分为一个二维数组
print(iris.feature_names)
print(iris.target_names) 
# print(iris.target) #表示每一个数据所属的分类,分类用数字表示,结果为数组# [[5.1 3.5 1.4 0.2]
#  [4.9 3.  1.4 0.2]
#  [4.7 3.2 1.3 0.2]
#  [4.6 3.1 1.5 0.2]
#  [5.  3.6 1.4 0.2]]
#['sepal length (cm)','sepal width (cm)','petal length (cm)','petal width (cm)'],表示分类特征:萼片长度、萼片宽度、花瓣长度、花瓣宽度
#['setosa' 'versicolor' 'virginica'],表示分类名称

 

构建DataFrame方便查看数据,并使用数字分类和名称分类分别构建模型

data = pd.DataFrame(iris.data, columns = iris.feature_names)  #构建DataFrame方便查看
data['target'] = iris.target
print(data.head())
print('----------------------------')d = pd.DataFrame({'target':[0, 1, 2],'target_names':iris.target_names})
print(d.head())
print('----------------------------')data = pd.merge(data,d,on='target')  #最终形成的DataFrame包含四个分类特征、分类数值、分裂名称
print(data.head())
print('----------------------------')knn1 = neighbors.KNeighborsClassifier()  
knn1.fit(iris.data,iris.target)  #使用分类数值构建模型
t1 = knn1.predict([[0.1,0.2,0.3,0.4]])
print('所在分类(数字表示)为',t1)knn2 = neighbors.KNeighborsClassifier()
knn2.fit(iris.data,data['target_names']) #使用分类名称构建模型
t2 = knn2.predict([[0.1,0.2,0.3,0.4]])
print('所在分类(名称表示)为',t2)  
# 上述输出结果
#
sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) target # 0 5.1 3.5 1.4 0.2 0 # 1 4.9 3.0 1.4 0.2 0 # 2 4.7 3.2 1.3 0.2 0 # 3 4.6 3.1 1.5 0.2 0 # 4 5.0 3.6 1.4 0.2 0 # ---------------------------- # target target_names # 0 0 setosa # 1 1 versicolor # 2 2 virginica # ---------------------------- # sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) target target_names # 0 5.1 3.5 1.4 0.2 0 setosa # 1 4.9 3.0 1.4 0.2 0 setosa # 2 4.7 3.2 1.3 0.2 0 setosa # 3 4.6 3.1 1.5 0.2 0 setosa # 4 5.0 3.6 1.4 0.2 0 setosa # ---------------------------- # 所在分类(数字表示)为 [0] # 所在分类(名称表示)为 ['setosa']

 

转载于:https://www.cnblogs.com/Forever77/p/11385689.html

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

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

相关文章

无监督学习-主成分分析和聚类分析

聚类分析&#xff08;cluster analysis&#xff09;是将一组研究对象分为相对同质的群组&#xff08;clusters&#xff09;的统计分析技术&#xff0c;即将观测对象的群体按照相似性和相异性进行不同群组的划分&#xff0c;划分后每个群组内部各对象相似度很高&#xff0c;而不…

struts实现分页_在TensorFlow中实现点Struts

struts实现分页If you want to get started on 3D Object Detection and more specifically on Point Pillars, I have a series of posts written on it just for that purpose. Here’s the link. Also, going through the Point Pillars paper directly will be really help…

MySQL-InnoDB索引实现

联合索引提高查询效率的原理 MySQL会为InnoDB的每个表建立聚簇索引&#xff0c;如果表有索引会建立二级索引。聚簇索引以主键建立索引&#xff0c;如果没有主键以表中的唯一键建立&#xff0c;唯一键也没会以隐式的创建一个自增的列来建立。聚簇索引和二级索引都是一个b树&…

钉钉设置jira机器人_这是当您机器学习JIRA票证时发生的事情

钉钉设置jira机器人For software developers, one of the most-debated and maybe even most-hated questions is “…and how long will it take?”. I’ve experienced those discussions myself, which oftentimes lacked precise information on the requirements. What I…

vscode 标准库位置_如何在VSCode中使用标准

vscode 标准库位置I use Visual Studio Code as my text editor. When I write JavaScript, I follow JavaScript Standard Style.Theres an easy way to integrate Standard in VS Code—with the vscode-standardjs plugin. I made a video for this some time ago if youre …

IBM量子计算新突破:成功构建50个量子比特原型机

本文来自AI新媒体量子位&#xff08;QbitAI&#xff09;IBM去年开始以云计算服务的形式提供量子计算能力。当时&#xff0c;IBM发布了包含5个量子比特的计算机。在短短18个月之后&#xff0c;IBM周五宣布&#xff0c;将发布包含20个量子比特的计算机。 IBM还宣布&#xff0c;该…

小程序点击地图气泡获取气泡_气泡上的气泡

小程序点击地图气泡获取气泡Combining two colors that are two steps apart on the Color Wheel creates a Diad Color Harmony. This Color Harmony is one of the lesser used ones. I decided to cover it here to add variety to your options for colorizing visualizati…

PopTheBubble —测量媒体偏差的产品创意

产品管理 (Product Management) A couple of months ago, I decided to try something new. The MVP Lab by Mozilla is an 8-week incubator for pre-startup teams to explore product concepts and, over the 8 weeks of the program, ship a minimum viable product that p…

linux-Centos7安装nginx

首先配置linux环境&#xff0c;我这里是刚刚装好linux&#xff0c;所以一次性安装了一系列我需要到的环境&#xff1b; yum install pcre pcre-devel zlib zlib-devel openssl openssl-devel gd gd-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel e…

elasticsearch,elasticsearch-service安装

在Windows上安装Elasticsearch.zip 1 安装条件 安装需具备java 8或更高版本&#xff1b;官方的Oracle发行版&#xff0c;只需安装JDKElasticsearch的ZIP安装包——安装包地址 2 如何安装 Elasticsearch 傻瓜式的点下一步即可&#xff0c; java 注意环境变量配置 3 如何判断安装…

图表可视化seaborn风格和调色盘

seaborn是基于matplotlib的python数据可视化库&#xff0c;提供更高层次的API封装&#xff0c;包括一些高级图表可视化等工具。 使用seaborn需要先安装改模块pip3 install seaborn 。 一、风格style 包括set() / set_style() / axes_style() / despine() / set_context() 创建正…

面向Tableau开发人员的Python简要介绍(第3部分)

用PYTHON探索数据 (EXPLORING DATA WITH PYTHON) One of Tableau’s biggest advantages is how it lets you swim around in your data. You don’t always need a fine-tuned dashboard to find meaningful insights, so even someone with quite a basic understanding of T…

7、芯片发展

第一台继电器式计算机由康德拉.楚泽制造&#xff08;1910-1995&#xff09;&#xff0c;这台机器使用了二进制数&#xff0c;但早期版本中使用的是机械存储器而非继电器&#xff0c;使用老式35毫米电影胶片进行穿孔编程。 同一时期&#xff0c;哈佛大学研究生霍华德.艾肯 要寻找…

seaborn分布数据可视化:直方图|密度图|散点图

系统自带的数据表格&#xff08;存放在github上https://github.com/mwaskom/seaborn-data&#xff09;&#xff0c;使用时通过sns.load_dataset(表名称)即可&#xff0c;结果为一个DataFrame。 print(sns.get_dataset_names()) #获取所有数据表名称 # [anscombe, attention, …

pymc3使用_使用PyMC3了解飞机事故趋势

pymc3使用Visually exploring historic airline accidents, applying frequentist interpretations and validating changing trends with PyMC3.使用PyMC3直观地浏览历史性航空事故&#xff0c;应用常识性解释并验证变化趋势。 前言 (Preface) On the 7th of August this yea…

爬虫结果数据完整性校验

数据完整性分为三个方面&#xff1a; 1、域完整性&#xff08;列&#xff09; 限制输入数据的类型&#xff0c;及范围&#xff0c;或者格式&#xff0c;如性别字段必须是“男”或者“女”&#xff0c;不允许其他数据插入&#xff0c;成绩字段只能是0-100的整型数据&#xff0c;…

go map数据结构

map数据结构 key-value的数据结构&#xff0c;又叫字典或关联数组 声明&#xff1a;var map1 map[keytype]valuetype var a map[string]string var a map[string]int var a map[int]string var a map[string]map[string]string备注&#xff1a;声明是不会分配内存的&#xff0c…

吴恩达神经网络1-2-2_图神经网络进行药物发现-第2部分

吴恩达神经网络1-2-2预测毒性 (Predicting Toxicity) 相关资料 (Related Material) Jupyter Notebook for the article Jupyter Notebook的文章 Drug Discovery with Graph Neural Networks — part 1 图神经网络进行药物发现-第1部分 Introduction to Cheminformatics 化学信息…

Android热修复之 - 阿里开源的热补丁

1.1 基本介绍     我们先去github上面了解它https://github.com/alibaba/AndFix 这里就有一个概念那就AndFix.apatch补丁用来修复方法&#xff0c;接下来我们看看到底是怎么实现的。1.2 生成apatch包      假如我们收到了用户上传的崩溃信息&#xff0c;我们改完需要修复…

seaborn分类数据可视:散点图|箱型图|小提琴图|lv图|柱状图|折线图

一、散点图stripplot( ) 与swarmplot&#xff08;&#xff09; 1.分类散点图stripplot( ) 用法stripplot(xNone, yNone, hueNone, dataNone, orderNone, hue_orderNone,jitterTrue, dodgeFalse, orientNone, colorNone, paletteNone,size5, edgecolor"gray", linewi…