python 动物分类_python入门学习之knn分类
分类属于监督学习的一种,指的是从数据中选出已经分类好的训练集,在该训练集上运用数据挖掘分类的技术,建立分类模型,对于没有分类的数据进行分类的分析方法。比如判断一副图片上的动物是狗还是猫,就属于分类问题,其结果通常为离散值。
分类算法中,比较简单也比较常见的是KNN算法,即最邻近分类算法,其核心思想为:在空间距离中,如果一个样本的最接近的k个邻居里,绝大多数属于某个类别,则认为该样本也属于这个类别。正如标题图所示,判断Xu属于哪个类别,则通过判断距离Xu最邻近的k个样本中,哪个类别的值最多。案例1,有一组电影的样本数据,如下。通过电影中的'打斗次数'与'接吻'次数两个维度,判断该电影属于'爱情片'还是'动作片'电影样本数据
可以用散点图表示如下(x轴为'fight',y轴为'kiss'):
那么现在假设有个电影为《你的名字》,其打斗次数为18,kiss次数为90,需要判断其属于哪种电影类型。运用最邻近算法,(利用sklearn中的neighbors),可以得到《你的名字》属于Romance类型的电影。具体代码如下:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
% matplotlib inline
from sklearn import neighbors
data = pd.DataFrame({'names':['北京遇上西雅图','喜欢你','疯狂动物城','战狼2','力王','敢死队'],
'fight':[3,2,1,101,99,98],
'kiss':[104,100,81,10,5,2],
'type':['Romance','Romance','Romance','Action','Action','Action']})
knn = neighbors.KNeighborsClassifier()
knn.fit(data[['fight','kiss']], data['type'])
print('预测类型为:', knn.predict([[18,90]]))
plt.figure(figsize = (20,8))
plt.scatter(data[data['type'] == 'Romance']['fight'],data[data['type'] == 'Romance']['kiss'],color = 'r',marker = 'o',label = 'Romance')
plt.scatter(data[data['type'] == 'Action']['fight'],data[data['type'] == 'Action']['kiss'],color = 'g',marker = 'o',label = 'Action')
plt.grid()
plt.legend(fontsize = 'xx-large')
plt.ylabel('kiss',fontsize = 18)
plt.xlabel('fight',fontsize = 19)
plt.scatter(18,90,color = 'r',marker = 'x',label = 'Romance')
plt.text(18,90,'《你的名字》',color = 'r',fontsize = 18)
也可以用随机数据进行模拟预测,如下
# 给随机数据进行模拟预测
data2 = pd.DataFrame(abs(np.random.randn(100,2))*50,columns = ['fight','kiss'])
data2['type'] = knn.predict(data2)
plt.figure(figsize=(10,6))
plt.scatter(data[data['type'] == 'Romance']['fight'],data[data['type'] == 'Romance']['kiss'],color = 'r',marker = 'o',label = 'Romance')
plt.scatter(data[data['type'] == 'Action']['fight'],data[data['type'] == 'Action']['kiss'],color = 'g',marker = 'o',label = 'Action')
plt.grid()
plt.scatter(data2[data2['type'] == 'Romance']['fight'],data2[data2['type'] == 'Romance']['kiss'],color = 'r',marker = 'x',label = 'Romance')
plt.scatter(data2[data2['type'] == 'Action']['fight'],data2[data2['type'] == 'Action']['kiss'],color = 'g',marker = 'x',label = 'Action')
plt.legend(fontsize = 'large')
plt.ylabel('kiss',fontsize = 18)
plt.xlabel('fight',fontsize = 19)案例2,有一些鸢尾花的数据集,给定了4个维度:萼片长度,萼片宽度,花瓣长度、花瓣宽度,通过这4个维度建立模型,判断未知数据属于哪种鸢尾花。比如我们判断[0.1, 0.2, 0.3, 0.4]这个类型的花属于setosa。
代码如下
#导入数据集并查看数据
from sklearn import datasets
iris = datasets.load_iris()
#print(iris.keys())
#print('数据集长度为:%i条' %(len(iris['data'])))
#print(iris.feature_names)
#print(iris.target_names)
#print(iris.target)
df = pd.DataFrame(iris.data, columns = iris.feature_names)
df['target'] = iris.target
ty = pd.DataFrame({'target':[0,1,2],
'target_names':iris.target_names})
df = pd.merge(df, ty, on = 'target')
# 数据转换
knn = neighbors.KNeighborsClassifier()
knn.fit(iris.data, df['target_names'])
# 建立分类模型
pre_data = [[0.1, 0.2, 0.3, 0.4]]
print('预测结果为:', knn.predict(pre_data))
python 动物分类_python入门学习之knn分类相关推荐
- python代码测试_Python入门学习系列——Python代码测试
Python代码测试 对于编写的代码,可以使用unittest模块中的相关方法进行测试. 测试函数 首先定义一个简单的函数,该函数用来合并名称并返回. name_function.py: def ge ...
- python求勾股定理_python入门学习随记(二)(勾股定理、球体积、利率、移位和进制转换、数字求和)...
本题目要求读入2个数分别是直角边A和直角边B,然后输出三角形斜边的长度. 输入格式:输入两个数,用空格分隔,用回车键结束输入 输出格式:输出勾股定理计算的结果,结果保留4位有效数字 输入样例:在这里给 ...
- python 图表_Python入门学习系列——使用Python调用Web API实现图表统计
使用Python调用Web API实现图表统计 Web API:Web应用编程接口,用于URL请求特定信息的程序交互,请求的数据大多以非常易于处理的格式返回,比如JSON或CSV等. 本文将使用Pyt ...
- python tuple用处_Python入门之最少必要知识
学习任何的新知识和新技能,基础都是最关键的,就像小的时候学习语文,一定是从拼音开始学起,这是之后学习汉字的基本功,是必须掌握的最基础知识.那学习Python又有哪些最少必要知识呢? 学习Python永 ...
- Python爬虫9大入门学习知识点
1.掌握Python编程能基础 想要学习爬虫,首先要充分掌握Python编程技术相关的基础知识.爬虫其实就是遵循一定的规则获取数据的过程,所以在学习Python知识的过程中一定要重点学习其中的数据类型 ...
- 零基础自学python教程-零基础入门学习Python_Python教程
教程名称:零基础入门学习Python 课程目录: [易源码www.pnp8.com]000愉快的开始 [易源码www.pnp8.com]001我和Python的第一次亲密接触 [易源码www.pnp8 ...
- python字符串定义符_python入门——定义字符串
坚持每天更新,帮助入门python. kali linux 小伙伴们,大家好,今下午我们一起学习在python中定义字符串. 那么什么是字符串呢?字符串或串(String)是由数字.字母.下划线组成的 ...
- 学python有前途吗-入门学习Python编程有前途吗?
原标题:入门学习Python编程有前途吗? 入门学习Python编程有前途吗?要想有前途,我想给初学编程者这几个建议: 1.首先要有信心.虽然可能你看了几个小时也没在屏幕上打出一个三角形,或者压根 ...
- python修图和ps_Photoshop入门学习之自从会了Python之后,我就没用过PS了
本文主要向大家介绍了Photoshop入门学习之自从会了Python之后,我就没用过PS了,通过具体的内容向大家展现,希望对大家Photoshop入门学习有所帮助. 第1步:减少图像色彩 因为双边滤波 ...
最新文章
- HTML的标签描述5
- String SringBuffer StringBuilder区别
- 各种AJAX方法的使用比较
- svn merger的时候 报远程主机强迫_SVN与Git比较的优缺点差异
- 力扣长度最小的子数组
- android 如何读取cgi_Python基础教程(十):CGI编程、MySQL数据库
- 软件测试 给视频添加字幕功能,巧用百度OCR文字识别技术,实现视频字幕识别...
- Python演示--UDP套接字真的无连接吗?
- php中如何滚动文字,HTML_网页HTML代码:滚动文字的制作,制作滚动文字 
通过本章前面 - phpStudy...
- PHP瓜分两个数组的相同元素和不同元素的两种方法
- 【气动学】基于matlab RBF神经网络控制卫星轨道和姿态【含Matlab源码 377期】
- 项目管理十大知识领域之项目相关方管理
- 水星路器服务器无响应,水星路由器无法上网怎么办?
- Windows 远程桌面无法复制粘贴问题
- C# Span 入门
- 2011系列服务器,2011年中服务器领域大事件盘点
- 介绍一个牛逼的Github项目
- 自己动手实现RAFT算法
- STM32F103C8T6移植uC/OS-III基于HAL库超完整详细过程
- Java自学教程!docker运行镜像无反应