实验四、数据挖掘之KNN,Naive Bayes

一、实验目的

1. 掌握KNN的原理

2. 掌握Naive Bayes的原理

3. 学会利用KNN与Navie Bayes解决分类问题

二、实验工具

1. Anaconda

2. sklearn

三、实验简介

1. KNN

KNN(K-Nearest Neighbor)工作原理:存在一个样本数据集合,也称为训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类对应的关系。输入没有标签的数据后,将新数据中的每个特征与样本集中数据对应的特征进行比较,提取出样本集中特征最相似数据(最近邻)的分类标签。一般来说,我们只选择样本数据集中前k个最相似的数据,这就是k近邻算法中k的出处,通常k是不大于20的整数。最后选择k个最相似数据中出现次数最多的分类作为新数据的分类。

说明:KNN没有显示的训练过程,它是“懒惰学习”的代表,它在训练阶段只是把数据保存下来,训练时间开销为0,等收到测试样本后进行处理。

2. Navie Bayes

朴素贝叶斯分类器中最核心的便是贝叶斯准则,他用如下的公式表示:

p(c|x)= \frac{p(x|c)p(c)}{p(x)}p(c∣x)=p(x)p(x∣c)p(c)​

在机器学习中,朴素贝叶斯分类器是一个基于贝叶斯定理的比较简单的概率分类器,其中 naive(朴素)是指的对于模型中各个 feature(特征) 有强独立性的假设,并未将 feature 间的相关性纳入考虑中。

朴素贝叶斯分类器一个比较著名的应用是用于对垃圾邮件分类,通常用文字特征来识别垃圾邮件,是文本分类中比较常用的一种方法。朴素贝叶斯分类通过选择 token(通常是邮件中的单词)来得到垃圾邮件和非垃圾邮件间的关联,再通过贝叶斯定理来计算概率从而对邮件进行分类。

四、实验内容

1. 利用KNN对鸢尾花数据进行分类。

(1) 调用数据的方法如下:

from sklearn.datasets import load_iris iris = load_iris()# 从sklearn 数据集中获取鸢尾花数据。


(2)数据进行KNN分类

首先导入鸢尾花数据集

获取并划分数据集

声明训练并评价模型

进行样本测试

2. 利用Navie Bayes对鸢尾花数据建模


输出测试样本在各个类标记上预测概率值对应对数值,
返回测试样本映射到指定类标记上的得分(准确率).

3. 不使用sklearn中的分类方法,自己编写KNN程序(建议用python语言),并对鸢尾花数据进行分类。

4. (选做) 不使用sklearn中的分类方法,自己编写Navie Bayes程序(建议用python语言),并对鸢尾花数据进行分类。

五、实验总结(写出本次实验的收获,遇到的问题等)

本次实验自主学习探索了sklearn中GaussianNB建模和KNeighborsClassifier分类。调用封装的方法实现了模型的训练以及测试。
但是对knn理解程度不够,已经Python语言掌握不熟,未能自行实现knn程序的编写对鸢尾花进行分类,需要加强学习!

最新文章

  1. UIScrollView设置滑动的距离
  2. Swift学习(三):闭包(Closures)
  3. ACM_1001_Exponentiation 详解
  4. C#.NET如何不序列化字段、属性
  5. BizTalk开发系列(一) "Hello World"
  6. ASP开发中服务器控件和普通控件的区别
  7. 在Windows中隐藏用户的方法
  8. [转贴]WebService的简单实现 C++
  9. Oracle存储过程Procedure语法及案例
  10. 利用GeneratedKeyHolder获得新增数据主键值
  11. C#图解教程-方法参数笔记(上)
  12. OVS中arp响应的流表的实现
  13. 在线生成PDF的网站-HTML 转 PDF 在线
  14. android问题:Installation error: INSTALL_FAILED_CONFLICTING_PROVIDER
  15. iOS 9之后Url链接的NSUTF8StringEncoding转码实现
  16. BZOJ 4763
  17. oracle 删除用户
  18. 关于事务回滚,rollback tran到底要不要写?
  19. 绕不开的hadoop
  20. javascript 列表定时滚动效果

热门文章

  1. webpack(四) --css样式及图片打包
  2. enumerate用法总结
  3. vbs 脚本 获取机器名/IP/MAC
  4. 【CSS】318- CSS实现宽高等比自适应容器
  5. [Cake] 3. dotnet 本地工具 cake & dotnet format
  6. Vue单页面应用打包app处理返回按钮
  7. 201871010119-帖佼佼《面向对象程序设计(java)》第四周学习总结
  8. 使用 API 网关构建微服务-2
  9. ngxtop(nginx实时监控工具)
  10. linux中关于权限的一些事