分类属于监督学习的一种,指的是从数据中选出已经分类好的训练集,在该训练集上运用数据挖掘分类的技术,建立分类模型,对于没有分类的数据进行分类的分析方法。比如判断一副图片上的动物是狗还是猫,就属于分类问题,其结果通常为离散值。

分类算法中,比较简单也比较常见的是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分类相关推荐

  1. python代码测试_Python入门学习系列——Python代码测试

    Python代码测试 对于编写的代码,可以使用unittest模块中的相关方法进行测试. 测试函数 首先定义一个简单的函数,该函数用来合并名称并返回. name_function.py: def ge ...

  2. python求勾股定理_python入门学习随记(二)(勾股定理、球体积、利率、移位和进制转换、数字求和)...

    本题目要求读入2个数分别是直角边A和直角边B,然后输出三角形斜边的长度. 输入格式:输入两个数,用空格分隔,用回车键结束输入 输出格式:输出勾股定理计算的结果,结果保留4位有效数字 输入样例:在这里给 ...

  3. python 图表_Python入门学习系列——使用Python调用Web API实现图表统计

    使用Python调用Web API实现图表统计 Web API:Web应用编程接口,用于URL请求特定信息的程序交互,请求的数据大多以非常易于处理的格式返回,比如JSON或CSV等. 本文将使用Pyt ...

  4. python tuple用处_Python入门之最少必要知识

    学习任何的新知识和新技能,基础都是最关键的,就像小的时候学习语文,一定是从拼音开始学起,这是之后学习汉字的基本功,是必须掌握的最基础知识.那学习Python又有哪些最少必要知识呢? 学习Python永 ...

  5. Python爬虫9大入门学习知识点

    1.掌握Python编程能基础 想要学习爬虫,首先要充分掌握Python编程技术相关的基础知识.爬虫其实就是遵循一定的规则获取数据的过程,所以在学习Python知识的过程中一定要重点学习其中的数据类型 ...

  6. 零基础自学python教程-零基础入门学习Python_Python教程

    教程名称:零基础入门学习Python 课程目录: [易源码www.pnp8.com]000愉快的开始 [易源码www.pnp8.com]001我和Python的第一次亲密接触 [易源码www.pnp8 ...

  7. python字符串定义符_python入门——定义字符串

    坚持每天更新,帮助入门python. kali linux 小伙伴们,大家好,今下午我们一起学习在python中定义字符串. 那么什么是字符串呢?字符串或串(String)是由数字.字母.下划线组成的 ...

  8. 学python有前途吗-入门学习Python编程有前途吗?

    原标题:入门学习Python编程有前途吗? 入门学习Python编程有前途吗?要想有前途,我想给初学编程者这几个建议: ​ 1.首先要有信心.虽然可能你看了几个小时也没在屏幕上打出一个三角形,或者压根 ...

  9. python修图和ps_Photoshop入门学习之自从会了Python之后,我就没用过PS了

    本文主要向大家介绍了Photoshop入门学习之自从会了Python之后,我就没用过PS了,通过具体的内容向大家展现,希望对大家Photoshop入门学习有所帮助. 第1步:减少图像色彩 因为双边滤波 ...

最新文章

  1. HTML的标签描述5
  2. String SringBuffer StringBuilder区别
  3. 各种AJAX方法的使用比较
  4. svn merger的时候 报远程主机强迫_SVN与Git比较的优缺点差异
  5. 力扣长度最小的子数组
  6. android 如何读取cgi_Python基础教程(十):CGI编程、MySQL数据库
  7. 软件测试 给视频添加字幕功能,巧用百度OCR文字识别技术,实现视频字幕识别...
  8. Python演示--UDP套接字真的无连接吗?
  9. php中如何滚动文字,HTML_网页HTML代码:滚动文字的制作,制作滚动文字 通过本章前面 - phpStudy...
  10. PHP瓜分两个数组的相同元素和不同元素的两种方法
  11. 【气动学】基于matlab RBF神经网络控制卫星轨道和姿态【含Matlab源码 377期】
  12. 项目管理十大知识领域之项目相关方管理
  13. 水星路器服务器无响应,水星路由器无法上网怎么办?
  14. Windows 远程桌面无法复制粘贴问题
  15. C# Span 入门
  16. 2011系列服务器,2011年中服务器领域大事件盘点
  17. 介绍一个牛逼的Github项目
  18. 自己动手实现RAFT算法
  19. STM32F103C8T6移植uC/OS-III基于HAL库超完整详细过程
  20. Java自学教程!docker运行镜像无反应

热门文章

  1. android盒子模拟器,盒子模拟器
  2. 计算机毕业设计Java交通规则考试系统(源码+系统+mysql数据库+lw文档)
  3. 30款免费四页幼师求职简历word模板,四页求职简历模板,含自荐信
  4. Autosar 软件中间件
  5. Dell R730 通过PXE 安装 Debian x64
  6. DirectX11 漫反射光
  7. 【哈希-简单】953. 验证外星语词典
  8. linux安装卸载apache
  9. 长达十五个小时的面试!程序员终极面试!
  10. java操作derby,Java操作Derby数据库